面向?qū)ο蠓治龊驮O(shè)計(jì)講座面向?qū)ο蠓椒▽W(xué)_第1頁(yè)
面向?qū)ο蠓治龊驮O(shè)計(jì)講座面向?qū)ο蠓椒▽W(xué)_第2頁(yè)
面向?qū)ο蠓治龊驮O(shè)計(jì)講座面向?qū)ο蠓椒▽W(xué)_第3頁(yè)
面向?qū)ο蠓治龊驮O(shè)計(jì)講座面向?qū)ο蠓椒▽W(xué)_第4頁(yè)
面向?qū)ο蠓治龊驮O(shè)計(jì)講座面向?qū)ο蠓椒▽W(xué)_第5頁(yè)
已閱讀5頁(yè),還剩69頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

面向?qū)ο蠓治龊驮O(shè)計(jì)講座面向?qū)ο蠓椒▽W(xué)內(nèi)容歷史回眸開(kāi)發(fā)模式傳統(tǒng)方法學(xué)面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠡靖拍顚?duì)象組成面向?qū)ο蠓治?設(shè)計(jì)/編程信息系統(tǒng)建模第2頁(yè),共74頁(yè),2024年2月25日,星期天1.歷史回眸現(xiàn)在的計(jì)算機(jī)的數(shù)學(xué)理論基礎(chǔ)是由計(jì)算機(jī)的開(kāi)山鼻祖,大名鼎鼎的圖靈于1937年提出的圖靈機(jī)模型。隨后不到十年,電子計(jì)算機(jī)就誕生了(1945)。(埃尼亞克)它當(dāng)時(shí)的主要任務(wù)之一就是用于導(dǎo)彈彈道軌跡的計(jì)算。當(dāng)時(shí)的軟件開(kāi)發(fā)(如果可以稱(chēng)之為軟件開(kāi)發(fā)的話)與現(xiàn)在的大不相同。為了算一道題,要有人事先把完成加減乘除等各類(lèi)運(yùn)算的部件像搭積木那樣搭起來(lái),如果換一道題,則要把這些部件分解開(kāi)來(lái),根據(jù)新的要求重新搭建,效率極低(與現(xiàn)在比)。第3頁(yè),共74頁(yè),2024年2月25日,星期天現(xiàn)代電子計(jì)算機(jī)的體系結(jié)構(gòu)及實(shí)際計(jì)算模型來(lái)自馮.諾依曼的思想。1946年他和他的同事們發(fā)現(xiàn)了埃尼亞克的缺陷,發(fā)表了一份報(bào)告,提出了程序放入內(nèi)存,順序執(zhí)行的思想,這樣,當(dāng)算一道新題時(shí)就只需采取改變計(jì)算機(jī)中的程序的“軟”的方法。英國(guó)的科學(xué)家維爾克斯實(shí)現(xiàn)了馮.諾依曼的思想,領(lǐng)導(dǎo)研制了“艾克薩克”。因此,現(xiàn)在的計(jì)算機(jī)通常被稱(chēng)為馮.諾依曼計(jì)算機(jī)。

第4頁(yè),共74頁(yè),2024年2月25日,星期天早期程序員們使用機(jī)器語(yǔ)言來(lái)進(jìn)行編程運(yùn)算;隨著編譯技術(shù)的出現(xiàn),人們?cè)O(shè)計(jì)了許多更高級(jí)別的語(yǔ)言;這些語(yǔ)言擺脫了機(jī)器語(yǔ)言繁瑣的細(xì)節(jié),更接近于人的自然語(yǔ)言,迅速流行開(kāi)來(lái)。據(jù)統(tǒng)計(jì),全世界的高級(jí)語(yǔ)言起碼有幾千種,但從可計(jì)算性的角度看,它們的計(jì)算能力都等價(jià)于圖靈機(jī)。已經(jīng)證明,一個(gè)計(jì)算機(jī)語(yǔ)言,只要除了賦值語(yǔ)句之外,還包括順序語(yǔ)句,條件語(yǔ)句和循環(huán)語(yǔ)句,它的計(jì)算能力即相當(dāng)于圖靈機(jī)。這里當(dāng)然要排除其他技術(shù)因素的影響,如程序長(zhǎng)度,變量個(gè)數(shù),數(shù)據(jù)精度等。第5頁(yè),共74頁(yè),2024年2月25日,星期天由于圖靈機(jī)的想法是把問(wèn)題轉(zhuǎn)化為一步一步按規(guī)則執(zhí)行的機(jī)械求解過(guò)程,各種計(jì)算機(jī)語(yǔ)言也不過(guò)都是某種形式語(yǔ)言,因此軟件開(kāi)發(fā)的過(guò)程實(shí)質(zhì)上就是程序員們對(duì)客觀世界問(wèn)題域的形式化的過(guò)程。程序員們先建立問(wèn)題的模型(形式化),再用計(jì)算機(jī)語(yǔ)言加以合適的表達(dá),最后再輸入計(jì)算機(jī)里進(jìn)行計(jì)算。第6頁(yè),共74頁(yè),2024年2月25日,星期天最早的高級(jí)語(yǔ)言大約誕生于1945年,是德國(guó)人楚譯為他的Z-4計(jì)算機(jī)設(shè)計(jì)的PlanCalcul,比第一臺(tái)電子計(jì)算機(jī)還早幾個(gè)月;在電子計(jì)算機(jī)上實(shí)現(xiàn)的第一個(gè)高級(jí)語(yǔ)言是美國(guó)尤尼法克公司于1952年研制成功的ShortCode;而真正得到推廣使用,至今仍在流行的第一個(gè)高級(jí)語(yǔ)言是美國(guó)的計(jì)算機(jī)科學(xué)家巴科斯設(shè)計(jì),并于1956年首先在IBM公司的計(jì)算機(jī)上實(shí)現(xiàn)的FORTRAN語(yǔ)言。第7頁(yè),共74頁(yè),2024年2月25日,星期天早期的高級(jí)語(yǔ)言主要是應(yīng)用于科學(xué)和工程計(jì)算,其代表作有FORTRAN和ALGOL60。計(jì)算機(jī)進(jìn)入商業(yè)和行政管理領(lǐng)域以后,出現(xiàn)了COBOL和RPG等便于商界使用的語(yǔ)言。這類(lèi)語(yǔ)言和數(shù)據(jù)庫(kù)技術(shù),圖形界面技術(shù)(可視化編程),面向?qū)ο蟮乃枷爰癛AD(RapidApplicationDevelopment)的概念相結(jié)合,形成了一批更方便使用的所謂第四代語(yǔ)言(4GL),如Powerbuilder,Delphi,VB等。第8頁(yè),共74頁(yè),2024年2月25日,星期天前一類(lèi)應(yīng)用于科學(xué)和工程計(jì)算的大型語(yǔ)言相對(duì)來(lái)說(shuō)更為基礎(chǔ),因而也更為靈活,應(yīng)用范圍更為廣泛。在FORTRAN,BASIC(學(xué)習(xí)型)之后,自70年代以來(lái),模塊特征更明顯,簡(jiǎn)單易用,可靠性強(qiáng)的PASCAL異軍突起,在世界范圍內(nèi)廣泛流行。但進(jìn)入80年代以后,它的地位又逐漸為更實(shí)用的C語(yǔ)言替代。到現(xiàn)在,C語(yǔ)言的地位已相當(dāng)于一種“高級(jí)匯編語(yǔ)言”了。第9頁(yè),共74頁(yè),2024年2月25日,星期天80年代后期,面向?qū)ο蟮恼Z(yǔ)言開(kāi)始浮出水面,C++借助使用C語(yǔ)言的龐大程序員隊(duì)伍,一舉建立了面向?qū)ο笳Z(yǔ)言的老大地位。從而OO的思想正式統(tǒng)治了整個(gè)軟件開(kāi)發(fā)界。C++的流行甚至使得美國(guó)軍方從80年開(kāi)始大力扶植的Ada語(yǔ)言還未及推廣便胎死腹中了。第10頁(yè),共74頁(yè),2024年2月25日,星期天90年代以后,計(jì)算機(jī)世界更是發(fā)生了天翻地覆的變化,原先的單機(jī)平臺(tái)讓位于WEB,“網(wǎng)絡(luò)就是計(jì)算機(jī)”,新的語(yǔ)言不僅要是OO的,Visual的,更要是基于WEB的。Java語(yǔ)言借INTERNET的東風(fēng),橫空出世,一夜紅遍天下。上述這些變化,表面是不同的編程工具的流行,但其背后反映的卻是一種更為深刻的認(rèn)識(shí)論的改變,即你是用何種觀點(diǎn)來(lái)認(rèn)識(shí)這個(gè)世界的?第11頁(yè),共74頁(yè),2024年2月25日,星期天2.開(kāi)發(fā)模式(Paradigm)開(kāi)發(fā)模式又稱(chēng)為范型、范例、風(fēng)范或模式(Pattern)。開(kāi)發(fā)模式定義了特定問(wèn)題和應(yīng)用的開(kāi)發(fā)過(guò)程中將遵循的步驟;確定將用于表示問(wèn)題和解的那些成分的類(lèi)型;利用這些成分表示與問(wèn)題解決有關(guān)的抽象;直接得到問(wèn)題的結(jié)構(gòu)。第12頁(yè),共74頁(yè),2024年2月25日,星期天開(kāi)發(fā)模式的選擇影響到整個(gè)軟件開(kāi)發(fā)生存期。就是說(shuō),它支配選擇:設(shè)計(jì)方法編碼語(yǔ)言測(cè)試和檢驗(yàn)技術(shù)第13頁(yè),共74頁(yè),2024年2月25日,星期天3.傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué):瀑布模型,結(jié)構(gòu)化分析/設(shè)計(jì)/編碼瀑布模型的缺點(diǎn):僵化瀑布模型要求:生命周期各階段間遵守嚴(yán)格的順序,實(shí)際情況是:軟件開(kāi)發(fā)往往在反復(fù)實(shí)踐中完成瀑布模型要求:預(yù)先定義并“凍結(jié)”軟件需求,實(shí)際情況是:某些系統(tǒng)的需求的一個(gè)逐漸明確的過(guò)程,且預(yù)先定義的需求到軟件完成時(shí)可能已經(jīng)過(guò)時(shí)第14頁(yè),共74頁(yè),2024年2月25日,星期天SA-SD-SP技術(shù)的缺點(diǎn):本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的過(guò)程為中心,而用戶的需求變化主要是針對(duì)功能的。這就使基于過(guò)程的設(shè)計(jì)不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴(lài)于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴(kuò)充和修改數(shù)據(jù)與操作分開(kāi)處理,可能造成軟構(gòu)件對(duì)具體應(yīng)用環(huán)境的依賴(lài),可重用性(reusability)較差第15頁(yè),共74頁(yè),2024年2月25日,星期天4.面向?qū)ο蠓椒▽W(xué)的起源維特跟斯坦是本世紀(jì)乃至人類(lèi)哲學(xué)史上最偉大的哲學(xué)家之一。他生前只于1922年出版了一本著作——《邏輯哲學(xué)論》(TractatusLogico-Philosophicus)。在該書(shū)中,他闡述了一種世界觀,或者說(shuō)一種認(rèn)識(shí)世界的觀點(diǎn),這種觀點(diǎn),在六七十年后的今天,終于由一種哲學(xué)思想沉淀到技術(shù)的層面上來(lái),成為計(jì)算機(jī)業(yè)界的寵兒,這就是“OO”,Object-Oriented,面向?qū)ο蟆5?6頁(yè),共74頁(yè),2024年2月25日,星期天維特根斯坦在《邏輯哲學(xué)論》一書(shū)中提出了如下思想:世界可以分解為事實(shí)(Theworlddividesintofacts.)

事實(shí)是由原子事實(shí)(atomicfacts)組成的。一個(gè)原子事實(shí)是多個(gè)對(duì)象(objects)的組合。對(duì)象是簡(jiǎn)單的(基本的)TheObjectissimple。對(duì)象形成了世界的基礎(chǔ)。第17頁(yè),共74頁(yè),2024年2月25日,星期天杭州北京Post-officeMessageSendbymethod對(duì)象ObjectObject=數(shù)據(jù)AttributeAttributes:location;employee;

……+操作MethodMethods:send;sell;

……注意:Object內(nèi)部的attributes不允許外部用戶直接改動(dòng),只有當(dāng)它提供了相應(yīng)的服務(wù)method時(shí),用戶才能通過(guò)發(fā)送message來(lái)提請(qǐng)它執(zhí)行。我想把郵局搬到我家門(mén)口,多加幾個(gè)郵遞員,24小時(shí)都開(kāi)門(mén)……對(duì)不起,本郵局不提供此類(lèi)服務(wù)唉,那就先送束花吧——

Post_office.Send(request,payment)第18頁(yè),共74頁(yè),2024年2月25日,星期天特點(diǎn):盡可能模擬人類(lèi)習(xí)慣的思維方式,即問(wèn)題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體——對(duì)象。這時(shí)程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨(dú)立的對(duì)象的集合。第19頁(yè),共74頁(yè),2024年2月25日,星期天5.面向?qū)ο蠓椒▽W(xué)的要素第20頁(yè),共74頁(yè),2024年2月25日,星期天4.1對(duì)象:世界由對(duì)象構(gòu)成對(duì)象是面向?qū)ο箝_(kāi)發(fā)模式的基本成份。每個(gè)對(duì)象可用它本身的一組屬性和它可以執(zhí)行的一組操作來(lái)定義。屬性一般只能通過(guò)執(zhí)行對(duì)象的操作來(lái)改變。操作又稱(chēng)為方法或服務(wù),它描述了對(duì)象執(zhí)行的功能,若通過(guò)消息傳遞,還可以為其它對(duì)象使用。第21頁(yè),共74頁(yè),2024年2月25日,星期天4.2類(lèi):物以類(lèi)聚類(lèi)是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對(duì)象的集合。類(lèi)的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類(lèi)定義可以視為一個(gè)具有類(lèi)似特性與共同行為的對(duì)象的模板,可用來(lái)產(chǎn)生對(duì)象。第22頁(yè),共74頁(yè),2024年2月25日,星期天在一個(gè)類(lèi)中,每個(gè)對(duì)象都是類(lèi)的實(shí)例(Instance),它們都可使用類(lèi)中提供的函數(shù)。對(duì)象的狀態(tài)則包含在它的實(shí)例變量,即實(shí)例的屬性中。第23頁(yè),共74頁(yè),2024年2月25日,星期天例:classPost_office{private:loc_typelocation;emp_typeemployee;

……public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);

……};main(){Post_officeMy_PO;req_typeMy_request;money_typeMy_payment;

……My_PO.Send(My_request,My_payment);

……}第24頁(yè),共74頁(yè),2024年2月25日,星期天繼承(inheritance):類(lèi)可分層,下層子類(lèi)與上層父類(lèi)有相同特征,稱(chēng)為繼承繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類(lèi)的定義可以是既存類(lèi)所聲明的數(shù)據(jù)和新類(lèi)所增加的聲明的組合。新類(lèi)復(fù)用既存的定義,而不要求修改繼承類(lèi)。既存類(lèi)可當(dāng)做基類(lèi)來(lái)引用,則新類(lèi)相應(yīng)地可當(dāng)做派生類(lèi)來(lái)引用。4.3繼承:世界的相似性與多樣性第25頁(yè),共74頁(yè),2024年2月25日,星期天第26頁(yè),共74頁(yè),2024年2月25日,星期天使用繼承設(shè)計(jì)一個(gè)新類(lèi),可以視為描述一個(gè)新的對(duì)象集,它是既存類(lèi)所描述對(duì)象集的子集合。這個(gè)新的子集合可以認(rèn)為是既存類(lèi)的一個(gè)特殊化。Quadrilateral類(lèi)是Polygon類(lèi)的特殊化。Quadrilateral是限制為四條邊的多邊形。我們還可以進(jìn)一步地把類(lèi)Quadrilateral特殊化為Rectangle。第27頁(yè),共74頁(yè),2024年2月25日,星期天類(lèi)Quadrilateral的界面可以等同于類(lèi)Polygon的界面,而Rectangle類(lèi)的界面又與Quadrilateral類(lèi)的界面相同。新類(lèi)的界面還可以被看做是既存類(lèi)界面的一個(gè)擴(kuò)充界面。例如,從一個(gè)既存的車(chē)輛類(lèi)派生的四輪驅(qū)動(dòng)車(chē)類(lèi)可能不僅是車(chē)輛類(lèi)子集合定義的特殊化,而且還可能在新類(lèi)的界面中引入新的能力。第28頁(yè),共74頁(yè),2024年2月25日,星期天第29頁(yè),共74頁(yè),2024年2月25日,星期天在類(lèi)的繼承層次中,Quadrilateral的實(shí)際參數(shù)可以替換Polygon的形式參數(shù)。類(lèi)Quadrilateral的界面與類(lèi)Polygon的界面是相容的Quadrilateral的界面可響應(yīng)Polygon界面的所有消息。第30頁(yè),共74頁(yè),2024年2月25日,星期天4.4消息:合作之道消息(message):對(duì)象間只能通過(guò)發(fā)送消息進(jìn)行聯(lián)系,外界不能處理對(duì)象的內(nèi)部數(shù)據(jù),只能通過(guò)消息請(qǐng)求它進(jìn)行處理(如果它提供相應(yīng)消息的話)。第31頁(yè),共74頁(yè),2024年2月25日,星期天消息是一個(gè)對(duì)象與另一個(gè)對(duì)象的通信單元,是要求某個(gè)對(duì)象執(zhí)行類(lèi)中定義的某個(gè)操作的規(guī)格說(shuō)明。發(fā)送給一個(gè)對(duì)象的消息定義了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對(duì)象。一個(gè)對(duì)象接收的消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來(lái)。第32頁(yè),共74頁(yè),2024年2月25日,星期天OOM=Object+Class+Inheritance+Communicationwithmessages第33頁(yè),共74頁(yè),2024年2月25日,星期天傳統(tǒng)方法:面向過(guò)程設(shè)計(jì),以計(jì)算為核心,數(shù)據(jù)與操作分離,不易理解OOM:以object為核心,強(qiáng)調(diào)對(duì)現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法?!懊嫦?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問(wèn)題域的模型,開(kāi)發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。Class:由特殊到一般的歸納(induction)Inheritance:由一般到特殊的演繹(deduction)4.4傳統(tǒng)方法與OO的比較第34頁(yè),共74頁(yè),2024年2月25日,星期天傳統(tǒng)方法:結(jié)構(gòu)依賴(lài)于功能,不穩(wěn)定。OOM:以object模擬實(shí)體,需求變化不會(huì)引起結(jié)構(gòu)的整體變化,因?yàn)閷?shí)體相對(duì)穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。傳統(tǒng)方法:通過(guò)建立標(biāo)準(zhǔn)函數(shù)庫(kù)來(lái)重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少必要的“柔性”,難以適應(yīng)不同場(chǎng)合的不同需要OOM:一個(gè)class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類(lèi)的代碼,并且可以修改、擴(kuò)充而不影響其父類(lèi)的使用。。第35頁(yè),共74頁(yè),2024年2月25日,星期天傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問(wèn)題。OOM:從以下幾方面改善了可維護(hù)性穩(wěn)定性好:軟件功能需求的變化不牽動(dòng)全局,只需局部修改;Class獨(dú)立性強(qiáng):只要修改不涉及class的對(duì)外接口,則內(nèi)部修改完全不影響外部調(diào)用;Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴(kuò)充;容易理解;容易測(cè)試、調(diào)試。有這一條就什么都好辦了!這一點(diǎn)還可商榷第36頁(yè),共74頁(yè),2024年2月25日,星期天OOM并不是減少了開(kāi)發(fā)時(shí)間,而是通過(guò)提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改的容易程度等,從長(zhǎng)遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量。OOM與Prototyping結(jié)合使用效果好。第37頁(yè),共74頁(yè),2024年2月25日,星期天6.對(duì)象概念第38頁(yè),共74頁(yè),2024年2月25日,星期天f1f2f3……fi……fnfi(X)Sgi(X,S)S’輸出輸出1、Object:=ID+Method+Attribute+Message第39頁(yè),共74頁(yè),2024年2月25日,星期天特點(diǎn):以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無(wú)關(guān)的操作;Object主動(dòng)處理而不被動(dòng)地等待被處理,外部只能通過(guò)message請(qǐng)求操作;具有黑盒性:外部操作時(shí),無(wú)須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;具有并行性:不同object各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過(guò)傳遞message完成通信;模塊獨(dú)立性好:內(nèi)聚強(qiáng)(①)、耦合松(③④)第40頁(yè),共74頁(yè),2024年2月25日,星期天2、Class:具有相同數(shù)據(jù)和相同操作的一組對(duì)象;3、Instance:某個(gè)class描述的具體對(duì)象;4、Message:=object_ID.method_ID(parameter(s));5、Method:object能做的操作,亦稱(chēng)為service、responsibility,在class中須定義相應(yīng)的代碼;6、Attribute:object的固有數(shù)據(jù);7、Inheritance:子類(lèi)自動(dòng)共享父類(lèi)的attributes和methods,而不必重復(fù)定義。第41頁(yè),共74頁(yè),2024年2月25日,星期天Class中國(guó)人中國(guó)人Attributes中國(guó)人Methods張山(instance)Class中國(guó)人

張山的AttributesClass上海人

(子類(lèi))上海人Attributes

上海人MethodsClass中國(guó)人李士(instance)

中國(guó)人李士的Attributes上海人李士的AttributesClass上海人例:第42頁(yè),共74頁(yè),2024年2月25日,星期天特點(diǎn):若上海人的methods中有與中國(guó)人的同名,則李士執(zhí)行該method時(shí)以上海人為準(zhǔn),不執(zhí)行中國(guó)人中定義的同名method。傳遞性(transitivity):AB、BCAC,一個(gè)class繼承了上層全部classes的一切性質(zhì)。一個(gè)子類(lèi)只有一個(gè)父類(lèi)稱(chēng)為單繼承(singleinheritance),一個(gè)子類(lèi)可有多個(gè)父類(lèi)稱(chēng)為多重繼承(multipleinheritance).

“低層性質(zhì)override高層性質(zhì)”“縣官不如現(xiàn)管”第43頁(yè),共74頁(yè),2024年2月25日,星期天注意:multipleinheritance在定義中應(yīng)避免二義性(ambiguity),即二個(gè)父類(lèi)中定義重名,但各具不同性質(zhì)。例:FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:第44頁(yè),共74頁(yè),2024年2月25日,星期天8Polymorphism:不同層次的classes可共享一個(gè)method名,但按各自的方式來(lái)實(shí)現(xiàn)這種method。C++中定義了虛函數(shù)(virtualfunction)來(lái)實(shí)現(xiàn)這一功能。即一個(gè)method有多個(gè)版本,運(yùn)行時(shí)才決定執(zhí)行哪一個(gè)。故亦稱(chēng)為動(dòng)態(tài)聯(lián)編(dynamicbinding)或滯后聯(lián)編(latebinding)修改與擴(kuò)充可以很容易地通過(guò)派生子類(lèi)來(lái)完成Whichformdoyouneed,master?Aladdin’sGenie第45頁(yè),共74頁(yè),2024年2月25日,星期天doubleavg(constdoublea[],intsize);doubleavg(constinta[],intsize);doubleavg(constdoublea[],intsize);{doublesum=0.0;for(inti=0;i<size;++i)sum+=a[i];return(sum/size);}doubleavg(constinta[],intsize);{intsum=0;for(inti=0;i<size;++i)sum+=a[i];return((double)sum/size);}main(){intk[3]={1,2,3};doublex[3]={1.1,2.2,3.3};cout<<avg(k,3)<<“intaverage\n”;cout<<avg(x,3)<<“doubleaverage\n”;}9、Overloading⑴Function(orparameter)overloading:不同函數(shù)共用一個(gè)名字,而調(diào)用參數(shù)的特征不同。例:第46頁(yè),共74頁(yè),2024年2月25日,星期天⑵Operatoroverloading:同一運(yùn)算符(operator)作用于不同類(lèi)型的操作數(shù)(operand)上面。在編譯(compile)階段就決定了使用類(lèi)型及執(zhí)行代碼,故亦稱(chēng)為靜態(tài)聯(lián)編(staticbinding)或先前聯(lián)編(earlybinding)。

第47頁(yè),共74頁(yè),2024年2月25日,星期天7.面向?qū)ο蟮姆治?設(shè)計(jì)/編程第48頁(yè),共74頁(yè),2024年2月25日,星期天7.1概述面向?qū)ο蟮姆治觯∣OA)分析問(wèn)題論域,找出問(wèn)題解決方案,發(fā)現(xiàn)對(duì)象,分析對(duì)象的內(nèi)部構(gòu)成和外部關(guān)系,建立軟件系統(tǒng)的對(duì)象模型面向?qū)ο蟮脑O(shè)計(jì)(OOD)根據(jù)已確定的系統(tǒng)對(duì)象模型,運(yùn)用面向?qū)ο蠹夹g(shù),進(jìn)行系統(tǒng)軟件設(shè)計(jì)面向?qū)ο蟮木幊蹋∣OP)第49頁(yè),共74頁(yè),2024年2月25日,星期天7.2面向?qū)ο蟮姆治鰡?wèn)題論域分析業(yè)務(wù)范圍,業(yè)務(wù)規(guī)則,業(yè)務(wù)處理過(guò)程,確定系統(tǒng)的責(zé)任,范圍和邊界,確定系統(tǒng)的需求發(fā)現(xiàn)和定義對(duì)象和類(lèi)識(shí)別對(duì)象和類(lèi),確定它們的內(nèi)部特征:屬性和操作,這是一個(gè)抽象過(guò)程識(shí)別對(duì)象的外部聯(lián)系對(duì)象與對(duì)象,類(lèi)與類(lèi)之間的各種外部聯(lián)系,包括一般與特殊,整體與部分,實(shí)例連接(關(guān)聯(lián)),消息連接等建立系統(tǒng)的靜態(tài)結(jié)構(gòu)模型對(duì)象類(lèi)圖和對(duì)象圖,系統(tǒng)與子系統(tǒng)結(jié)構(gòu)圖等,繪制相應(yīng)的圖建立系統(tǒng)的動(dòng)態(tài)行為模型對(duì)象之間的交互關(guān)系等第50頁(yè),共74頁(yè),2024年2月25日,星期天7.3面向?qū)ο蟮脑O(shè)計(jì)設(shè)計(jì)對(duì)象和類(lèi)具體設(shè)計(jì)對(duì)象和類(lèi)的屬性,操作,設(shè)計(jì)對(duì)象與類(lèi)的各種外部聯(lián)系的實(shí)現(xiàn)結(jié)構(gòu),設(shè)計(jì)消息與事件的內(nèi)容、格式等設(shè)計(jì)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)組件與子系統(tǒng),以及它們的相互的靜態(tài)和動(dòng)態(tài)關(guān)系設(shè)計(jì)問(wèn)題論域子系統(tǒng)負(fù)責(zé)領(lǐng)域的業(yè)務(wù)服務(wù)設(shè)計(jì)人機(jī)交互系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)進(jìn)程管理設(shè)計(jì)優(yōu)化,提高系統(tǒng)性能第51頁(yè),共74頁(yè),2024年2月25日,星期天詳細(xì)的面向?qū)ο笤O(shè)計(jì)與語(yǔ)言有關(guān)。一般地,所有的語(yǔ)言都可以完成面向?qū)ο髮?shí)現(xiàn),但某些語(yǔ)言能夠提供更豐富的語(yǔ)法,能夠顯式地描繪在面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)過(guò)程中所使用的表示法。7.4面向?qū)ο蟮木幊痰?2頁(yè),共74頁(yè),2024年2月25日,星期天過(guò)程型語(yǔ)言只直接支持過(guò)程抽象可以增加數(shù)據(jù)抽象及封裝(如利用結(jié)構(gòu)化設(shè)計(jì)的信息隱蔽模塊)無(wú)法明確地表示繼承性。也無(wú)法明確支持整體與部分、類(lèi)與成員、對(duì)象與屬性等關(guān)系。具有面向?qū)ο筇匦缘倪^(guò)程型語(yǔ)言可以成為一種實(shí)用的且可行的語(yǔ)言。第53頁(yè),共74頁(yè),2024年2月25日,星期天基于對(duì)象的語(yǔ)言,也叫做面向軟件包的語(yǔ)言,如Ada等,能夠直接支持過(guò)程抽象、數(shù)據(jù)抽象、封裝和對(duì)象與屬性關(guān)系它無(wú)法表示繼承性,也無(wú)法表示類(lèi)與成員、整體與部分的關(guān)系?;趯?duì)象語(yǔ)言的面向?qū)ο笤O(shè)計(jì)代表一種可行的開(kāi)發(fā)方法。第54頁(yè),共74頁(yè),2024年2月25日,星期天面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,包括C++、Smalltalk、Objective-C、Actor、Eiffel等,都直接支持過(guò)程抽象、數(shù)據(jù)抽象、封裝、繼承、以及對(duì)象與屬性、類(lèi)與成員關(guān)系。它們不明確地支持整體與部分關(guān)系,但可以方便地表示組裝對(duì)象。第55頁(yè),共74頁(yè),2024年2月25日,星期天8.信息系統(tǒng)建模第56頁(yè),共74頁(yè),2024年2月25日,星期天8.1為什么要建模今天的計(jì)算機(jī)軟件系統(tǒng)

是產(chǎn)品,而非“計(jì)算機(jī)程序”。

軟件系統(tǒng)作為產(chǎn)品的特征開(kāi)發(fā)者和使用者是脫離的。軟件產(chǎn)品為用戶提供功能軟件產(chǎn)品具有質(zhì)量的概念軟件產(chǎn)品,應(yīng)具備完備的用戶手冊(cè)技術(shù)文檔

軟件產(chǎn)品的生產(chǎn)過(guò)程具有工業(yè)化生產(chǎn)的特點(diǎn)開(kāi)發(fā)團(tuán)隊(duì)協(xié)同工作軟件產(chǎn)品需要使用工具技術(shù)是可復(fù)用質(zhì)量必須穩(wěn)定的不應(yīng)在不同版本的軟件之間產(chǎn)生質(zhì)量不穩(wěn)定的現(xiàn)象第57頁(yè),共74頁(yè),2024年2月25日,星期天但是,和其它傳統(tǒng)的、成熟的工業(yè)生產(chǎn)行業(yè)相比,軟件生產(chǎn)實(shí)際上仍處于幼稚階段舉一個(gè)成熟的工業(yè)化生產(chǎn)的例子:電子產(chǎn)品制造首先,確定產(chǎn)品性能指標(biāo)如:收音機(jī)波段揚(yáng)聲器頻率范圍等等……

第58頁(yè),共74頁(yè),2024年2月25日,星期天然后設(shè)計(jì)電原理圖構(gòu)成:集成電路符號(hào)晶體管符號(hào)電阻電容符號(hào)標(biāo)注符號(hào)描述電氣連接關(guān)系可以了解到各關(guān)鍵信號(hào)的電氣指標(biāo):信號(hào)的頻率,電平電流,等等。

第59頁(yè),共74頁(yè),2024年2月25日,星期天電原理圖是電子產(chǎn)品生產(chǎn)制造的基礎(chǔ)。電子產(chǎn)品定型并投入生產(chǎn)后設(shè)計(jì)資料被作為技術(shù)資料存檔產(chǎn)品需要更新?lián)Q代技術(shù)復(fù)用軟件生產(chǎn)行業(yè),情形有所不同…首先,寫(xiě)系統(tǒng)分析報(bào)告由文字和示意性的框圖構(gòu)成然后,提出設(shè)計(jì)報(bào)告簡(jiǎn)單的文本和非標(biāo)準(zhǔn)圖形組成第60頁(yè),共74頁(yè),2024年2月25日,星期天報(bào)告評(píng)審?fù)ㄟ^(guò)后編碼、調(diào)試、測(cè)試、發(fā)行在大多數(shù)情況下,這時(shí)的工作已經(jīng)和報(bào)告的內(nèi)容脫鉤這是由于開(kāi)發(fā)和項(xiàng)目計(jì)劃方面的壓力軟件產(chǎn)品發(fā)行,開(kāi)發(fā)項(xiàng)目結(jié)束后,這些報(bào)告已不具備參考價(jià)值因?yàn)榇藭r(shí)軟件設(shè)計(jì)報(bào)告已經(jīng)和軟件的實(shí)際實(shí)現(xiàn)脫節(jié),無(wú)法反映軟件產(chǎn)品的實(shí)際原理和結(jié)構(gòu)。軟件產(chǎn)品需要更新?lián)Q代時(shí)軟件新版本的開(kāi)發(fā)隊(duì)伍所面對(duì)的只是老版本的軟件產(chǎn)品本身加上相關(guān)的源代碼。除此之外,沒(méi)有任何其它的資源可以幫助他們分析和理解原產(chǎn)品的設(shè)計(jì)原理、結(jié)構(gòu)和實(shí)現(xiàn)思路。第61頁(yè),共74頁(yè),2024年2月25日,星期天這相當(dāng)于制造收音機(jī)時(shí)不繪制畫(huà)電原理圖就直接用集成電路、晶體管、電阻、電容制造收音機(jī)帶來(lái)許多嚴(yán)重的問(wèn)題對(duì)產(chǎn)品進(jìn)行維修/維護(hù)新產(chǎn)品開(kāi)發(fā)如何使開(kāi)發(fā)周期最短、費(fèi)用最節(jié)省對(duì)軟件行業(yè)是同樣的,它使得軟件的技術(shù)復(fù)用難以進(jìn)行開(kāi)發(fā)隊(duì)伍無(wú)法得到明確有效的分工軟件的質(zhì)量難以保證降低軟件產(chǎn)品開(kāi)發(fā)效率第62頁(yè),共74頁(yè),2024年2月25日,星期天回顧成熟的工業(yè)行業(yè)的發(fā)展歷史,可以看出標(biāo)準(zhǔn)而規(guī)范的設(shè)計(jì)描述手段的引入,對(duì)產(chǎn)業(yè)的成熟起著重要的作用標(biāo)準(zhǔn)而規(guī)范的設(shè)計(jì)描述手段,作為一種標(biāo)準(zhǔn)的交流媒介,可以:促進(jìn)開(kāi)發(fā)隊(duì)伍的分工合作提高(軟件)產(chǎn)品的開(kāi)發(fā)效率和質(zhì)量從本質(zhì)上講,標(biāo)準(zhǔn)而規(guī)范的設(shè)計(jì)描述手段,就是建模第63頁(yè),共74頁(yè),2024年2月25日,星期天在產(chǎn)品的實(shí)際制造之前,先用模型來(lái)描述產(chǎn)品的特性和結(jié)構(gòu),使得參與產(chǎn)品設(shè)計(jì)和制造的人員能夠了解目標(biāo)產(chǎn)品的:設(shè)計(jì)原理內(nèi)部結(jié)構(gòu)制造工藝和流程從中找出產(chǎn)品設(shè)計(jì)和生產(chǎn)過(guò)程中的困難和風(fēng)險(xiǎn)所在第64頁(yè),共74頁(yè),2024年2月25日,星期天為什么要進(jìn)行建模,是由于:對(duì)于一個(gè)復(fù)雜的軟件系統(tǒng),人們無(wú)法對(duì)其整體進(jìn)行詳細(xì)而全面的把握。所以,一個(gè)復(fù)雜的軟件系統(tǒng)必須由多個(gè)開(kāi)發(fā)人員共同完成。對(duì)于開(kāi)發(fā)隊(duì)伍里的每個(gè)成員而言,他(她)不可能對(duì)整個(gè)軟件系統(tǒng)有全面而詳細(xì)的了解。而對(duì)于一個(gè)軟件產(chǎn)品而言,如果對(duì)整個(gè)系統(tǒng)的功能、原理和結(jié)構(gòu)沒(méi)有一個(gè)全面而詳細(xì)的記載的話,將會(huì)對(duì)此軟件產(chǎn)品的開(kāi)發(fā)、維護(hù)、升級(jí)產(chǎn)生不利的結(jié)果。第65頁(yè),共74頁(yè),2024年2月25日,星期天通過(guò)建模把一個(gè)復(fù)雜的系統(tǒng),按問(wèn)題的不同方面,以一種約定好的,為大家共同接受的描述方式,分別進(jìn)行全面而詳盡的描述;這樣,人們?cè)谠噲D理解一個(gè)系統(tǒng)時(shí),可根據(jù)他所關(guān)心的某一方面的問(wèn)題,查閱對(duì)應(yīng)的系統(tǒng)模型,從而得到對(duì)此問(wèn)題的理解。第66頁(yè),共74頁(yè),2024年2月25日,星期天8.2信息系統(tǒng)建模的原則準(zhǔn)確的原則:模型必須準(zhǔn)確地反映軟件系統(tǒng)的真實(shí)情況。模型必須準(zhǔn)確,意味著在軟件開(kāi)發(fā)的整個(gè)周期內(nèi)模型必須和產(chǎn)品始終保持一致。

分層的原則:在建模的過(guò)程中,必須有不同的模型,以不同的抽象程度,反映系統(tǒng)的不同側(cè)面。在軟件構(gòu)筑的不同階段,不同的開(kāi)發(fā)相關(guān)人員(stockholder),如:投資者、管理者、設(shè)計(jì)者、程序員、測(cè)試者,使用者,看待軟件的側(cè)重面有所不同。因此,軟件系統(tǒng)的建模需要不同的模型以反映系統(tǒng)的不同側(cè)面。如:一類(lèi)模型描繪系統(tǒng)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論