八年級語文上冊-第六單元-28《觀潮》-(新版)新人教版_第1頁
八年級語文上冊-第六單元-28《觀潮》-(新版)新人教版_第2頁
八年級語文上冊-第六單元-28《觀潮》-(新版)新人教版_第3頁
八年級語文上冊-第六單元-28《觀潮》-(新版)新人教版_第4頁
八年級語文上冊-第六單元-28《觀潮》-(新版)新人教版_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2024年4月1日廣東工業(yè)大學計算機學院1軟件工程

SoftwareEngineering

2024年4月1日廣東工業(yè)大學計算機學院1軟件工程

Soft2024/4/1廣東工業(yè)大學計算機學院2第7章面向?qū)ο蠓椒ǜ耪摫菊聝?nèi)容:7.1面向?qū)ο蠛喗?.2面向?qū)ο蟮南嚓P(guān)概念7.3鏈接與關(guān)聯(lián)7.4構(gòu)造分組2024/4/1廣東工業(yè)大學計算機學院2第7章面向?qū)ο蠓椒?024/4/1廣東工業(yè)大學計算機學院3第7章面向?qū)ο蠓椒ǜ耪撁嫦驅(qū)ο蠓椒ǖ幕舅枷胧菑默F(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能地運用人類的自然思維方式。面向?qū)ο箝_發(fā)是現(xiàn)實世界中以抽象為基礎(chǔ)的軟件思維的一種嶄新方式?!伴_發(fā)”的含義延伸至軟件生命周期的前期部分:分析、設(shè)計和實現(xiàn)。本章介紹面向?qū)ο蠓椒ǖ闹饕拍睿▽ο?、類、屬性、方法、封裝等,并將介紹建立的對象之間、類之間以及對象和類之間的聯(lián)系,同時還將介紹概括和分組等相關(guān)知識。2024/4/1廣東工業(yè)大學計算機學院3第7章面向?qū)ο蠓椒?024/4/1廣東工業(yè)大學計算機學院47.1面向?qū)ο蠛喗椤懊嫦驅(qū)ο蟆笔前岩唤M相互之間沒有聯(lián)系的對象有效地集成在一起,這些對象都是將數(shù)據(jù)結(jié)構(gòu)和行為緊密地結(jié)合在一起的。通常面向?qū)ο蠓椒ㄖ辽侔膫€方面:標識、分類、多態(tài)和繼承。通過將抽象、封裝和模塊結(jié)合在一起的方法,從而使面向?qū)ο蟮乃枷胴灤┯谡麄€軟件開發(fā)生命周期中。2024/4/1廣東工業(yè)大學計算機學院47.1面向?qū)ο蠛?024/4/1廣東工業(yè)大學計算機學院57.1.1什么是面向?qū)ο竺嫦驅(qū)ο蠓椒ǖ幕舅枷胧菑默F(xiàn)實世界中客觀存在的事物(即對象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能地運用人類的自然思維方式。開發(fā)一個軟件是為了解決某些問題,這些問題所涉及的業(yè)務范圍稱作該軟件的問題域。面向?qū)ο蠓椒◤娬{(diào)直接以問題域(客觀世界)中的事物為中心來思考問題、認識問題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象地表示為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位。2024/4/1廣東工業(yè)大學計算機學院57.1.1什么是2024/4/1廣東工業(yè)大學計算機學院6具體地講,面向?qū)ο蠓椒ㄓ幸韵乱恍┲饕攸c:(1)從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對象作為對這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位。(2)事物的靜態(tài)特征(即可能用一些數(shù)據(jù)來表達的特征)用對象的屬性表示,事物的動態(tài)特征(即事物的行為)用對象的服務表示。(3)對象的屬性與服務結(jié)合為一體,成為一個獨立的實體,對外屏蔽其內(nèi)部細節(jié)(稱作封裝)。(4)對事物進行分類。把具有相同屬性和服務的對象歸為一類,類是這些對象的抽象描述,每個對象是它的類的一個實例。2024/4/1廣東工業(yè)大學計算機學院6具體地講,面向?qū)ο蠓?024/4/1廣東工業(yè)大學計算機學院7(5)通過在不同程度上運用抽象的原則(較多或較少地忽略事物之間的差異),可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與服務,面向?qū)ο蠓椒ㄖС謱@種繼承關(guān)系的描述與實現(xiàn),從而簡化系統(tǒng)的構(gòu)造過程及其文檔。(6)復雜的對象可以用簡單的對象作為其構(gòu)成部分(稱作聚合)。(7)對象之間通過消息進行通信,以實現(xiàn)對象之間的動態(tài)聯(lián)系。(8)通過關(guān)聯(lián)表達對象之間的靜態(tài)關(guān)系。2024/4/1廣東工業(yè)大學計算機學院7(5)通過在不同程度2024/4/1廣東工業(yè)大學計算機學院8[定義7-1]:面向?qū)ο蠓椒ㄊ且环N運用對象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。面向?qū)ο蠓椒ǖ幕靖拍钆c原則、發(fā)展歷史與現(xiàn)狀以及它對改進軟件開發(fā)的重要意義等,將在以后各節(jié)中詳細介紹。2024/4/1廣東工業(yè)大學計算機學院8[定義7-1]:面向2024/4/1廣東工業(yè)大學計算機學院97.1.2面向?qū)ο蠓椒ǖ臍v史及現(xiàn)狀面向?qū)ο蠓椒ǖ哪承└拍睿梢宰匪莸?0世紀50年代人工智能的早期研究。但是人們一般把20世紀60年代由挪威計算中心開發(fā)的Simula-67語言看作面向?qū)ο笳Z言發(fā)展史上的第一個里程碑。但是直到20世紀80年代后期,SmallTalk的應用尚不夠廣泛。20世紀80年代中期到90年代,是面向?qū)ο笳Z言走向繁榮的階段。從20世紀80年代后期開始,國際上有一批論述面向?qū)ο蟮姆治雠c設(shè)計(或面向?qū)ο蟮慕Ec設(shè)計)的專著相繼問世。2024/4/1廣東工業(yè)大學計算機學院97.1.2面向?qū)?024/4/1廣東工業(yè)大學計算機學院107.2面向?qū)ο蟮南嚓P(guān)概念7.2.1對象對象是構(gòu)成世界的一個獨立單位,它具有自己的靜態(tài)特征和動態(tài)特征。靜態(tài)特征即可以用某種數(shù)據(jù)來描述的特征,動態(tài)特征即對象所表現(xiàn)的行為或?qū)ο笏哂械墓δ?。屬性和服務,是?gòu)成對象的兩個主要因素。其中屬性是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項;服務是用來描述對象動態(tài)特征(行為)的一個操作序列,也可稱為操作或方法。2024/4/1廣東工業(yè)大學計算機學院107.2面向?qū)ο?024/4/1廣東工業(yè)大學計算機學院11[定義7-2]:對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構(gòu)成系統(tǒng)的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務構(gòu)成。附屬定義:屬性:是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項。服務:是用來描述對象動態(tài)特征(行為)的一個操作序列。2024/4/1廣東工業(yè)大學計算機學院11[定義7-2]:對2024/4/1廣東工業(yè)大學計算機學院12特例:(1)有屬性,沒有服務。例如信息系統(tǒng)中的人員信息、物質(zhì)信息。(2)有服務,沒有屬性。例如操作系統(tǒng)中的屏幕中斷:disable();控制結(jié)束檢查:getclork()。2024/4/1廣東工業(yè)大學計算機學院12特例:2024/4/1廣東工業(yè)大學計算機學院13對象有如下一些基本特點:(1)以數(shù)據(jù)為中心。(2)對象是主動的。(3)實現(xiàn)了數(shù)據(jù)封裝。(4)本質(zhì)上具有并行性。(5)模塊獨立性好。2024/4/1廣東工業(yè)大學計算機學院13對象有如下一些基本2024/4/1廣東工業(yè)大學計算機學院147.2.2類人類在認識客觀世界時經(jīng)常采用的思維方法,就是把眾多的事物歸納、劃分成一些類。依據(jù)抽象的原則進行分類,即忽略事物的非本質(zhì)特征,只注意那些與當前目標有關(guān)的本質(zhì)特征,從而找出事物的共性;把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。[定義7-3]:類是具有相同屬性和服務的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務兩個主要部分。2024/4/1廣東工業(yè)大學計算機學院142024/4/1廣東工業(yè)大學計算機學院15類與對象的關(guān)系如同一個模具與用這個模具鑄造出來的鑄件之間的關(guān)系。它們的關(guān)系可以用圖7-1表示。圖7-1類與對象的關(guān)系2024/4/1廣東工業(yè)大學計算機學院15類與對象的關(guān)系如同2024/4/1廣東工業(yè)大學計算機學院16同類對象具有相同的屬性與服務,是指它們的定義形式相同,而不是說每個對象的屬性值都相同。運用抽象的原則舍棄對象的特殊性,抽取其共同性,則得到適應一批對象的類,稱這個類為一般類。在一般類的基礎(chǔ)上,如果定義一個新類時考慮其某些特殊性。則這個類是前一般類的特殊類。如果考慮若干類所具有的共同的特征,舍棄它們各自的特殊性,則得到這些類的一般類。一般類和特殊類是相對而言的,它們之間是一種真包含的關(guān)系。2024/4/1廣東工業(yè)大學計算機學院16同類對象具有相同的2024/4/1廣東工業(yè)大學計算機學院177.2.3對象圖對象圖提供了對象、類和它們相互之間聯(lián)系的建模規(guī)范化圖形表示。對象圖有兩種類型:類圖和實例圖。類圖是描述許多可能的數(shù)據(jù)實例的一種模式或模板,類圖也就是描述對象類。實例圖是描述對象之間相互關(guān)系的一種特殊的集合,實例圖也就是描述對象實例。2024/4/1廣東工業(yè)大學計算機學院177.2.3對象2024/4/1廣東工業(yè)大學計算機學院187.2.4屬性屬性是一個類中對象所具有的數(shù)據(jù)值。對每個對象實例來說,每個屬性都是一個值。一個屬性應是純數(shù)據(jù)值,而不是一個對象。與對象不同,純數(shù)據(jù)值沒有標識。屬性置于類矩形框的第二個部分,每個屬性名有可供選擇項,如類型和缺省值。

2024/4/1廣東工業(yè)大學計算機學院187.2.4屬性2024/4/1廣東工業(yè)大學計算機學院197.2.5服務(操作或方法)服務是一種功能或一種轉(zhuǎn)換,它應用于類中的對象或被類中對象使用。相同的服務可用于許多不同的類中,這樣的服務是多態(tài)的。每種服務有一個內(nèi)含參數(shù)的目標對象,該服務的行為依賴于它的目標類。一個對象“知道”它的類,并能正確實現(xiàn)該服務。一種服務可對它的目標對象添加參數(shù),這種以參數(shù)化表示的服務并不影響方法的選擇,方法僅依賴于該目標對象的類2024/4/1廣東工業(yè)大學計算機學院197.2.5服務2024/4/1廣東工業(yè)大學計算機學院20服務列置于類矩形框的第三部分,也是最低的部分,每種服務名可跟有可任選的部分,諸如參數(shù)表和結(jié)果類型。2024/4/1廣東工業(yè)大學計算機學院20服務列置于類矩形框2024/4/1廣東工業(yè)大學計算機學院217.2.6封裝封裝是面向?qū)ο蠓椒ǖ囊粋€重要原則。它有兩個涵義:第一個涵義是把對象的全部屬性和全部服務結(jié)合在一起,形成一個不可分割的獨立單位(即對象);第二個涵義也稱作“信息隱蔽”,即盡可能隱蔽對象的內(nèi)部細節(jié),對外形成一個邊界(或者說形成一道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系。[定義7-4]:封裝就是把對象的屬性、服務結(jié)合成為一個獨立的系統(tǒng)單位,并盡可能隱蔽對象的內(nèi)部細節(jié)。2024/4/1廣東工業(yè)大學計算機學院217.2.6封裝2024/4/1廣東工業(yè)大學計算機學院22封裝是一種機制,封裝的信息隱蔽作用反映了事物的相對獨立性。前面已經(jīng)討論了封裝的好處,然而封裝也有它的副作用。如果強調(diào)嚴格的封裝,則對象的任何屬性都不允許外部直接存取,因此就要增加許多沒有其他意義、只負責讀或?qū)懙姆?。這為編程工作增加了負擔,增加了運行開銷,并且使程序顯得臃腫。為了避免這一點,語言往往采取一種比較現(xiàn)實的靈活態(tài)度——允許對象有不同程度的可見性。2024/4/1廣東工業(yè)大學計算機學院22封裝是一種機制,封2024/4/1廣東工業(yè)大學計算機學院237.2.7繼承[定義7-5]:特殊類的對象擁有其一般類的全部屬性與服務,就是稱作特殊類對一般類的繼承。繼承意味著“自動地擁有”或“隱含地復制”,即特殊類中不必重新定義已在它的一般類中定義過的屬性和服務,而它卻自動地、隱含地擁有其一般類的所有屬性與服務。2024/4/1廣東工業(yè)大學計算機學院237.2.7繼承2024/4/1廣東工業(yè)大學計算機學院242024/4/1廣東工業(yè)大學計算機學院242024/4/1廣東工業(yè)大學計算機學院25下面給出用C++寫的在日期表示形式上的類繼承。ClassDATE{//用于表示亞洲日期的類DATE(intyy=0;intmm=0;intdd=0;)voideset_date(intyy,intmm,ntdd);voidget_date(int&yy,int&mm,int&dd);voidprinted();protected:intyear,month,day;}classE-DATE:publicDATE{//用于表示歐洲日期的類,繼承了用于表示亞洲日期的類

voidprinted-de();}2024/4/1廣東工業(yè)大學計算機學院25下面給出用C++寫2024/4/1廣東工業(yè)大學計算機學院26繼承關(guān)系是傳遞的。繼承具有重要的實際意義,它簡化了人們對事物的認識和描述。繼承對于軟件復用是很有益的。一個類可以是多個一般類的特殊類,它從多個一般類中繼承了屬性與服務,這種繼承模式叫作多繼承。但在實現(xiàn)時能不能做到這一點卻取決于編程語言是否支持多繼承。繼承是任何一種OOPL必須具備的功能,多繼承則未必,現(xiàn)在有許多OOPL只支持單繼承而不支持多繼承。2024/4/1廣東工業(yè)大學計算機學院26繼承關(guān)系是傳遞的。2024/4/1廣東工業(yè)大學計算機學院27所謂命名沖突是指當一個特殊類繼承了多個一般類時,如果這些一般類中的屬性或服務有彼此同名的現(xiàn)象,則當特殊類中引用這樣的屬性名或者服務名時,系統(tǒng)無法判定它的語義到底是指哪個一般類中的屬性和服務。2024/4/1廣東工業(yè)大學計算機學院27所謂命名沖突是指當2024/4/1廣東工業(yè)大學計算機學院281)“命名沖突”問題例如:Classbase{

…public:inta,b;}classde:publicbase{

…public:intb,c:}2024/4/1廣東工業(yè)大學計算機學院281)“命名沖突”問2024/4/1廣東工業(yè)大學計算機學院29voidf(){…ded;de.a=1;d.b=2;//如果改成這樣:d.base::b=2;就可以d.b=3;d.c=4;base*dp=&d;//也不行。}2024/4/1廣東工業(yè)大學計算機學院29voidf(){2024/4/1廣東工業(yè)大學計算機學院30作者是希望在單元的結(jié)果如下圖7-4所示圖7-4希望在單元的結(jié)果但實際結(jié)果是如圖7-5這樣:2024/4/1廣東工業(yè)大學計算機學院30作者是希望在單元的2024/4/1廣東工業(yè)大學計算機學院312)函數(shù)名沖突例:classbase1{public:voidshow(){cout<<i<<”\n”;}protected:inti;}2024/4/1廣東工業(yè)大學計算機學院312)函數(shù)名沖突2024/4/1廣東工業(yè)大學計算機學院32classbase2{public:voidshow(){cout<<j<<”\n”;}protected:intj;}2024/4/1廣東工業(yè)大學計算機學院32classbas2024/4/1廣東工業(yè)大學計算機學院33classde:publicbase1,publicbase2{voidset(intx,inty){i=x;j=y;}}main(){deobj;obj.set(5,7);obj.show();//有二義性obj.base1::show();obj.base2::show();return;}2024/4/1廣東工業(yè)大學計算機學院33classde:2024/4/1廣東工業(yè)大學計算機學院34解決的辦法有兩種:(1)不允許多繼承結(jié)構(gòu)中的各個一般類的屬性及服務取相同的名字,這會為開發(fā)者帶來一些不便。(2)由OOPL提供一種更名機制,使程序可以在特殊類中更換從各個一般類繼承來的屬性或服務的名字。2024/4/1廣東工業(yè)大學計算機學院34解決的辦法有兩種:2024/4/1廣東工業(yè)大學計算機學院357.2.8多重繼承多重繼承允許一個類有多個超類,并從多個超類中繼承屬性、操作和關(guān)聯(lián)。這些混合信息來自于兩個或多個原始信息。1.有不同鑒別器的多重繼承在圖7-4中,人可以通過管理狀態(tài)的基本前提(經(jīng)理或職員)和雇傭狀態(tài)(全部工作時間或部分工作時間的職員)來判別這個人是否是經(jīng)理或他是不是獨立的雇傭狀態(tài)。四個子類盡可能把管理狀態(tài)和雇傭狀態(tài)組合在一起,圖中表示了一個全部工作時間的職員情況。2024/4/1廣東工業(yè)大學計算機學院357.2.8多重2024/4/1廣東工業(yè)大學計算機學院36圖7-4多重繼承2024/4/1廣東工業(yè)大學計算機學院36圖7-4多重繼2024/4/1廣東工業(yè)大學計算機學院372.無公共祖先的多重繼承多重繼承,甚至有時超類也可能沒有公共祖先,這通常發(fā)生在軟件庫的混合功能方面。當軟件庫重疊或抵觸時,多重繼承就成問題了圖7-5對象多重繼承

2024/4/1廣東工業(yè)大學計算機學院372.無公共祖先2024/4/1廣東工業(yè)大學計算機學院383.多重繼承的工作環(huán)境用角色的聚合授權(quán)。帶多個獨立概括的超類能重構(gòu)成一個其元素各表示一個概括的聚合。這種方法是通過一組構(gòu)成擴展對象的對象來替代確定的單一對象。通過該聚合的繼承操作不是自動的,必須由連接類出發(fā)傳給合適的成員。繼承最重要的類并授權(quán)其余的類。構(gòu)造了它本身的是最重要超類的子類的一種連接類。這個連接類作為余下的超類的聚合對待,它們的操作作為前面的替換授權(quán)。這種方法通過一個概括提供了標識和繼承。2024/4/1廣東工業(yè)大學計算機學院383.多重繼承的2024/4/1廣東工業(yè)大學計算機學院39嵌套概括分解技術(shù)分割一個子類用關(guān)聯(lián)替代概括2024/4/1廣東工業(yè)大學計算機學院39嵌套概括2024/4/1廣東工業(yè)大學計算機學院40為選擇最好的工作環(huán)境必須考慮以下一些問題:(1)如子類有好幾個同樣重要的超類,那么最好用“授權(quán)方法”并保持該模型的對稱性。(2)如某一超類明顯地處于支配地位,而其他的類處于相對次要地位時,用單一繼承和授權(quán)方法來實現(xiàn)多重繼承是最佳選擇。(3)如組合數(shù)目少,則可考慮嵌套概括;如果組合數(shù)目多,則避免使用嵌套概括。(4)如一超類比其他的超類有更多的特征,或明顯的是執(zhí)行的瓶頸,則通過該路徑來保持繼承。2024/4/1廣東工業(yè)大學計算機學院40為選擇最好的工作環(huán)2024/4/1廣東工業(yè)大學計算機學院41(5)如選擇嵌套概括,那么首先要考慮的是最重要的分解因素,然后考慮第二個重要的分解因素。(6)如果需要復制大量代碼,那就盡量避免用嵌套概括。(7)要維護嚴格標識的重要性,只有嵌套概括才能保證這一點。(8)2024/4/1廣東工業(yè)大學計算機學院41(5)如選擇嵌套概2024/4/1廣東工業(yè)大學計算機學院42要注意的問題:避免太多層次的繼承例如:2024/4/1廣東工業(yè)大學計算機學院42要注意的問題:避免2024/4/1廣東工業(yè)大學計算機學院43一般化后的情況:2024/4/1廣東工業(yè)大學計算機學院43一般化后2024/4/1廣東工業(yè)大學計算機學院44問題討論:1、當對象類e出現(xiàn)要修改的問題時,而要修改的根源卻不在對象類e中。而是存在在被其繼承的上源對象中。2、要查找到修改源,就要遍歷這棵“樹”。3、現(xiàn)在沒有這樣的查找修改源的軟件工具。4、人工遍歷。修改源如果在c、d、f、g、h、j或者an這些對象類中,或者在這些對象類附近,遍歷工程就容易。如果是在j1、i1或者雜其附近,那么遍歷工程就大了。結(jié)論:繼承應選擇小于等于在3、4層內(nèi)。2024/4/1廣東工業(yè)大學計算機學院44問題討論:1、當對2024/4/1廣東工業(yè)大學計算機學院457.2.9消息在OO方法中把向?qū)ο蟀l(fā)出的服務請求稱作消息。通過消息進行對象之間的通信,也是OO方法的一個原則,它與封裝的原則有密切的關(guān)系。OO方法中對消息的定義是:[定義7-6]:消息就是向?qū)ο蟀l(fā)出的服務請求,它應該含有下述信息:提供服務的對象標識、服務標識、輸入信息和回答信息。內(nèi)容:提供服務的對象標識、服務標識、輸入信息和回答信息。2024/4/1廣東工業(yè)大學計算機學院457.2.9消息2024/4/1廣東工業(yè)大學計算機學院46消息的格式,這種規(guī)定稱作消息協(xié)議。消息的接收者是提供服務的對象。在設(shè)計時,它對外提供的每個服務應規(guī)定消息的格式,這種規(guī)定稱作消息協(xié)議。2024/4/1廣東工業(yè)大學計算機學院46消息的格式,這種規(guī)2024/4/1廣東工業(yè)大學計算機學院47作為OO方法中的一個基本概念,采用“消息”這個術(shù)語有以下好處:(1)更接近人們?nèi)粘K季S所采用的術(shù)語。(2)其涵義更具有一般性,而不限制采用何種實現(xiàn)技術(shù)。2024/4/1廣東工業(yè)大學計算機學院47作為OO方法中的一2024/4/1廣東工業(yè)大學計算機學院487.2.10結(jié)構(gòu)與連接系統(tǒng)開發(fā)者需認識并描述對象之間的以下幾種關(guān)系:(1)對象的分類關(guān)系。(2)對象之間的組成關(guān)系。(3)對象屬性之間的靜態(tài)聯(lián)系。(4)對象行為之間的動態(tài)聯(lián)系。2024/4/1廣東工業(yè)大學計算機學院487.2.10結(jié)2024/4/1廣東工業(yè)大學計算機學院491.一般-特殊結(jié)構(gòu)一般-特殊結(jié)構(gòu)又稱作分類結(jié)構(gòu)(ClassificationStructure),它是由一組具有一般-特殊關(guān)系(繼承關(guān)系)的類所組成的結(jié)構(gòu)。它是一個以類為結(jié)點,以繼承關(guān)系為邊的連通有向圖。2024/4/1廣東工業(yè)大學計算機學院491.一般-特殊2024/4/1廣東工業(yè)大學計算機學院50圖7-6一般-特殊結(jié)構(gòu)2024/4/1廣東工業(yè)大學計算機學院50圖7-6一般-2024/4/1廣東工業(yè)大學計算機學院512.整體-部分結(jié)構(gòu)整體-部分結(jié)構(gòu)又稱作組裝結(jié)構(gòu)(CompositionStructure),它描述對象之間的組成關(guān)系圖7-7整體-部分結(jié)構(gòu)

2024/4/1廣東工業(yè)大學計算機學院512.整體-部分2024/4/1廣東工業(yè)大學計算機學院523.實例連接實例連接反映對象與對象之間的靜態(tài)聯(lián)系。4.消息連接消息連接描述對象之間的動態(tài)聯(lián)系2024/4/1廣東工業(yè)大學計算機學院523.實例連接2024/4/1廣東工業(yè)大學計算機學院537.2.11多態(tài)性對象的多態(tài)性是指在一般類中定義的屬性或服務被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為支持多態(tài)性的實現(xiàn)的語言應具備的功能是:重載——在特殊類中對繼承來的屬性或服務進行重新定義。動態(tài)綁定——在運行時根據(jù)對象接收的消息動態(tài)地確定要連接哪一段服務代碼。

2024/4/1廣東工業(yè)大學計算機學院537.2.11多2024/4/1廣東工業(yè)大學計算機學院54重載——在特殊中對繼承來的屬性或服務進行重新定義。例如:…#include<…>…intabs(intx){…}2024/4/1廣東工業(yè)大學計算機學院54重載——在特殊中對2024/4/1廣東工業(yè)大學計算機學院552024/4/1廣東工業(yè)大學計算機學院552024/4/1廣東工業(yè)大學計算機學院56doubleabs(doublex){…}longabs(longx){…}2024/4/1廣東工業(yè)大學計算機學院56doubleab2024/4/1廣東工業(yè)大學計算機學院57Main(){cout<<abs(-5)<<”\n”;cout<<abs(-5L)<<”\n”;cout<<abs(3.14)<<”\n”;return;}2024/4/1廣東工業(yè)大學計算機學院57Main()2024/4/1廣東工業(yè)大學計算機學院58動態(tài)綁定例如:#include“…”//虛函數(shù)

…classmen{//基類public:virtualvoidans(){cout<<”Iamamember”<<”\n”;return;}}2024/4/1廣東工業(yè)大學計算機學院58動態(tài)綁定例如:2024/4/1廣東工業(yè)大學計算機學院59classte:publicmen{//繼承類1public:virtualvoidans(){cout<<”Iamateacher”<<”\n”;return;}}2024/4/1廣東工業(yè)大學計算機學院59classte:2024/4/1廣東工業(yè)大學計算機學院60classst:publicmen{//繼承類2public:virtualvoidans(){cout<<”Iamastudent”<<”\n”;return;}}2024/4/1廣東工業(yè)大學計算機學院60classst:2024/4/1廣東工業(yè)大學計算機學院61main(){menmember;//定義基類的對象Teteacher;//定義一個繼承類的對象Ststudent;//定義另一個繼承類類的對象men*who;//定義指向基類對象的指針who=&member;//訪問基類中的函數(shù)who->ans();who=&teacher;//訪問繼承類中的函數(shù)who->ans();who=&student;//訪問繼承類中的函數(shù)who->ans();return0;}2024/4/1廣東工業(yè)大學計算機學院61main(){2024/4/1廣東工業(yè)大學計算機學院62得出結(jié)果:IamamemberIamateacherIamastudent將基類mem定義的ans()前的virtual保留字刪除,輸出結(jié)果變?yōu)椋篒amamemberIamamemberIamamember2024/4/1廣東工業(yè)大學計算機學院62得出結(jié)果:Iam2024/4/1廣東工業(yè)大學計算機學院63類屬—服務參量的類型可以是參數(shù)化的。例:定義鏈表類屬類GLIST的界面Template<classELE>2024/4/1廣東工業(yè)大學計算機學院63類屬—服務參量的類2024/4/1廣東工業(yè)大學計算機學院64Classle{Public:List(intlenth)//構(gòu)造{v=newELE[LENTH];:}≈list()//析構(gòu){……}2024/4/1廣東工業(yè)大學計算機學院64Classle{2024/4/1廣東工業(yè)大學計算機學院65ELE—operator{}(intindex){:……}Private:ELE*V;…………}2024/4/1廣東工業(yè)大學計算機學院65ELE—opera2024/4/1廣東工業(yè)大學計算機學院667.2.12永久對象所謂永久對象,就是生存期可以超越程序的執(zhí)行時間而長期存在的對象。永久對象的實現(xiàn)需要有較強的技術(shù)支持。它需要一個能夠描述和處理永久對象的編程語言。2024/4/1廣東工業(yè)大學計算機學院667.2.12永2024/4/1廣東工業(yè)大學計算機學院677.2.13主動對象在OOD階段進行任務管理部分的設(shè)計時用主動對象表示每個任務。其定義是:主動對象是一組屬性和一組服務的封裝體,其中至少有一個服務不需要接收消息就能主動執(zhí)行。2024/4/1廣東工業(yè)大學計算機學院677.2.13主2024/4/1廣東工業(yè)大學計算機學院687.2.14對象類的表示方法在圖7-8中小結(jié)了類的對象模型表示。圖7-8類的對象模型

2024/4/1廣東工業(yè)大學計算機學院687.2.14對2024/4/1廣東工業(yè)大學計算機學院697.3鏈接與關(guān)聯(lián)7.3.1一般概念鏈接是在對象實例之間的一種物理或概念連接關(guān)聯(lián)描述了具有公共結(jié)構(gòu)和共同語義的鏈接的組合關(guān)聯(lián)本來就是雙向的一種鏈接表示兩個或兩個以上對象之間的聯(lián)系關(guān)聯(lián)可以是二元、三元或更高階的2024/4/1廣東工業(yè)大學計算機學院697.3鏈接與關(guān)2024/4/1廣東工業(yè)大學計算機學院707.3.2重數(shù)重數(shù)指定一個類的多少個實例與另一個關(guān)聯(lián)類的單一實例有關(guān)重數(shù)依賴于假定和如何定義問題的邊界最重要的重數(shù)差別是“一”和“多”之間2024/4/1廣東工業(yè)大學計算機學院707.3.2重數(shù)2024/4/1廣東工業(yè)大學計算機學院717.3.3關(guān)聯(lián)的重要性大多數(shù)面向?qū)ο笳Z言用對象指針實現(xiàn)關(guān)聯(lián),指針在設(shè)計的最后階段,被看作是為實現(xiàn)優(yōu)化而引入的,它也可能直接實現(xiàn)關(guān)聯(lián)對象,但在實現(xiàn)期間,關(guān)聯(lián)對象的使用的確是一個設(shè)計的策略2024/4/1廣東工業(yè)大學計算機學院717.3.3關(guān)聯(lián)2024/4/1廣東工業(yè)大學計算機學院727.3.4三元關(guān)聯(lián)三元關(guān)聯(lián)是具有三個角色的關(guān)聯(lián),不能重新聲明為二元關(guān)聯(lián)三元關(guān)聯(lián)可以有鏈接屬性,或者作為關(guān)聯(lián)類處理,如圖7-9所示圖7-9多元關(guān)聯(lián)

2024/4/1廣東工業(yè)大學計算機學院727.3.4三元2024/4/1廣東工業(yè)大學計算機學院737.3.5關(guān)聯(lián)的候選關(guān)鍵字在圖7-9中,在三元關(guān)聯(lián)類中或下一個菱形中沒有重數(shù)存在,雖然期望對三元關(guān)聯(lián)用重數(shù)表示,但最好還是用候選關(guān)鍵字,以避免混淆。一個關(guān)聯(lián)的候選關(guān)鍵字是角色的組合,并在一個關(guān)聯(lián)內(nèi)惟一標識鏈接的資格符。因為角色和資格符是用屬性來實現(xiàn)的,所以對類和關(guān)聯(lián)都使用術(shù)語“候選關(guān)鍵字”。在候選關(guān)鍵字中角色和資格符的集合必須是最小的2024/4/1廣東工業(yè)大學計算機學院737.3.5關(guān)聯(lián)2024/4/1廣東工業(yè)大學計算機學院747.3.6異或關(guān)聯(lián)異或關(guān)聯(lián)是從一個類起源的關(guān)聯(lián)組的數(shù)目,這個類稱為原始類。原始類中每個對象嚴格地應用于一個異或關(guān)聯(lián),異或關(guān)聯(lián)與目標類的原始類有關(guān)。一個單獨關(guān)于目標類的異或關(guān)聯(lián)是可選的,但該異或關(guān)聯(lián)語義要求一個目標對象被每個原始對象所選取。一個異或關(guān)聯(lián)可以僅屬于一個組。2024/4/1廣東工業(yè)大學計算機學院747.3.6異或2024/4/1廣東工業(yè)大學計算機學院757.3.7資格關(guān)聯(lián)資格重疊(方式)是一系列連續(xù)的資格關(guān)聯(lián)。資格重疊在表示遞增的具體對象的累積處碰到。組合資格符是由兩個或多個屬性組成的,這些屬性改善了關(guān)聯(lián)重數(shù)的組合。該屬性是由組合資格符和“與”一起所組成的。圖7-10公司與人資格關(guān)聯(lián)

2024/4/1廣東工業(yè)大學計算機學院757.3.7資格2024/4/1廣東工業(yè)

溫馨提示

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

評論

0/150

提交評論