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

下載本文檔

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

文檔簡介

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

事實(shí)是由原子事實(shí)(atomicfacts)組成的。一個(gè)原子事實(shí)是多個(gè)對象(objects)的組合(zǔhé)。對象是簡單的(基本的)TheObjectissimple。對象形成了世界的基礎(chǔ)。第十七頁,共72頁。杭州北京Post-officeMessageSendbymethod對象(duìxiàng)ObjectObject=數(shù)據(jù)(shùjù)AttributeAttributes:location;employee;……+操作(cāozuò)MethodMethods:send;sell;……注意:Object內(nèi)部的attributes不允許外部用戶直接改動(dòng),只有當(dāng)它提供了相應(yīng)的服務(wù)method時(shí),用戶才能通過發(fā)送message來提請它執(zhí)行。我想把郵局搬到我家門口,多加幾個(gè)郵遞員,24小時(shí)都開門……對不起,本郵局不提供此類服務(wù)唉,那就先送束花吧——

Post_office.Send(request,payment)第十八頁,共72頁。特點(diǎn):盡可能模擬人類習(xí)慣的思維方式,即問題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體——對象。這時(shí)程序不再是一系列工作在數(shù)據(jù)上的函數(shù)(hánshù)集合,而是相互協(xié)作又彼此獨(dú)立的對象的集合。第十九頁,共72頁。5.面向?qū)ο蠓椒▽W(xué)的要素(yàosù)第二十頁,共72頁。4.1對象:世界(shìjiè)由對象構(gòu)成對象是面向?qū)ο箝_發(fā)(kāifā)模式的基本成份。每個(gè)對象可用它本身的一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務(wù),它描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其它對象使用。第二十一頁,共72頁。4.2類:物以類聚(wùyǐlèijù)類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作(cāozuò)的對象的集合。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作(cāozuò)。類定義可以視為一個(gè)具有類似特性與共同行為的對象的模板,可用來產(chǎn)生對象。第二十二頁,共72頁。在一個(gè)類中,每個(gè)對象都是類的實(shí)例(shílì)(Instance),它們都可使用類中提供的函數(shù)。對象的狀態(tài)則包含在它的實(shí)例(shílì)變量,即實(shí)例(shílì)的屬性中。第二十三頁,共72頁。例: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);……}第二十四頁,共72頁。把一個(gè)復(fù)雜的系統(tǒng),按問題(wèntí)的不同方面,以一種約定好的,為大家共同接受的描述方式,分別進(jìn)行全面而詳盡的描述;Quadrilateral類是Polygon類的特殊化。注意:multipleinheritance在定義中應(yīng)避免二義性(ambiguity),即二個(gè)父類中定義重名(zhònɡm(xù)ínɡ),但各具不同性質(zhì)。上海人李士的Attributes文本和非標(biāo)準(zhǔn)圖形(túxíng)組成制造(zhìzào)工藝和流程第四十六頁,共72頁。最后,通過建立組件和分布模型,建立系統(tǒng)的分布式組件,實(shí)現(xiàn)組件的可重用,并將這些組件分布到不同的物理和網(wǎng)絡(luò)環(huán)境下運(yùn)行。5信息系統(tǒng)建模方法(fāngfǎ)2、Class:具有相同數(shù)據(jù)和相同操作的一組對象;從而OO的思想正式統(tǒng)治了整個(gè)軟件開發(fā)界。第六十八頁,共72頁。Post_office.Class中國人上海人Methods瀑布模型要求:生命周期各階段間遵守嚴(yán)格的順序(shùnxù),實(shí)際情況是:軟件開發(fā)往往在反復(fù)實(shí)踐中完成繼承(inheritance):類可分層,下層子類與上層父類有相同特征,稱為繼承繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以是既存類所聲明的數(shù)據(jù)和新類所增加(zēngjiā)的聲明的組合。新類復(fù)用既存的定義,而不要求修改繼承類。既存類可當(dāng)做基類來引用,則新類相應(yīng)地可當(dāng)做派生類來引用。4.3繼承(jìchéng):世界的相似性與多樣性第二十五頁,共72頁。第二十六頁,共72頁。使用繼承設(shè)計(jì)一個(gè)新類,可以視為描述一個(gè)新的對象集,它是既存類所描述對象集的子集合。這個(gè)新的子集合可以認(rèn)為是既存類的一個(gè)特殊化。Quadrilateral類是Polygon類的特殊化。Quadrilateral是限制(xiànzhì)為四條邊的多邊形。我們還可以進(jìn)一步地把類Quadrilateral特殊化為Rectangle。第二十七頁,共72頁。類Quadrilateral的界面可以等同于類Polygon的界面,而Rectangle類的界面又與Quadrilateral類的界面相同。新類的界面還可以被看做是既存類界面的一個(gè)擴(kuò)充界面。例如(lìrú),從一個(gè)既存的車輛類派生的四輪驅(qū)動(dòng)車類可能不僅是車輛類子集合定義的特殊化,而且還可能在新類的界面中引入新的能力。第二十八頁,共72頁。第二十九頁,共72頁。在類的繼承層次中,Quadrilateral的實(shí)際參數(shù)可以替換(tìhuàn)Polygon的形式參數(shù)。類Quadrilateral的界面與類Polygon的界面是相容的Quadrilateral的界面可響應(yīng)Polygon界面的所有消息。第三十頁,共72頁。4.4消息(xiāoxi):合作之道消息(message):對象間只能通過發(fā)送消息進(jìn)行聯(lián)系(liánxì),外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息請求它進(jìn)行處理(如果它提供相應(yīng)消息的話)。第三十一頁,共72頁。消息是一個(gè)對象與另一個(gè)對象的通信單元,是要求某個(gè)對象執(zhí)行類中定義(dìngyì)的某個(gè)操作的規(guī)格說明。發(fā)送給一個(gè)對象的消息定義(dìngyì)了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對象。一個(gè)對象接收的消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。第三十二頁,共72頁。OOM=Object+Class+Inheritance+Communicationwithmessages第三十三頁,共72頁。傳統(tǒng)方法:面向過程設(shè)計(jì),以計(jì)算為核心,數(shù)據(jù)與操作(cāozuò)分離,不易理解OOM:以object為核心,強(qiáng)調(diào)對現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法?!懊嫦?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。Class:由特殊到一般的歸納(induction)Inheritance:由一般到特殊的演繹(deduction)4.4傳統(tǒng)方法(fāngfǎ)與OO的比較第三十四頁,共72頁。傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。OOM:以object模擬實(shí)體,需求變化不會(huì)引起結(jié)構(gòu)的整體變化,因?yàn)閷?shí)體相對穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。傳統(tǒng)方法:通過建立標(biāo)準(zhǔn)函數(shù)庫來重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少必要的“柔性”,難以適應(yīng)不同(bùtónɡ)場合的不同(bùtónɡ)需要OOM:一個(gè)class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類的代碼,并且可以修改、擴(kuò)充而不影響其父類的使用。。第三十五頁,共72頁。傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問題。OOM:從以下幾方面改善了可維護(hù)性穩(wěn)定性好:軟件功能需求的變化不牽動(dòng)全局,只需局部修改;Class獨(dú)立性強(qiáng):只要修改不涉及class的對外接口,則內(nèi)部(nèibù)修改完全不影響外部調(diào)用;Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴(kuò)充;容易理解;容易測試、調(diào)試。有這一條(yītiáo)就什么都好辦了!這一點(diǎn)(yīdiǎn)還可商榷第三十六頁,共72頁。OOM并不是減少了開發(fā)時(shí)間,而是通過提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改(xiūgǎi)的容易程度等,從長遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量。OOM與Prototyping結(jié)合使用效果好。第三十七頁,共72頁。6.對象(duìxiàng)概念第三十八頁,共72頁。f1f2f3……fi……fnfi(X)Sgi(X,S)S’輸出(shūchū)輸出(shūchū)1、Object:=ID+Method+Attribute+Message第三十九頁,共72頁。特點(diǎn):以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;Object主動(dòng)處理而不被動(dòng)地等待被處理,外部只能通過message請求操作;具有(jùyǒu)黑盒性:外部操作時(shí),無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;具有(jùyǒu)并行性:不同object各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信;模塊獨(dú)立性好:內(nèi)聚強(qiáng)(①)、耦合松(③④)第四十頁,共72頁。2、Class:具有相同數(shù)據(jù)和相同操作的一組對象;3、Instance:某個(gè)class描述的具體對象;4、Message:=object_ID.method_ID(parameter(s));5、Method:object能做的操作,亦稱為service、responsibility,在class中須定義(dìngyì)相應(yīng)的代碼;6、Attribute:object的固有數(shù)據(jù);7、Inheritance:子類自動(dòng)共享父類的attributes和methods,而不必重復(fù)定義(dìngyì)。第四十一頁,共72頁。Class中國人中國人Attributes中國人Methods張山(instance)Class中國人

張山的AttributesClass上海人

(子類)上海人Attributes

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

中國人李士的Attributes上海人李士的AttributesClass上海人例:第四十二頁,共72頁。特點(diǎn):若上海人的methods中有與中國人的同名,則李士執(zhí)行該method時(shí)以上海人為準(zhǔn),不執(zhí)行中國人中定義的同名method。傳遞性(transitivity):AB、BCAC,一個(gè)class繼承了上層全部(quánbù)classes的一切性質(zhì)。一個(gè)子類只有一個(gè)父類稱為單繼承(singleinheritance),一個(gè)子類可有多個(gè)父類稱為多重繼承(multipleinheritance).“低層性質(zhì)(xìngzhì)override高層性質(zhì)(xìngzhì)”“縣官不如現(xiàn)管”第四十三頁,共72頁。注意:multipleinheritance在定義中應(yīng)避免二義性(ambiguity),即二個(gè)父類中定義重名(zhònɡm(xù)ínɡ),但各具不同性質(zhì)。例:FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:第四十四頁,共72頁。8Polymorphism:不同層次的classes可共享一個(gè)method名,但按各自的方式來實(shí)現(xiàn)這種method。C++中定義了虛函數(shù)(virtualfunction)來實(shí)現(xiàn)這一功能。即一個(gè)method有多個(gè)版本,運(yùn)行時(shí)才決定執(zhí)行哪一個(gè)。故亦稱為動(dòng)態(tài)聯(lián)編(dynamicbinding)或滯后聯(lián)編(latebinding)修改與擴(kuò)充可以很容易(róngyì)地通過派生子類來完成Whichformdoyouneed,master?Aladdin’sGenie第四十五頁,共72頁。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è)(yīɡè)名字,而調(diào)用參數(shù)的特征不同。例:第四十六頁,共72頁。⑵Operatoroverloading:同一運(yùn)算符(operator)作用(zuòyòng)于不同類型的操作數(shù)(operand)上面。在編譯(compile)階段就決定了使用類型及執(zhí)行代碼,故亦稱為靜態(tài)聯(lián)編(staticbinding)或先前聯(lián)編(earlybinding)。

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

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

軟件系統(tǒng)作為產(chǎn)品的特征開發(fā)者和使用者是脫離的。軟件產(chǎn)品為用戶提供(tígōng)功能軟件產(chǎn)品具有質(zhì)量的概念軟件產(chǎn)品,應(yīng)具備完備的用戶手冊技術(shù)文檔軟件產(chǎn)品的生產(chǎn)過程具有工業(yè)化生產(chǎn)的特點(diǎn)開發(fā)團(tuán)隊(duì)協(xié)同工作軟件產(chǎn)品需要使用工具技術(shù)是可復(fù)用質(zhì)量必須穩(wěn)定的不應(yīng)在不同版本的軟件之間產(chǎn)生質(zhì)量不穩(wěn)定的現(xiàn)象第五十七頁,共72頁。但是,和其它傳統(tǒng)的、成熟的工業(yè)生產(chǎn)行業(yè)相比,軟件生產(chǎn)實(shí)際上仍處于幼稚階段舉一個(gè)成熟的工業(yè)化生產(chǎn)的例子:電子產(chǎn)品制造首先,確定產(chǎn)品性能指標(biāo)如:收音機(jī)波段(bōduàn)揚(yáng)聲器頻率范圍等等……

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

溫馨提示

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

最新文檔

評論

0/150

提交評論