面向?qū)ο蟮拈_發(fā)方法課件_第1頁
面向?qū)ο蟮拈_發(fā)方法課件_第2頁
面向?qū)ο蟮拈_發(fā)方法課件_第3頁
面向?qū)ο蟮拈_發(fā)方法課件_第4頁
面向?qū)ο蟮拈_發(fā)方法課件_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟮拈_發(fā)方法第一節(jié)面向?qū)ο蟾攀龅诙?jié)面向?qū)ο蟮幕靖拍畹谌?jié)面向?qū)ο蠓治觯∣OA)第四節(jié)面向?qū)ο笤O(shè)計(jì)(OOD)第五節(jié)面向?qū)ο缶幊?021/8/171面向?qū)ο蟮拈_發(fā)方法第一節(jié)面向?qū)ο蟾攀?021/8/171第一節(jié)面向?qū)ο蟾攀鲆?、發(fā)展概述面向?qū)ο蟛⒎鞘且粋€(gè)新的概念,實(shí)際上它已有30多年的歷史。尋其根源可追溯到60年代的挪威,當(dāng)時(shí)挪威計(jì)算中心的KristenNygaard和Ole-JohanDahl開發(fā)了一種稱作Simula67的語言。Simula67首次引入了類、協(xié)同程序和子類的概念,這很象今天的面向?qū)ο笳Z言。70年代中期,XeroxPaloAlto研究中心的研究人員設(shè)計(jì)了Smalltalk語言,該語言的每個(gè)元素都被當(dāng)作一個(gè)對象來實(shí)現(xiàn),其程序設(shè)計(jì)環(huán)境及相關(guān)的各個(gè)方面都是面向?qū)ο蟮摹?021/8/172第一節(jié)面向?qū)ο蟾攀鲆?、發(fā)展概述2021/8/172第一節(jié)面向?qū)ο蟾攀龅?,面向?qū)ο蟮耐茝V很慢。例如:Samlltalk的成果直到1981年8月因Byte雜志的介紹才為外界所知,許多軟件開發(fā)人員了解Samlltalk時(shí),都把它看作是一個(gè)窗口系統(tǒng),而不是程序設(shè)計(jì)技術(shù)的一次革命。80年代,C成為很受歡迎的程序設(shè)計(jì)語言,它不僅可用在微機(jī)上,還可用在多種結(jié)構(gòu)的系統(tǒng)和環(huán)境中。80年代早期,AT&T貝爾實(shí)驗(yàn)室的BjarneStroustrup把C語言擴(kuò)展為支持面向?qū)ο蟪绦蛟O(shè)計(jì)的C++。在C++中,程序員可以在其熟悉的語言環(huán)境下學(xué)習(xí)掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),而不必去探究一種新的語言和環(huán)境。2021/8/173第一節(jié)面向?qū)ο蟾攀龅?,面向?qū)ο蟮耐茝V很慢。例如:Sam第一節(jié)面向?qū)ο蟾攀鲎?0年代以來,軟件與硬件之間的差距至少有兩代處理器之多,并且這種差距還在增大。當(dāng)軟件系統(tǒng)變得更加復(fù)雜時(shí),常規(guī)軟件工具、技術(shù)和概念已不足以應(yīng)付,從而使軟件開發(fā)者陷入了困境。但面向?qū)ο蟮姆椒軌蚩刂栖浖膹?fù)雜性,從而促進(jìn)了面向?qū)ο蟮陌l(fā)展,掀起了一股“面向?qū)ο蟆睙帷?021/8/174第一節(jié)面向?qū)ο蟾攀鲎?0年代以來,軟件與硬件之間的差距至第一節(jié)面向?qū)ο蟾攀龆?、研究領(lǐng)域目前國內(nèi)外關(guān)于面向?qū)ο蟮难芯款I(lǐng)域主要在以下幾個(gè)方面:1.理論:包括方法、面向?qū)ο笤O(shè)計(jì)的本質(zhì)以及語義模型的研究。2.語言:包括現(xiàn)有面向?qū)ο蟮某绦蛟O(shè)計(jì)語言的研究、設(shè)計(jì)新的面向?qū)ο蟮某绦蛘Z言,將面向?qū)ο蟮脑O(shè)計(jì)思想引入其它語言(如Ada,Prolog,Lisp,C,Pascal,F(xiàn)oxpro等)3.實(shí)現(xiàn):包括體系結(jié)構(gòu)的支撐、編譯與解釋、其它特殊技術(shù)等。4.環(huán)境:包括面向?qū)ο蟮能浖_發(fā)環(huán)境的設(shè)計(jì)與實(shí)現(xiàn)。2021/8/175第一節(jié)面向?qū)ο蟾攀龆?、研究領(lǐng)域2021/8/175第一節(jié)面向?qū)ο蟾攀?.重用:為了實(shí)現(xiàn)重用,需要研究對象的規(guī)格說明等。6.原型:面向?qū)ο蟮脑O(shè)計(jì)方法如何用于實(shí)現(xiàn)快速原型。7.應(yīng)用:將面向?qū)ο蟮脑O(shè)計(jì)方法用于商業(yè)、教育及科學(xué)等實(shí)際問題的處理中。8.其它方面:將面向?qū)ο蟮脑O(shè)計(jì)方法用到數(shù)據(jù)庫、操作系統(tǒng)、知識工程、人工智能、自然語言處理等其它領(lǐng)域。2021/8/176第一節(jié)面向?qū)ο蟾攀?.重用:為了實(shí)現(xiàn)重用,需要研究對象的第二節(jié)面向?qū)ο蟮幕靖拍钜?、對?.定義對象是和有數(shù)據(jù)及可對這些數(shù)據(jù)施加的操作結(jié)合在一起所構(gòu)成的獨(dú)立單位的總稱,是具有一定知識和處理能力的獨(dú)立個(gè)體。它可以是具體的物理實(shí)體,如一個(gè)文件;也可是是人為抽象概念的,如多任務(wù)操作系統(tǒng)中的調(diào)度策略。從面向?qū)ο蟪绦蛟O(shè)計(jì)的角度看:對象是具有相同狀態(tài)的一組操作的集合。從信息模擬的角度看:對象是對問題域中某個(gè)東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個(gè)東西的信息和與它交互的能力,即對象是對屬性值和操作的封裝。2021/8/177第二節(jié)面向?qū)ο蟮幕靖拍钜?、對?021/8/177第二節(jié)面向?qū)ο蟮幕靖拍顝男问交嵌瓤矗簩ο?:=<ID,MS,DS,MI>其中:ID是對象的標(biāo)識或名字,MS是對象中的數(shù)據(jù)集合,DS是對象中的數(shù)據(jù)結(jié)構(gòu),MI是對象受理的消息名集合。2021/8/178第二節(jié)面向?qū)ο蟮幕靖拍顝男问交嵌瓤矗?021/8/1第二節(jié)面向?qū)ο蟮幕靖拍?.特點(diǎn)標(biāo)識唯一性:指對象是可區(qū)分的,并且由對象的內(nèi)在本質(zhì)來區(qū)分,而不是通過描述來區(qū)分。分類性:指可以將具有相同數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。多態(tài)性:指同一個(gè)操作可以是不同對象的行為。封閉性:從外面看只能看到對象的外部特性,即能夠受理哪些信息,具有哪些處理能力;對象的內(nèi)部,即處理能力的實(shí)行和內(nèi)部狀態(tài),對外是不可見的。從外面不能直接使用對象的處理能力,也不能直接修改其內(nèi)部狀態(tài),對象的內(nèi)部狀態(tài)只能由其自身改變。2021/8/179第二節(jié)面向?qū)ο蟮幕靖拍?.特點(diǎn)2021/8/179第二節(jié)面向?qū)ο蟮幕靖拍顒討B(tài)產(chǎn)生性:對象是在系統(tǒng)執(zhí)行過程中根據(jù)需要而動態(tài)產(chǎn)生的。一定的“智力”性:對象具有一定的“智力”,表現(xiàn)在能夠解釋傳來的信息,理解由消息帶來的要求,并獨(dú)立2021/8/1710第二節(jié)面向?qū)ο蟮幕靖拍顒討B(tài)產(chǎn)生性:對象是在系統(tǒng)執(zhí)行過程第二節(jié)面向?qū)ο蟮幕靖拍?.表現(xiàn)形式外部實(shí)體(如一個(gè)系統(tǒng)、設(shè)備、人等):產(chǎn)生或消耗一個(gè)基于計(jì)算機(jī)的系統(tǒng)所用的信息物(如報(bào)告、顯示、信件、信號等):問題信息域的一部分。事件(如一次信號傳輸或一系列機(jī)器人動作的完成):發(fā)生于系統(tǒng)操作的有關(guān)時(shí)刻。角色(如管理者、工程師等):由與系統(tǒng)交互作用的人來扮演。組織單位(如部門、小組等):與應(yīng)用相關(guān)的機(jī)構(gòu)。2021/8/1711第二節(jié)面向?qū)ο蟮幕靖拍?.表現(xiàn)形式2021/8/171第二節(jié)面向?qū)ο蟮幕靖拍顖鏊ㄈ缰谱髌脚_、辦公室等):使問題和系統(tǒng)的整個(gè)運(yùn)作有固定的位置。結(jié)構(gòu)(如傳感器、計(jì)算機(jī)等):定義一類對象或定義對象的相關(guān)類2021/8/1712第二節(jié)面向?qū)ο蟮幕靖拍顖鏊ㄈ缰谱髌脚_、辦公室等):使第二節(jié)面向?qū)ο蟮幕靖拍疃?、?.定義類是對象類的略寫,是對象的抽象,是一種對象模型,它描述了屬于該對象類型的所有對象的性質(zhì)。例如:Integer是一個(gè)整數(shù)類,它描述了所有整數(shù)的性質(zhì)。2021/8/1713第二節(jié)面向?qū)ο蟮幕靖拍疃?、?021/8/1713第二節(jié)面向?qū)ο蟮幕靖拍?.實(shí)現(xiàn)類是關(guān)于對象性質(zhì)的描述,包括外部特性和內(nèi)部實(shí)現(xiàn)兩個(gè)方面。類通過描述消息模式及其相應(yīng)的處理能力定義類的外部屬性,通過描述內(nèi)部狀態(tài)的表現(xiàn)形式及固有處理能力的實(shí)現(xiàn)定義類的內(nèi)部實(shí)現(xiàn)。2021/8/1714第二節(jié)面向?qū)ο蟮幕靖拍?.實(shí)現(xiàn)2021/8/1714類的實(shí)現(xiàn)圖示消息模式1:處理能力1

……消息模式n:處理能力n消息模式1

處理能力1的實(shí)現(xiàn)

……消息模式n

處理能力n的實(shí)現(xiàn)內(nèi)部狀態(tài)的表現(xiàn)形式外部特性內(nèi)部實(shí)現(xiàn)2021/8/1715類的實(shí)現(xiàn)圖示消息模式1:處理能力1

……消息模式1

第二節(jié)面向?qū)ο蟮幕靖拍?.父類、子類、超類父類:一個(gè)類的上層是父類。子類:一個(gè)類的下層是子類。超類:如果C2是C1的子類,C3是C2的子類,則C1是C3的超類。4.描述類名

屬性、方法等

2021/8/1716第二節(jié)面向?qū)ο蟮幕靖拍?.父類、子類、超類類名2021第二節(jié)面向?qū)ο蟮幕靖拍钊?、?shí)例實(shí)例是某個(gè)具體類所描述的一個(gè)具體對象。例如:“張三”、“李四”是類“中國人”的實(shí)例。對象既可以是一個(gè)具體的對象,也可以泛指一般的對象;而實(shí)例只能是一個(gè)具體的對象。2021/8/1717第二節(jié)面向?qū)ο蟮幕靖拍钊?、?shí)例2021/8/1717第二節(jié)面向?qū)ο蟮幕靖拍钏?、屬性屬性是類中對象所具有的?shù)據(jù)值,是對對象的描述。如對象Person的屬性有姓名、年齡、體重等。不同對象的同一屬性可以具有相同或不同的屬性值。如張三的年齡為19,李四的年齡為20。張三、李四是兩個(gè)不同的對象,他們共同屬性“年齡”的值不同。屬性值應(yīng)該指的是純粹的數(shù)據(jù)值,而不能指對象。屬性表示在類圖中的第二部分。每個(gè)屬性名后均可附加一些說明,諸如類型和缺省值之類。2021/8/1718第二節(jié)面向?qū)ο蟮幕靖拍钏摹傩?021/8/1718第二節(jié)面向?qū)ο蟮幕靖拍钗?、操作和方法操作以某種方式改變對象,即改變對象包含的一個(gè)或多個(gè)屬性值。對象所能執(zhí)行的操作稱為方法,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法、響應(yīng)消息的操作。每個(gè)操作都有一目標(biāo)對象作為其隱含參數(shù),操作的行為取決于其目標(biāo)對象所歸屬的類。對象“知道”其所歸屬的類,所以能正確地實(shí)現(xiàn)該操作。同一操作可適用于不同的類。操作的多態(tài)性指的是在不同的類中,同一操作的形式不同。2021/8/1719第二節(jié)面向?qū)ο蟮幕靖拍钗濉⒉僮骱头椒?021/8/17第二節(jié)面向?qū)ο蟮幕靖拍畈僮饕话惴譃槿齻€(gè)類型以某種方式處理數(shù)據(jù)的操作:如添加、刪除、修改、選取等。執(zhí)行一次計(jì)算的操作監(jiān)控一個(gè)對象的操作2021/8/1720第二節(jié)面向?qū)ο蟮幕靖拍畈僮饕话惴譃槿齻€(gè)類型2021/8第二節(jié)面向?qū)ο蟮幕靖拍盍?、消息消息是用來請求對象?zhí)行某一處理或回答某一要求的信息,是對象之間建立的一種通信機(jī)制,它統(tǒng)一了數(shù)據(jù)流和控制流。通常一個(gè)消息由三部分組成:接收消息的對象消息標(biāo)識符(即消息名)零個(gè)或多個(gè)變元例如:MyCircle.Show(Green)MyCircle是接收消息的對象的名字,Show是消息名,Green是消息的變元。2021/8/1721第二節(jié)面向?qū)ο蟮幕靖拍盍?、消?021/8/1721第二節(jié)面向?qū)ο蟮幕靖拍钊绾我髮ο笸瓿梢欢ǖ奶幚韯幼鳎繉ο箝g如何進(jìn)行聯(lián)系?所有這一切都只能通過消息傳遞來實(shí)現(xiàn)。傳遞消息的對象稱為發(fā)送者,接受消息的對象稱為接受者。消息中只包含傳遞者的要求,它告訴接受者需要哪些處理,但并不指示接受者應(yīng)該怎樣完成這些處理。消息完全由接受者解釋,接受者獨(dú)立決定采用什么方式完成所需的處理,發(fā)送者對接受者不起任何控制作用。2021/8/1722第二節(jié)面向?qū)ο蟮幕靖拍钊绾我髮ο笸瓿梢欢ǖ奶幚韯幼??第二?jié)面向?qū)ο蟮幕靖拍钜粋€(gè)對象能夠接受不同形式、不同內(nèi)容的多個(gè)消息;相同形式的消息可以送往不同的對象,不同的對象對于形式不同的消息可以有不同的解釋,能夠做出不同的反映。一個(gè)對象可以同時(shí)往多個(gè)對象傳遞信息,兩個(gè)對象也可以同時(shí)向某個(gè)對象傳遞消息。接受者響應(yīng)消息的過程:選擇符合消息要求的操作執(zhí)行該操作將控制權(quán)返回調(diào)用者2021/8/1723第二節(jié)面向?qū)ο蟮幕靖拍钜粋€(gè)對象能夠接受不同形式、不同內(nèi)第二節(jié)面向?qū)ο蟮幕靖拍钇?、繼承性廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο笾?,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。父類:類的上層子類:類的下層2021/8/1724第二節(jié)面向?qū)ο蟮幕靖拍钇摺⒗^承性2021/8/1724第二節(jié)面向?qū)ο蟮幕靖拍預(yù)的操作A的變量類A類AA的實(shí)例變量A的實(shí)例a1從A繼承特性B的操作B的變量類B:A的子類類B繼承來的A的實(shí)例變量B的實(shí)例變量B的實(shí)例b1實(shí)現(xiàn)繼承機(jī)制的原理2021/8/1725第二節(jié)面向?qū)ο蟮幕靖拍預(yù)的操作A的變量類A類AA的實(shí)例第二節(jié)面向?qū)ο蟮幕靖拍罾^承具有傳遞性如果類C繼承類B,類B繼承類A,則類C繼承類A。單繼承與多繼承單繼承:一個(gè)類只允許有一個(gè)父類,即類等級為樹形結(jié)構(gòu)。多繼承:一個(gè)類允許有多個(gè)父類2021/8/1726第二節(jié)面向?qū)ο蟮幕靖拍罾^承具有傳遞性2021/8/17第二節(jié)面向?qū)ο蟮幕靖拍罾^承性的優(yōu)點(diǎn)共享程序代碼和數(shù)據(jù)結(jié)構(gòu),大大減少程序中的冗余信息,提高軟件的可重用性。便于軟件修改維護(hù)。當(dāng)需要擴(kuò)充原有的功能時(shí),派生類的方法可以調(diào)用其基類的方法,并在此基礎(chǔ)上增加必要的程序代碼;當(dāng)需要完全改變原有的算法時(shí),可以在派生類中實(shí)現(xiàn)一個(gè)與基類方法同名而算法不同的方法;當(dāng)需要增加新的功能時(shí),可以在派生類中實(shí)現(xiàn)一個(gè)新的方法?!罢驹诰奕说募珙^上”。用戶在開發(fā)新系統(tǒng)時(shí)不必從零開始,可以繼承原有相似功能或者從類庫中選取需要的類,再派生新類。2021/8/1727第二節(jié)面向?qū)ο蟮幕靖拍罾^承性的優(yōu)點(diǎn)2021/8/172第二節(jié)面向?qū)ο蟮幕靖拍畎?、多態(tài)性對象根據(jù)所接受的消息而做出動作,同樣的消息為不同的對象接受時(shí)可導(dǎo)致完全不同的行動,該現(xiàn)象稱為多態(tài)性。利用多態(tài)性,用戶能夠發(fā)送一般形式的消息,而將所有的實(shí)現(xiàn)細(xì)節(jié)都留給接受消息的對象。優(yōu)點(diǎn):多態(tài)性機(jī)制增加了面向?qū)ο筌浖到y(tǒng)的靈活性,進(jìn)一步減少了信息冗余。顯著提高軟件的可重用性和可擴(kuò)展性。2021/8/1728第二節(jié)面向?qū)ο蟮幕靖拍畎恕⒍鄳B(tài)性2021/8/1728第二節(jié)面向?qū)ο蟮幕靖拍罹?、重載函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。優(yōu)點(diǎn):重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。2021/8/1729第二節(jié)面向?qū)ο蟮幕靖拍罹?、重載2021/8/1729第二節(jié)面向?qū)ο蟮幕靖拍钍⒎庋b封裝是指將方法與數(shù)據(jù)同放于一對象中以使對數(shù)據(jù)的存取只通過該對象本身的方法。面向?qū)ο蟪绦虻钠渌糠郑▽ο笠酝獾牟糠郑┒疾荒苤苯幼饔糜谝粚ο蟮臄?shù)據(jù),對象間的通信只能通過明確的消息來進(jìn)行。2021/8/1730第二節(jié)面向?qū)ο蟮幕靖拍钍?、封裝2021/8/1730第二節(jié)面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο髠鹘y(tǒng)技術(shù)方法過程、函數(shù)或子例程實(shí)例變量數(shù)據(jù)消息過程或參數(shù)調(diào)用類抽象數(shù)據(jù)類型繼承無類似技術(shù)調(diào)用處于系統(tǒng)控制之下調(diào)用處于程序員控制之下2021/8/1731第二節(jié)面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο髠鹘y(tǒng)技術(shù)方法過程、函數(shù)或第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵,是識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。面向?qū)ο蠓椒ㄗ罨镜脑瓌t,是按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。2021/8/1732第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵,是識別出問題域內(nèi)的第三節(jié)面向?qū)ο蠓治鲇妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型:對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)動態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu)功能模型:描述系統(tǒng)功能2021/8/1733第三節(jié)面向?qū)ο蠓治鲇妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三對象模型什么是對象模型對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。對象模型是對模擬客觀世界實(shí)體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。2021/8/1734對象模型什么是對象模型2021/8/1734對象模型對象模型的圖形符號類&對象類名屬性服務(wù)類名屬性服務(wù)類&對象符號類符號類符號是類&對象符號的變種,通常用來代表一個(gè)沒有實(shí)例的抽象類2021/8/1735對象模型對象模型的圖形符號類名類名類&對象符號類符號類符號是對象模型當(dāng)不需要詳細(xì)描述一個(gè)類內(nèi)定義了哪些屬性和服務(wù)時(shí),可以在矩形框內(nèi)省略。員工姓名

地址

身份證號碼

工資

通訊地址2021/8/1736對象模型當(dāng)不需要詳細(xì)描述一個(gè)類內(nèi)定義了哪些屬性和服務(wù)時(shí),可以對象模型結(jié)構(gòu)的圖形符號結(jié)構(gòu)表示了問題域中的復(fù)雜關(guān)系,是對客觀世界實(shí)體相互間關(guān)系的抽象。結(jié)構(gòu)與目標(biāo)系統(tǒng)的任務(wù)直接相關(guān),目標(biāo)系統(tǒng)的任務(wù)決定了系統(tǒng)的結(jié)構(gòu)。結(jié)構(gòu)有三種形式:歸納關(guān)系、組合關(guān)系、關(guān)聯(lián)關(guān)系2021/8/1737對象模型結(jié)構(gòu)的圖形符號2021/8/1737對象模型歸納關(guān)系即“一般-特殊”關(guān)系,它反映了一個(gè)類與若干個(gè)互不相容的子類之間的分類關(guān)系。高層類(即基類)說明一般性的屬性低層類(即派生類)說明特殊屬性,繼承高層類中定義的屬性和服務(wù)。2021/8/1738對象模型歸納關(guān)系2021/8/1738對象模型一般化類具體類1具體類2表示歸納關(guān)系的圖形符號2021/8/1739對象模型一般化類具體類1具體類2表示歸納關(guān)系的圖形符號202對象模型組合關(guān)系組合關(guān)系即“整體-部分”關(guān)系,反映了對象之間的構(gòu)成關(guān)系。也稱為聚集關(guān)系。結(jié)構(gòu)線每端標(biāo)出的數(shù)值(或值的范圍),表示在此結(jié)構(gòu)中該端對象的數(shù)量(當(dāng)值為1時(shí)無須標(biāo)出)組合關(guān)系具有傳遞性:如果A是B的一部分,B是C的一部分,則A是C的一部分。當(dāng)組合關(guān)系具有多個(gè)層次時(shí),可以用一棵簡單的聚集樹來表示。2021/8/1740對象模型組合關(guān)系2021/8/1740對象模型整體部分1部分2表示組合關(guān)系的圖形符號1,m0,n2021/8/1741對象模型整體部分1部分2表示組合關(guān)系的圖形符號1,m0,n22021/8/17422021/8/1742對象模型關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系反映對象之前相互依賴、相互作用的關(guān)系。兩個(gè)對象之間關(guān)聯(lián)關(guān)系一般有三種類型:一對一(1:1)一對多(1:M)多對多(M:N)2021/8/1743對象模型關(guān)聯(lián)關(guān)系2021/8/1743對象模型二元關(guān)聯(lián)關(guān)系的討論表示符號通過連線,表示兩個(gè)對象之間的關(guān)聯(lián)關(guān)系連線上的數(shù)字,表示參與關(guān)聯(lián)對象的個(gè)數(shù)教師書1+2021/8/1744對象模型二元關(guān)聯(lián)關(guān)系的討論教師書1+2021/8/1744對象模型鏈屬性鏈屬性是指關(guān)聯(lián)鏈的性質(zhì)例如:文件與用戶之間是多對多的關(guān)系,但每個(gè)用戶對不同文件擁有不同的訪問權(quán)限,訪問權(quán)限是文件與用戶之間關(guān)聯(lián)鏈的屬性。文件用戶1+1+訪問權(quán)限2021/8/1745對象模型鏈屬性文件用戶1+1+2021/8/1745對象模型限定一個(gè)受限的關(guān)聯(lián)由兩個(gè)對象及一個(gè)限定詞組成。限定詞可以看作是一種特殊的鏈屬性,利用其能有效地減少關(guān)聯(lián)的階數(shù)。例如:目錄與文件通常是多對一的關(guān)系,通過文件名的限定,就成為一對一的關(guān)系目錄文件文件名2021/8/1746對象模型限定目錄文件文件名2021/8/1746對象模型發(fā)送者接受者消息連接消息連接反映了一個(gè)對象對另一個(gè)對象的處理依賴性。通常一個(gè)對象為了完成自己的任務(wù),需要借助于另一個(gè)對象提供的服務(wù)。帶箭頭2021/8/1747對象模型發(fā)送者接受者消息連接帶箭頭2021/8/17472021/8/17482021/8/17482021/8/17492021/8/1749動態(tài)模型什么是動態(tài)模型動態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),規(guī)定了對象模型中對象的合法變化序列。即對象的動態(tài)行為。用狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件、以及對象的行為(對事件的響應(yīng))。每個(gè)類的動態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。2021/8/1750動態(tài)模型什么是動態(tài)模型2021/8/1750動態(tài)模型相關(guān)術(shù)語事件:指某個(gè)時(shí)刻所發(fā)生的事情,是對引起對象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的現(xiàn)實(shí)世界中的事件的抽象。狀態(tài):指對象在其生命周期中的某個(gè)特定階段所處的某種情形。行為:指對象達(dá)到某種狀態(tài)時(shí)所做的一系列處理操作。2021/8/1751動態(tài)模型相關(guān)術(shù)語2021/8/1751動態(tài)模型表示方法狀態(tài)1DO:行為1狀態(tài)2DO:行為2初始事件事件1[條件1]結(jié)束事件2021/8/1752動態(tài)模型表示方法狀態(tài)1狀態(tài)2初始事件事件1[條件1]結(jié)束事件2021/8/17532021/8/1753功能模型什么是功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,故更直接反映了用戶對目標(biāo)系統(tǒng)的需求。表示方法功能模型也通常由一組數(shù)據(jù)流程圖表示。在面向?qū)ο蠓椒ㄖ校瑪?shù)據(jù)流程圖沒有在結(jié)構(gòu)化分析中重要,有時(shí)可以省略。2021/8/1754功能模型什么是功能模型2021/8/1754三種模型之間的關(guān)系三種模型之間的關(guān)系三種模型分別從三個(gè)不同側(cè)面描述了所要開發(fā)的系統(tǒng),它們相互補(bǔ)充,相互配合。對象模型定義了對象實(shí)體,是最基本的,是其它兩個(gè)模型的基礎(chǔ)。動態(tài)模型規(guī)定了什么時(shí)候做,即在何種狀態(tài)下接受了什么事情的觸發(fā)。功能模型指明了系統(tǒng)應(yīng)該“做什么”。2021/8/1755三種模型之間的關(guān)系三種模型之間的關(guān)系2021/8/1755第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治瞿壳爸饕捎肅ode和Yourdon提出的OOA建模方法,包括5個(gè)步驟:標(biāo)識對象標(biāo)識結(jié)構(gòu)標(biāo)識主題定義屬性和實(shí)例聯(lián)系定義操作和消息聯(lián)系2021/8/1756第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治瞿壳爸饕捎肅ode和YOOA建模1.標(biāo)識對象描述如何發(fā)現(xiàn)對象和類從應(yīng)用領(lǐng)域開始識別類及對象,即從問題陳述中提煉類和對象。對象可歸類為七種形式2021/8/1757OOA建模1.標(biāo)識對象2021/8/1757OOA建模2.標(biāo)識結(jié)構(gòu)標(biāo)識結(jié)構(gòu)也就是分析類與類、對象與對象之間的關(guān)系。即確定關(guān)聯(lián)首先識別一般-特殊結(jié)構(gòu),該結(jié)構(gòu)捕獲了識別出的類的層次結(jié)構(gòu)。即歸類結(jié)構(gòu)。其次識別整體-部分結(jié)構(gòu),該結(jié)構(gòu)用來表示一個(gè)對象如何成為另一個(gè)對象的一部分,以及多個(gè)對象如何組裝成更大的對象。即集成結(jié)構(gòu)。最后確定組合結(jié)構(gòu)2021/8/1758OOA建模2.標(biāo)識結(jié)構(gòu)2021/8/1758OOA建模3.標(biāo)識主題主題由一組類及對象組成,用于將類及對象模型劃分為更大的單位,便于理解。主題可以看作是一個(gè)參照符號或指針,指向分析模型中的細(xì)節(jié)處。對于小系統(tǒng),無須引入主題通常按問題領(lǐng)域而不是用功能分解方法來確定主題。2021/8/1759OOA建模3.標(biāo)識主題2021/8/17592021/8/17602021/8/1760OOA建模4.定義屬性和實(shí)例聯(lián)系2021/8/1761OOA建模4.定義屬性和實(shí)例聯(lián)系2021/8/17612021/8/17622021/8/1762OOA建模5.定義操作和消息聯(lián)系操作一般分為三類以某種方式處理數(shù)據(jù)的操作,如添加、刪除、修改、選取執(zhí)行一次計(jì)算的操作監(jiān)控對象的某個(gè)控制事件出現(xiàn)的操作2021/8/1763OOA建模5.定義操作和消息聯(lián)系2021/8/1763第四節(jié)面向?qū)ο笤O(shè)計(jì)OOD設(shè)計(jì)原則模塊化對象可以看作模塊抽象設(shè)計(jì)者可以創(chuàng)建自己的抽象數(shù)據(jù)類型和功能抽象,不必過細(xì)考慮問題域中細(xì)節(jié)。信息隱藏信息隱藏通過對象的封裝性實(shí)現(xiàn):類結(jié)構(gòu)分離了接口與實(shí)現(xiàn),從而支持信息隱藏。對于用戶來說,屬性的表示方法和操作的實(shí)現(xiàn)算法是隱藏的。2021/8/1764第四節(jié)面向?qū)ο笤O(shè)計(jì)OOD設(shè)計(jì)原則2021/8/1764第四節(jié)面向?qū)ο笤O(shè)計(jì)弱耦合耦合指不同對象之間相互關(guān)聯(lián)的緊密程度。盡可能降低對象之間的耦合,但當(dāng)兩個(gè)對象必須相互聯(lián)系時(shí),可通過類的協(xié)議(即公共接口)實(shí)現(xiàn)耦合,不應(yīng)該依賴于類的具體實(shí)現(xiàn)細(xì)節(jié)。耦合分為兩類:交互耦合、繼承耦合交互耦合通過消息傳遞實(shí)現(xiàn)繼承耦合通過對象間的繼承性實(shí)現(xiàn)2021/8/1765第四節(jié)面向?qū)ο笤O(shè)計(jì)弱耦合2021/8/1765第四節(jié)面向?qū)ο笤O(shè)計(jì)強(qiáng)內(nèi)聚內(nèi)聚指一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。三種內(nèi)聚:服務(wù)內(nèi)聚、類內(nèi)聚、一般-特殊內(nèi)聚服務(wù)內(nèi)聚一個(gè)服務(wù)應(yīng)該完成一個(gè)且僅完成一個(gè)功能。類內(nèi)聚一個(gè)類應(yīng)該只有一個(gè)用途一般-特殊內(nèi)聚設(shè)計(jì)一般-特殊結(jié)構(gòu),應(yīng)符合大多數(shù)人的概念。2021/8/1766第四節(jié)面向?qū)ο笤O(shè)計(jì)強(qiáng)內(nèi)聚2021/8/1766第四節(jié)面向?qū)ο笤O(shè)計(jì)可重用性軟件重用是提高軟件開發(fā)生產(chǎn)率和目標(biāo)系統(tǒng)質(zhì)量的重要途徑。重用的兩層含義盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類)。設(shè)計(jì)新類時(shí),應(yīng)考慮將來的可重復(fù)使用性。2021/8/1767第四節(jié)面向?qū)ο笤O(shè)計(jì)可重用性2021/8/1767第四節(jié)面向?qū)ο笤O(shè)計(jì)OOD方法定義問題為真實(shí)世界問題域的軟件實(shí)現(xiàn)生成非形式化策略按下列步驟將策略形式化指出對象及其屬性指出可能適用于對象的操作說明對象及操作間的關(guān)系,建立接口。重復(fù)步驟2、32021/8/1768第四節(jié)面向?qū)ο笤O(shè)計(jì)OOD方法2021/8/1768第四節(jié)面向?qū)ο笤O(shè)計(jì)細(xì)化前面階段所做的工作,找出子類、消息特性和其他詳盡的細(xì)節(jié)。表示與對象屬性關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)表示與每一操作關(guān)聯(lián)的過程細(xì)節(jié)注意:前4個(gè)步驟,主要在OOA階段完成2021/8/1769第四節(jié)面向?qū)ο笤O(shè)計(jì)細(xì)化前面階段所做的工作,找出子類、消第五節(jié)面向?qū)ο缶幊?021/8/1770第五節(jié)面向?qū)ο缶幊?021/8/1770作業(yè)試用面向?qū)ο蠓椒ǎO(shè)計(jì)一個(gè)圖書館的借還書系統(tǒng)。具體要求,參見教材第34頁2021/8/1771作業(yè)試用面向?qū)ο蠓椒?,設(shè)計(jì)一個(gè)圖書館的借還書系統(tǒng)。2021/思考題一為方便儲戶,某銀行擬開發(fā)計(jì)算機(jī)儲蓄系統(tǒng)。儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入,如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并打印存款單給儲戶;如果是取款,系統(tǒng)計(jì)算利息,并打印利息清單給儲戶。分別用結(jié)構(gòu)化分析與設(shè)計(jì)方法、面向?qū)ο蠓治雠c設(shè)計(jì)方法,進(jìn)行分析與設(shè)計(jì)。2021/8/1772思考題一為方便儲戶,某銀行擬開發(fā)計(jì)算機(jī)儲蓄系統(tǒng)。儲戶填寫的存思考題二為方便旅客,某航空公司擬開發(fā)一個(gè)機(jī)票預(yù)訂系統(tǒng)。旅行社把預(yù)訂機(jī)票的旅客信息(姓名、性別、工作單位、身份證號碼、旅行時(shí)間、旅行目的地等)輸入該系統(tǒng),系統(tǒng)為旅客安排航班,打印取票通知和帳單,旅客在飛機(jī)起飛前一天憑取票通知和帳單交款取票,系統(tǒng)校對無誤,打印機(jī)票給旅客。分別用結(jié)構(gòu)化分析與設(shè)計(jì)方法、面向?qū)ο蠓治雠c設(shè)計(jì)方法,進(jìn)行分析與設(shè)計(jì)。2021/8/1773思考題二為方便旅客,某航空公司擬開發(fā)一個(gè)機(jī)票預(yù)訂系統(tǒng)。旅行社面向?qū)ο蟮拈_發(fā)方法第一節(jié)面向?qū)ο蟾攀龅诙?jié)面向?qū)ο蟮幕靖拍畹谌?jié)面向?qū)ο蠓治觯∣OA)第四節(jié)面向?qū)ο笤O(shè)計(jì)(OOD)第五節(jié)面向?qū)ο缶幊?021/8/1774面向?qū)ο蟮拈_發(fā)方法第一節(jié)面向?qū)ο蟾攀?021/8/171第一節(jié)面向?qū)ο蟾攀鲆?、發(fā)展概述面向?qū)ο蟛⒎鞘且粋€(gè)新的概念,實(shí)際上它已有30多年的歷史。尋其根源可追溯到60年代的挪威,當(dāng)時(shí)挪威計(jì)算中心的KristenNygaard和Ole-JohanDahl開發(fā)了一種稱作Simula67的語言。Simula67首次引入了類、協(xié)同程序和子類的概念,這很象今天的面向?qū)ο笳Z言。70年代中期,XeroxPaloAlto研究中心的研究人員設(shè)計(jì)了Smalltalk語言,該語言的每個(gè)元素都被當(dāng)作一個(gè)對象來實(shí)現(xiàn),其程序設(shè)計(jì)環(huán)境及相關(guān)的各個(gè)方面都是面向?qū)ο蟮摹?021/8/1775第一節(jié)面向?qū)ο蟾攀鲆弧l(fā)展概述2021/8/172第一節(jié)面向?qū)ο蟾攀龅?,面向?qū)ο蟮耐茝V很慢。例如:Samlltalk的成果直到1981年8月因Byte雜志的介紹才為外界所知,許多軟件開發(fā)人員了解Samlltalk時(shí),都把它看作是一個(gè)窗口系統(tǒng),而不是程序設(shè)計(jì)技術(shù)的一次革命。80年代,C成為很受歡迎的程序設(shè)計(jì)語言,它不僅可用在微機(jī)上,還可用在多種結(jié)構(gòu)的系統(tǒng)和環(huán)境中。80年代早期,AT&T貝爾實(shí)驗(yàn)室的BjarneStroustrup把C語言擴(kuò)展為支持面向?qū)ο蟪绦蛟O(shè)計(jì)的C++。在C++中,程序員可以在其熟悉的語言環(huán)境下學(xué)習(xí)掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),而不必去探究一種新的語言和環(huán)境。2021/8/1776第一節(jié)面向?qū)ο蟾攀龅牵嫦驅(qū)ο蟮耐茝V很慢。例如:Sam第一節(jié)面向?qū)ο蟾攀鲎?0年代以來,軟件與硬件之間的差距至少有兩代處理器之多,并且這種差距還在增大。當(dāng)軟件系統(tǒng)變得更加復(fù)雜時(shí),常規(guī)軟件工具、技術(shù)和概念已不足以應(yīng)付,從而使軟件開發(fā)者陷入了困境。但面向?qū)ο蟮姆椒軌蚩刂栖浖膹?fù)雜性,從而促進(jìn)了面向?qū)ο蟮陌l(fā)展,掀起了一股“面向?qū)ο蟆睙帷?021/8/1777第一節(jié)面向?qū)ο蟾攀鲎?0年代以來,軟件與硬件之間的差距至第一節(jié)面向?qū)ο蟾攀龆?、研究領(lǐng)域目前國內(nèi)外關(guān)于面向?qū)ο蟮难芯款I(lǐng)域主要在以下幾個(gè)方面:1.理論:包括方法、面向?qū)ο笤O(shè)計(jì)的本質(zhì)以及語義模型的研究。2.語言:包括現(xiàn)有面向?qū)ο蟮某绦蛟O(shè)計(jì)語言的研究、設(shè)計(jì)新的面向?qū)ο蟮某绦蛘Z言,將面向?qū)ο蟮脑O(shè)計(jì)思想引入其它語言(如Ada,Prolog,Lisp,C,Pascal,F(xiàn)oxpro等)3.實(shí)現(xiàn):包括體系結(jié)構(gòu)的支撐、編譯與解釋、其它特殊技術(shù)等。4.環(huán)境:包括面向?qū)ο蟮能浖_發(fā)環(huán)境的設(shè)計(jì)與實(shí)現(xiàn)。2021/8/1778第一節(jié)面向?qū)ο蟾攀龆⒀芯款I(lǐng)域2021/8/175第一節(jié)面向?qū)ο蟾攀?.重用:為了實(shí)現(xiàn)重用,需要研究對象的規(guī)格說明等。6.原型:面向?qū)ο蟮脑O(shè)計(jì)方法如何用于實(shí)現(xiàn)快速原型。7.應(yīng)用:將面向?qū)ο蟮脑O(shè)計(jì)方法用于商業(yè)、教育及科學(xué)等實(shí)際問題的處理中。8.其它方面:將面向?qū)ο蟮脑O(shè)計(jì)方法用到數(shù)據(jù)庫、操作系統(tǒng)、知識工程、人工智能、自然語言處理等其它領(lǐng)域。2021/8/1779第一節(jié)面向?qū)ο蟾攀?.重用:為了實(shí)現(xiàn)重用,需要研究對象的第二節(jié)面向?qū)ο蟮幕靖拍钜弧ο?.定義對象是和有數(shù)據(jù)及可對這些數(shù)據(jù)施加的操作結(jié)合在一起所構(gòu)成的獨(dú)立單位的總稱,是具有一定知識和處理能力的獨(dú)立個(gè)體。它可以是具體的物理實(shí)體,如一個(gè)文件;也可是是人為抽象概念的,如多任務(wù)操作系統(tǒng)中的調(diào)度策略。從面向?qū)ο蟪绦蛟O(shè)計(jì)的角度看:對象是具有相同狀態(tài)的一組操作的集合。從信息模擬的角度看:對象是對問題域中某個(gè)東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個(gè)東西的信息和與它交互的能力,即對象是對屬性值和操作的封裝。2021/8/1780第二節(jié)面向?qū)ο蟮幕靖拍钜?、對?021/8/177第二節(jié)面向?qū)ο蟮幕靖拍顝男问交嵌瓤矗簩ο?:=<ID,MS,DS,MI>其中:ID是對象的標(biāo)識或名字,MS是對象中的數(shù)據(jù)集合,DS是對象中的數(shù)據(jù)結(jié)構(gòu),MI是對象受理的消息名集合。2021/8/1781第二節(jié)面向?qū)ο蟮幕靖拍顝男问交嵌瓤矗?021/8/1第二節(jié)面向?qū)ο蟮幕靖拍?.特點(diǎn)標(biāo)識唯一性:指對象是可區(qū)分的,并且由對象的內(nèi)在本質(zhì)來區(qū)分,而不是通過描述來區(qū)分。分類性:指可以將具有相同數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。多態(tài)性:指同一個(gè)操作可以是不同對象的行為。封閉性:從外面看只能看到對象的外部特性,即能夠受理哪些信息,具有哪些處理能力;對象的內(nèi)部,即處理能力的實(shí)行和內(nèi)部狀態(tài),對外是不可見的。從外面不能直接使用對象的處理能力,也不能直接修改其內(nèi)部狀態(tài),對象的內(nèi)部狀態(tài)只能由其自身改變。2021/8/1782第二節(jié)面向?qū)ο蟮幕靖拍?.特點(diǎn)2021/8/179第二節(jié)面向?qū)ο蟮幕靖拍顒討B(tài)產(chǎn)生性:對象是在系統(tǒng)執(zhí)行過程中根據(jù)需要而動態(tài)產(chǎn)生的。一定的“智力”性:對象具有一定的“智力”,表現(xiàn)在能夠解釋傳來的信息,理解由消息帶來的要求,并獨(dú)立2021/8/1783第二節(jié)面向?qū)ο蟮幕靖拍顒討B(tài)產(chǎn)生性:對象是在系統(tǒng)執(zhí)行過程第二節(jié)面向?qū)ο蟮幕靖拍?.表現(xiàn)形式外部實(shí)體(如一個(gè)系統(tǒng)、設(shè)備、人等):產(chǎn)生或消耗一個(gè)基于計(jì)算機(jī)的系統(tǒng)所用的信息物(如報(bào)告、顯示、信件、信號等):問題信息域的一部分。事件(如一次信號傳輸或一系列機(jī)器人動作的完成):發(fā)生于系統(tǒng)操作的有關(guān)時(shí)刻。角色(如管理者、工程師等):由與系統(tǒng)交互作用的人來扮演。組織單位(如部門、小組等):與應(yīng)用相關(guān)的機(jī)構(gòu)。2021/8/1784第二節(jié)面向?qū)ο蟮幕靖拍?.表現(xiàn)形式2021/8/171第二節(jié)面向?qū)ο蟮幕靖拍顖鏊ㄈ缰谱髌脚_、辦公室等):使問題和系統(tǒng)的整個(gè)運(yùn)作有固定的位置。結(jié)構(gòu)(如傳感器、計(jì)算機(jī)等):定義一類對象或定義對象的相關(guān)類2021/8/1785第二節(jié)面向?qū)ο蟮幕靖拍顖鏊ㄈ缰谱髌脚_、辦公室等):使第二節(jié)面向?qū)ο蟮幕靖拍疃?、?.定義類是對象類的略寫,是對象的抽象,是一種對象模型,它描述了屬于該對象類型的所有對象的性質(zhì)。例如:Integer是一個(gè)整數(shù)類,它描述了所有整數(shù)的性質(zhì)。2021/8/1786第二節(jié)面向?qū)ο蟮幕靖拍疃?、?021/8/1713第二節(jié)面向?qū)ο蟮幕靖拍?.實(shí)現(xiàn)類是關(guān)于對象性質(zhì)的描述,包括外部特性和內(nèi)部實(shí)現(xiàn)兩個(gè)方面。類通過描述消息模式及其相應(yīng)的處理能力定義類的外部屬性,通過描述內(nèi)部狀態(tài)的表現(xiàn)形式及固有處理能力的實(shí)現(xiàn)定義類的內(nèi)部實(shí)現(xiàn)。2021/8/1787第二節(jié)面向?qū)ο蟮幕靖拍?.實(shí)現(xiàn)2021/8/1714類的實(shí)現(xiàn)圖示消息模式1:處理能力1

……消息模式n:處理能力n消息模式1

處理能力1的實(shí)現(xiàn)

……消息模式n

處理能力n的實(shí)現(xiàn)內(nèi)部狀態(tài)的表現(xiàn)形式外部特性內(nèi)部實(shí)現(xiàn)2021/8/1788類的實(shí)現(xiàn)圖示消息模式1:處理能力1

……消息模式1

第二節(jié)面向?qū)ο蟮幕靖拍?.父類、子類、超類父類:一個(gè)類的上層是父類。子類:一個(gè)類的下層是子類。超類:如果C2是C1的子類,C3是C2的子類,則C1是C3的超類。4.描述類名

屬性、方法等

2021/8/1789第二節(jié)面向?qū)ο蟮幕靖拍?.父類、子類、超類類名2021第二節(jié)面向?qū)ο蟮幕靖拍钊?、?shí)例實(shí)例是某個(gè)具體類所描述的一個(gè)具體對象。例如:“張三”、“李四”是類“中國人”的實(shí)例。對象既可以是一個(gè)具體的對象,也可以泛指一般的對象;而實(shí)例只能是一個(gè)具體的對象。2021/8/1790第二節(jié)面向?qū)ο蟮幕靖拍钊?shí)例2021/8/1717第二節(jié)面向?qū)ο蟮幕靖拍钏?、屬性屬性是類中對象所具有的?shù)據(jù)值,是對對象的描述。如對象Person的屬性有姓名、年齡、體重等。不同對象的同一屬性可以具有相同或不同的屬性值。如張三的年齡為19,李四的年齡為20。張三、李四是兩個(gè)不同的對象,他們共同屬性“年齡”的值不同。屬性值應(yīng)該指的是純粹的數(shù)據(jù)值,而不能指對象。屬性表示在類圖中的第二部分。每個(gè)屬性名后均可附加一些說明,諸如類型和缺省值之類。2021/8/1791第二節(jié)面向?qū)ο蟮幕靖拍钏?、屬?021/8/1718第二節(jié)面向?qū)ο蟮幕靖拍钗?、操作和方法操作以某種方式改變對象,即改變對象包含的一個(gè)或多個(gè)屬性值。對象所能執(zhí)行的操作稱為方法,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法、響應(yīng)消息的操作。每個(gè)操作都有一目標(biāo)對象作為其隱含參數(shù),操作的行為取決于其目標(biāo)對象所歸屬的類。對象“知道”其所歸屬的類,所以能正確地實(shí)現(xiàn)該操作。同一操作可適用于不同的類。操作的多態(tài)性指的是在不同的類中,同一操作的形式不同。2021/8/1792第二節(jié)面向?qū)ο蟮幕靖拍钗濉⒉僮骱头椒?021/8/17第二節(jié)面向?qū)ο蟮幕靖拍畈僮饕话惴譃槿齻€(gè)類型以某種方式處理數(shù)據(jù)的操作:如添加、刪除、修改、選取等。執(zhí)行一次計(jì)算的操作監(jiān)控一個(gè)對象的操作2021/8/1793第二節(jié)面向?qū)ο蟮幕靖拍畈僮饕话惴譃槿齻€(gè)類型2021/8第二節(jié)面向?qū)ο蟮幕靖拍盍?、消息消息是用來請求對象?zhí)行某一處理或回答某一要求的信息,是對象之間建立的一種通信機(jī)制,它統(tǒng)一了數(shù)據(jù)流和控制流。通常一個(gè)消息由三部分組成:接收消息的對象消息標(biāo)識符(即消息名)零個(gè)或多個(gè)變元例如:MyCircle.Show(Green)MyCircle是接收消息的對象的名字,Show是消息名,Green是消息的變元。2021/8/1794第二節(jié)面向?qū)ο蟮幕靖拍盍⑾?021/8/1721第二節(jié)面向?qū)ο蟮幕靖拍钊绾我髮ο笸瓿梢欢ǖ奶幚韯幼??對象間如何進(jìn)行聯(lián)系?所有這一切都只能通過消息傳遞來實(shí)現(xiàn)。傳遞消息的對象稱為發(fā)送者,接受消息的對象稱為接受者。消息中只包含傳遞者的要求,它告訴接受者需要哪些處理,但并不指示接受者應(yīng)該怎樣完成這些處理。消息完全由接受者解釋,接受者獨(dú)立決定采用什么方式完成所需的處理,發(fā)送者對接受者不起任何控制作用。2021/8/1795第二節(jié)面向?qū)ο蟮幕靖拍钊绾我髮ο笸瓿梢欢ǖ奶幚韯幼??第二?jié)面向?qū)ο蟮幕靖拍钜粋€(gè)對象能夠接受不同形式、不同內(nèi)容的多個(gè)消息;相同形式的消息可以送往不同的對象,不同的對象對于形式不同的消息可以有不同的解釋,能夠做出不同的反映。一個(gè)對象可以同時(shí)往多個(gè)對象傳遞信息,兩個(gè)對象也可以同時(shí)向某個(gè)對象傳遞消息。接受者響應(yīng)消息的過程:選擇符合消息要求的操作執(zhí)行該操作將控制權(quán)返回調(diào)用者2021/8/1796第二節(jié)面向?qū)ο蟮幕靖拍钜粋€(gè)對象能夠接受不同形式、不同內(nèi)第二節(jié)面向?qū)ο蟮幕靖拍钇?、繼承性廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο笾?,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。父類:類的上層子類:類的下層2021/8/1797第二節(jié)面向?qū)ο蟮幕靖拍钇?、繼承性2021/8/1724第二節(jié)面向?qū)ο蟮幕靖拍預(yù)的操作A的變量類A類AA的實(shí)例變量A的實(shí)例a1從A繼承特性B的操作B的變量類B:A的子類類B繼承來的A的實(shí)例變量B的實(shí)例變量B的實(shí)例b1實(shí)現(xiàn)繼承機(jī)制的原理2021/8/1798第二節(jié)面向?qū)ο蟮幕靖拍預(yù)的操作A的變量類A類AA的實(shí)例第二節(jié)面向?qū)ο蟮幕靖拍罾^承具有傳遞性如果類C繼承類B,類B繼承類A,則類C繼承類A。單繼承與多繼承單繼承:一個(gè)類只允許有一個(gè)父類,即類等級為樹形結(jié)構(gòu)。多繼承:一個(gè)類允許有多個(gè)父類2021/8/1799第二節(jié)面向?qū)ο蟮幕靖拍罾^承具有傳遞性2021/8/17第二節(jié)面向?qū)ο蟮幕靖拍罾^承性的優(yōu)點(diǎn)共享程序代碼和數(shù)據(jù)結(jié)構(gòu),大大減少程序中的冗余信息,提高軟件的可重用性。便于軟件修改維護(hù)。當(dāng)需要擴(kuò)充原有的功能時(shí),派生類的方法可以調(diào)用其基類的方法,并在此基礎(chǔ)上增加必要的程序代碼;當(dāng)需要完全改變原有的算法時(shí),可以在派生類中實(shí)現(xiàn)一個(gè)與基類方法同名而算法不同的方法;當(dāng)需要增加新的功能時(shí),可以在派生類中實(shí)現(xiàn)一個(gè)新的方法。“站在巨人的肩頭上”。用戶在開發(fā)新系統(tǒng)時(shí)不必從零開始,可以繼承原有相似功能或者從類庫中選取需要的類,再派生新類。2021/8/17100第二節(jié)面向?qū)ο蟮幕靖拍罾^承性的優(yōu)點(diǎn)2021/8/172第二節(jié)面向?qū)ο蟮幕靖拍畎恕⒍鄳B(tài)性對象根據(jù)所接受的消息而做出動作,同樣的消息為不同的對象接受時(shí)可導(dǎo)致完全不同的行動,該現(xiàn)象稱為多態(tài)性。利用多態(tài)性,用戶能夠發(fā)送一般形式的消息,而將所有的實(shí)現(xiàn)細(xì)節(jié)都留給接受消息的對象。優(yōu)點(diǎn):多態(tài)性機(jī)制增加了面向?qū)ο筌浖到y(tǒng)的靈活性,進(jìn)一步減少了信息冗余。顯著提高軟件的可重用性和可擴(kuò)展性。2021/8/17101第二節(jié)面向?qū)ο蟮幕靖拍畎?、多態(tài)性2021/8/1728第二節(jié)面向?qū)ο蟮幕靖拍罹拧⒅剌d函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。優(yōu)點(diǎn):重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。2021/8/17102第二節(jié)面向?qū)ο蟮幕靖拍罹拧⒅剌d2021/8/1729第二節(jié)面向?qū)ο蟮幕靖拍钍?、封裝封裝是指將方法與數(shù)據(jù)同放于一對象中以使對數(shù)據(jù)的存取只通過該對象本身的方法。面向?qū)ο蟪绦虻钠渌糠郑▽ο笠酝獾牟糠郑┒疾荒苤苯幼饔糜谝粚ο蟮臄?shù)據(jù),對象間的通信只能通過明確的消息來進(jìn)行。2021/8/17103第二節(jié)面向?qū)ο蟮幕靖拍钍?、封裝2021/8/1730第二節(jié)面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο髠鹘y(tǒng)技術(shù)方法過程、函數(shù)或子例程實(shí)例變量數(shù)據(jù)消息過程或參數(shù)調(diào)用類抽象數(shù)據(jù)類型繼承無類似技術(shù)調(diào)用處于系統(tǒng)控制之下調(diào)用處于程序員控制之下2021/8/17104第二節(jié)面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο髠鹘y(tǒng)技術(shù)方法過程、函數(shù)或第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵,是識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。面向?qū)ο蠓椒ㄗ罨镜脑瓌t,是按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。2021/8/17105第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵,是識別出問題域內(nèi)的第三節(jié)面向?qū)ο蠓治鲇妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型:對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)動態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu)功能模型:描述系統(tǒng)功能2021/8/17106第三節(jié)面向?qū)ο蠓治鲇妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三對象模型什么是對象模型對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。對象模型是對模擬客觀世界實(shí)體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。2021/8/17107對象模型什么是對象模型2021/8/1734對象模型對象模型的圖形符號類&對象類名屬性服務(wù)類名屬性服務(wù)類&對象符號類符號類符號是類&對象符號的變種,通常用來代表一個(gè)沒有實(shí)例的抽象類2021/8/17108對象模型對象模型的圖形符號類名類名類&對象符號類符號類符號是對象模型當(dāng)不需要詳細(xì)描述一個(gè)類內(nèi)定義了哪些屬性和服務(wù)時(shí),可以在矩形框內(nèi)省略。員工姓名

地址

身份證號碼

工資

通訊地址2021/8/17109對象模型當(dāng)不需要詳細(xì)描述一個(gè)類內(nèi)定義了哪些屬性和服務(wù)時(shí),可以對象模型結(jié)構(gòu)的圖形符號結(jié)構(gòu)表示了問題域中的復(fù)雜關(guān)系,是對客觀世界實(shí)體相互間關(guān)系的抽象。結(jié)構(gòu)與目標(biāo)系統(tǒng)的任務(wù)直接相關(guān),目標(biāo)系統(tǒng)的任務(wù)決定了系統(tǒng)的結(jié)構(gòu)。結(jié)構(gòu)有三種形式:歸納關(guān)系、組合關(guān)系、關(guān)聯(lián)關(guān)系2021/8/17110對象模型結(jié)構(gòu)的圖形符號2021/8/1737對象模型歸納關(guān)系即“一般-特殊”關(guān)系,它反映了一個(gè)類與若干個(gè)互不相容的子類之間的分類關(guān)系。高層類(即基類)說明一般性的屬性低層類(即派生類)說明特殊屬性,繼承高層類中定義的屬性和服務(wù)。2021/8/17111對象模型歸納關(guān)系2021/8/1738對象模型一般化類具體類1具體類2表示歸納關(guān)系的圖形符號2021/8/17112對象模型一般化類具體類1具體類2表示歸納關(guān)系的圖形符號202對象模型組合關(guān)系組合關(guān)系即“整體-部分”關(guān)系,反映了對象之間的構(gòu)成關(guān)系。也稱為聚集關(guān)系。結(jié)構(gòu)線每端標(biāo)出的數(shù)值(或值的范圍),表示在此結(jié)構(gòu)中該端對象的數(shù)量(當(dāng)值為1時(shí)無須標(biāo)出)組合關(guān)系具有傳遞性:如果A是B的一部分,B是C的一部分,則A是C的一部分。當(dāng)組合關(guān)系具有多個(gè)層次時(shí),可以用一棵簡單的聚集樹來表示。2021/8/17113對象模型組合關(guān)系2021/8/1740對象模型整體部分1部分2表示組合關(guān)系的圖形符號1,m0,n2021/8/17114對象模型整體部分1部分2表示組合關(guān)系的圖形符號1,m0,n22021/8/171152021/8/1742對象模型關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系反映對象之前相互依賴、相互作用的關(guān)系。兩個(gè)對象之間關(guān)聯(lián)關(guān)系一般有三種類型:一對一(1:1)一對多(1:M)多對多(M:N)2021/8/17116對象模型關(guān)聯(lián)關(guān)系2021/8/1743對象模型二元關(guān)聯(lián)關(guān)系的討論表示符號通過連線,表示兩個(gè)對象之間的關(guān)聯(lián)關(guān)系連線上的數(shù)字,表示參與關(guān)聯(lián)對象的個(gè)數(shù)教師書1+2021/8/17117對象模型二元關(guān)聯(lián)關(guān)系的討論教師書1+2021/8/1744對象模型鏈屬性鏈屬性是指關(guān)聯(lián)鏈的性質(zhì)例如:文件與用戶之間是多對多的關(guān)系,但每個(gè)用戶對不同文件擁有不同的訪問權(quán)限,訪問權(quán)限是文件與用戶之間關(guān)聯(lián)鏈的屬性。文件用戶1+1+訪問權(quán)限2021/8/17118對象模型鏈屬性文件用戶1+1+2021/8/1745對象模型限定一個(gè)受限的關(guān)聯(lián)由兩個(gè)對象及一個(gè)限定詞組成。限定詞可以看作是一種特殊的鏈屬性,利用其能有效地減少關(guān)聯(lián)的階數(shù)。例如:目錄與文件通常是多對一的關(guān)系,通過文件名的限定,就成為一對一的關(guān)系目錄文件文件名2021/8/17119對象模型限定目錄文件文件名2021/8/1746對象模型發(fā)送者接受者消息連接消息連接反映了一個(gè)對象對另一個(gè)對象的處理依賴性。通常一個(gè)對象為了完成自己的任務(wù),需要借助于另一個(gè)對象提供的服務(wù)。帶箭頭2021/8/17120對象模型發(fā)送者接受者消息連接帶箭頭2021/8/17472021/8/171212021/8/17482021/8/171222021/8/1749動態(tài)模型什么是動態(tài)模型動態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),規(guī)定了對象模型中對象的合法變化序列。即對象的動態(tài)行為。用狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件、以及對象的行為(對事件的響應(yīng))。每個(gè)類的動態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。2021/8/17123動態(tài)模型什么是動態(tài)模型2021/8/1750動態(tài)模型相關(guān)術(shù)語事件:指某個(gè)時(shí)刻所發(fā)生的事情,是對引起對象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的現(xiàn)實(shí)世界中的事件的抽象。狀態(tài):指對象在其生命周期中的某個(gè)特定階段所處的某種情形。行為:指對象達(dá)到某種狀態(tài)時(shí)所做的一系列處理操作。2021/8/17124動態(tài)模型相關(guān)術(shù)語2021/8/1751動態(tài)模型表示方法狀態(tài)1DO:行為1狀態(tài)2DO:行為2初始事件事件1[條件1]結(jié)束事件2021/8/17125動態(tài)模型表示方法狀態(tài)1狀態(tài)2初始事件事件1[條件1]結(jié)束事件2021/8/171262021/8/1753功能模型什么是功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,故更直接反映了用戶對目標(biāo)系統(tǒng)的需求。表示方法功能模型也通常由一組數(shù)據(jù)流程圖表示。在面向?qū)ο蠓椒ㄖ校瑪?shù)據(jù)流程圖沒有在結(jié)構(gòu)化分析中重要,有時(shí)可以省略。2021/8/17127功能模型什么是功能模型2021/8/1754三種模型之間的關(guān)系三種模型之間的關(guān)系三種模型分別從三個(gè)不同側(cè)面描述了所要開發(fā)的系統(tǒng),它們相互補(bǔ)充,相互配合。對象模型定義了對象實(shí)體,是最基本的,是其它兩個(gè)模型的基礎(chǔ)。動態(tài)模型規(guī)定了什么時(shí)候做,即在何種狀態(tài)下接受了什么事情的觸發(fā)。功能模型指明了系統(tǒng)應(yīng)該“做什么”。2021/8/17128三種模型之間的關(guān)系三種模型之間的關(guān)系2021/8/1755第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治瞿壳爸饕捎肅ode和Yourdon提出的OOA建模方法,包括5個(gè)步驟:標(biāo)識對象標(biāo)識結(jié)構(gòu)標(biāo)識主題定義屬性和實(shí)例聯(lián)系定義操作和消息聯(lián)系2021/8/17129第三節(jié)面向?qū)ο蠓治雒嫦驅(qū)ο蠓治瞿壳爸饕捎肅ode和YOO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論