第二章面向?qū)ο蠓椒▽W(xué)導(dǎo)論_第1頁(yè)
第二章面向?qū)ο蠓椒▽W(xué)導(dǎo)論_第2頁(yè)
第二章面向?qū)ο蠓椒▽W(xué)導(dǎo)論_第3頁(yè)
第二章面向?qū)ο蠓椒▽W(xué)導(dǎo)論_第4頁(yè)
第二章面向?qū)ο蠓椒▽W(xué)導(dǎo)論_第5頁(yè)
已閱讀5頁(yè),還剩56頁(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ū)ο蠓椒▽W(xué)導(dǎo)論本章概要

傳統(tǒng)的軟件工程方法學(xué)曾經(jīng)給軟件產(chǎn)業(yè)帶來(lái)巨大進(jìn)步,部分地緩解了軟件危機(jī),使用這種方法學(xué)開發(fā)的許多中、小規(guī)模軟件項(xiàng)目都獲得了成功。但是,人們也注意到當(dāng)把這種方法學(xué)應(yīng)用于大型軟件產(chǎn)品的開發(fā)時(shí),似乎很少取得成功。在20世紀(jì)60年代后期出現(xiàn)的面向?qū)ο缶幊陶Z(yǔ)言Simula-67中首次引入了類和對(duì)象的概念,自20世紀(jì)80年代中期起,人們開始注重面向?qū)ο蠓治龊驮O(shè)計(jì)的研究,逐步形成了面向?qū)ο蠓椒▽W(xué)。到了20世紀(jì)90年代,面向?qū)ο蠓椒▽W(xué)已經(jīng)成為人們?cè)陂_發(fā)軟件時(shí)首選的范型。面向?qū)ο蠹夹g(shù)已成為當(dāng)前最好的軟件開發(fā)技術(shù)。2.1面向?qū)ο蠓椒▽W(xué)概述2.1.1面向?qū)ο蠓椒▽W(xué)導(dǎo)論

○面向過(guò)程程序設(shè)計(jì):根據(jù)計(jì)算機(jī)的要求,圍繞算法進(jìn)行程序設(shè)計(jì)。開發(fā)軟件的方法與過(guò)程不同于人類認(rèn)識(shí)世界解決問(wèn)題時(shí)習(xí)慣采用的方法與過(guò)程,因此使得描述問(wèn)題的問(wèn)題空間與實(shí)現(xiàn)解法的解空間在結(jié)構(gòu)上明顯不同。人類習(xí)慣的解決問(wèn)題的方法

讓我們觀察一個(gè)日常生活中常見的事例:一位廚師的頭發(fā)長(zhǎng)了需要理發(fā),他會(huì)走進(jìn)理發(fā)館,告訴理發(fā)師要理什么發(fā)式。也就是說(shuō),為了解決頭發(fā)過(guò)長(zhǎng)的問(wèn)題,廚師只需向理發(fā)師提出要求,告訴他“做什么”(即,理什么發(fā)式),并不需要告訴理發(fā)師“怎樣做”,理發(fā)師自己知道第一步做什么,第二步做什么。類似地,理發(fā)師肚子餓了,只需走進(jìn)餐館點(diǎn)好自己要吃的飯菜,廚師自己知道該怎樣做,并不需要顧客告訴他做菜的具體步驟,事實(shí)上,顧客無(wú)需知道做菜的具體步驟。

面向?qū)ο蟪绦蛟O(shè)計(jì)方法模擬人類習(xí)慣的解題方法,用對(duì)象分解取代功能分解,也就是把程序分解成許多對(duì)象,不同對(duì)象之間通過(guò)發(fā)消息向?qū)Ψ教岢龇?wù)要求,接受消息的對(duì)象主動(dòng)完成指定功能,程序中的所有對(duì)象分工協(xié)作,共同完成整個(gè)程序的功能。面向?qū)ο蟪绦蛟O(shè)計(jì)方法模擬人類習(xí)慣2.1.2面向?qū)ο蠓椒ǜ攀?/p>

面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過(guò)程盡可能接近人類認(rèn)識(shí)世界解決問(wèn)題的方法與過(guò)程,也就是使描述問(wèn)題的問(wèn)題空間(也稱為問(wèn)題域)與實(shí)現(xiàn)解法的解空間(也稱求解域)在結(jié)構(gòu)上盡可能一致。面向?qū)ο蠓椒ň哂邢率?個(gè)要點(diǎn):

⑴認(rèn)為客觀世界是由各種對(duì)象組成的,任何事物都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì)象以某種方式組合而成。⑵把所有對(duì)象都劃分成各種對(duì)象類(簡(jiǎn)稱為類,Class),每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。⑶按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。⑷對(duì)象彼此之間僅能通過(guò)傳遞消息互相聯(lián)系。2.1.3面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)⑴與人類習(xí)慣的思維方法比較一致面向?qū)ο蠓椒▽W(xué)的基本原則是按照人們習(xí)慣的思維方式建成立問(wèn)題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)。面向?qū)ο蟮能浖到y(tǒng)中廣泛使用的對(duì)象,是對(duì)客觀世界中實(shí)體的抽象。⑵穩(wěn)定性好面向?qū)ο蠓椒ɑ跇?gòu)造問(wèn)題領(lǐng)域的對(duì)象模型,以對(duì)象為中心構(gòu)造軟件系統(tǒng)。它的基本作法是用對(duì)象模擬問(wèn)題領(lǐng)域中的實(shí)體,以對(duì)象間的聯(lián)系刻畫實(shí)體間的聯(lián)系。因此,以對(duì)象為中心構(gòu)造的軟件系統(tǒng)也是比較穩(wěn)定的。⑶可重用性好面向?qū)ο蟮能浖夹g(shù)在利用可重用的軟件成分構(gòu)造新的軟件系統(tǒng)時(shí),有很大的靈活性。其中,有兩種方法可以重復(fù)使用一個(gè)對(duì)象類:一種方法是創(chuàng)建該類的實(shí)例,從而直接使用它;另一種方法是從它派生出一個(gè)滿足當(dāng)前需要的新類。⑷較易開發(fā)大型軟件產(chǎn)品⑸可維護(hù)性好⑹面向?qū)ο筮€有如下突出優(yōu)點(diǎn):①面向?qū)ο筌浖€(wěn)定性比較好;②面向?qū)ο蟮能浖容^容易修改;③面向?qū)ο蟮能浖容^容易理解;④易于測(cè)試和調(diào)試。2.1.4噴泉模型

噴泉模型體現(xiàn)了面向?qū)ο蠓椒ㄋ逃械牡蜔o(wú)間隙的特征。迭代是軟件開發(fā)過(guò)程中普遍存在的一種內(nèi)在屬性。即,軟件開發(fā)活動(dòng)需多次重復(fù),每次重復(fù)都從分析開始,依次進(jìn)行設(shè)計(jì)、實(shí)現(xiàn),逐漸細(xì)化,演化出最終系統(tǒng)。圖2.1 噴泉模型2.2面向?qū)ο蟮母拍?.2.1對(duì)象在應(yīng)用領(lǐng)域中有意義的,與所要解決的問(wèn)題有關(guān)系的任何事物都可以作為對(duì)象(Object),它既可以是具體的物理實(shí)體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。例如,一名職工、一家公司、一個(gè)窗口、一座圖書館、一本圖書、貸款、借款等等,都可以作為一個(gè)對(duì)象??傊瑢?duì)象是對(duì)問(wèn)題域中某個(gè)實(shí)體的抽象,設(shè)立某個(gè)對(duì)象就反映了軟件系統(tǒng)具有保存有關(guān)它的信息并且與它進(jìn)行交互的能力。

面向?qū)ο蠓椒▽W(xué)中的對(duì)象:是由描述該對(duì)象屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。對(duì)象可以作的操作表示它的動(dòng)態(tài)行為,通常稱為服務(wù)或方法。對(duì)象的形象表示(舉例)

一個(gè)對(duì)象很像一臺(tái)錄音機(jī)。當(dāng)在軟件中使用一個(gè)對(duì)象的時(shí)候,只能通過(guò)對(duì)象與外界的界面來(lái)操作它。對(duì)象與外界的界面也就是該對(duì)象向公眾開放的操作,例如,C++語(yǔ)言中對(duì)象的公有的(Public)成員函數(shù)。一個(gè)對(duì)象好象是一個(gè)黑盒子,表示它內(nèi)部狀態(tài)的數(shù)據(jù)和實(shí)現(xiàn)各個(gè)操作的代碼及局部數(shù)據(jù),都被封裝在這個(gè)黑盒子內(nèi)部,在外面是看不見的,更不能從外面去訪問(wèn)或修改這些數(shù)據(jù)或代碼。對(duì)象的形象表示:圖2.2對(duì)象的形象表示對(duì)象的定義

人們從不同角度給出對(duì)象的不同定義:

1、定義1:對(duì)象是具有相同狀態(tài)的一組操作的集合。

2、定義2:對(duì)象是對(duì)屬性值和操作的封裝。

3、定義3:對(duì)象=〈ID,MS,DS,MI〉

其中,ID是對(duì)象的標(biāo)識(shí)或名字,MS是對(duì)象中的操作集合,DS是對(duì)象的數(shù)據(jù)結(jié)構(gòu),MI是對(duì)象受理的消息名集合(即對(duì)外接口),注意:這個(gè)定義是一個(gè)形式化的定義。

總之,對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個(gè)封裝體有可以唯一地標(biāo)識(shí)它的名字,而且向外界提供一組服務(wù)(即公有的操作)。對(duì)象中的數(shù)據(jù)表示對(duì)象的狀態(tài),一個(gè)對(duì)象的狀態(tài)只能由該對(duì)象本身的操作來(lái)改變。對(duì)象的特點(diǎn)⒈以數(shù)據(jù)為中心,操作是為數(shù)據(jù)服務(wù)的。⒉對(duì)象是主動(dòng)的,為了完成某個(gè)操作,不能從外部直接加工它的私有數(shù)據(jù),而是必須通過(guò)它的公有接口向?qū)ο蟀l(fā)消息,請(qǐng)求它執(zhí)行它的某個(gè)操作,處理它的私有數(shù)據(jù)。(舉例:廚師與理發(fā)匠)。⒊實(shí)現(xiàn)了數(shù)據(jù)封裝。對(duì)象好像是一只黑盒子,它的私的數(shù)據(jù)完全被封裝在盒子內(nèi)部,對(duì)外是隱藏的、不可見的,對(duì)私有數(shù)據(jù)的訪問(wèn)或處理只能通過(guò)公有的操作進(jìn)行。抽象數(shù)據(jù)類型的概念,無(wú)須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實(shí)現(xiàn)操作的算法。

⒋本質(zhì)上具有并行性。不同對(duì)象各自獨(dú)立地處理自身的數(shù)據(jù),彼此通過(guò)發(fā)消息傳遞信息完成通信。因此,對(duì)于不同的對(duì)象來(lái)說(shuō),本質(zhì)上具有并行工作的屬性。⒌模塊獨(dú)立性好。對(duì)象是面向?qū)ο蟮能浖幕灸K。2.2.2其他概念⒈類(class)“類”——就是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義,也就是說(shuō),類是對(duì)具有相同屬性和行為的一個(gè)或多個(gè)對(duì)象的描述。例如:張三、李四、王五等,雖說(shuō)每個(gè)人職業(yè)、性格、愛好、特長(zhǎng)等等各有不同。但是,他們的基本特征是相似的,都是黃皮膚、黑頭發(fā)、黑眼睛,于是人們把他們統(tǒng)稱為“中國(guó)人”。⒉實(shí)例(instance)“實(shí)例”是由某個(gè)特定的類所描述的一個(gè)具體的對(duì)象?!皩?duì)象”這個(gè)術(shù)語(yǔ),既可以指一個(gè)具體的對(duì)象,也可以泛指一般的對(duì)象,而“實(shí)例”這個(gè)術(shù)語(yǔ),必然是指一個(gè)具體的對(duì)象。

C++中,要定義一個(gè)對(duì)象或?qū)嵗仨毾冉⒁粋€(gè)這類對(duì)象的類。⒊消息(message):要求某個(gè)對(duì)象執(zhí)行其中某個(gè)操作的規(guī)格的說(shuō)明,一個(gè)消息由下述三部分組成:⑴接收消息的對(duì)象;⑵消息選擇符(也稱為消息名);⑶零個(gè)或多個(gè)變?cè)?。例如:MyCircle.Show(GREEN);其中:MyCircle是Circle類的對(duì)象,也是Circle類的一個(gè)實(shí)例。

Show是消息選擇符(即消息名);

GREEN是消息的變?cè)?。⒋方法(method)方法,就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。在C++語(yǔ)言中把方法稱為成員函數(shù)。通常,一個(gè)函數(shù)對(duì)應(yīng)一個(gè)操作,實(shí)現(xiàn)一個(gè)功能。例如:為了MYCircle這個(gè)對(duì)象能夠顯示一個(gè)圓,在Circle類中必須定義成員函數(shù)Show(intcolor)。⒌屬性(attribute)屬性,就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象。例如:Circle類中定義代表圓心坐標(biāo)、半徑、顏色等屬性。在C++語(yǔ)言中把屬性稱為數(shù)據(jù)成員。⒍封裝性(encapsulation)從字面上理解,所謂封裝就是把某個(gè)事物包起來(lái),使外界不知道該事物的具體內(nèi)容把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來(lái)放在對(duì)象內(nèi)部。使用一個(gè)對(duì)象的時(shí)候,只需知道它向外界提供的接口形式而無(wú)須知道它的數(shù)據(jù)結(jié)構(gòu)細(xì)節(jié)和實(shí)現(xiàn)操作的算法。實(shí)現(xiàn)封裝的條件:⑴有一個(gè)清楚的邊界。⑵有確定的接口(這些接口就是對(duì)象可以接受的消息,用戶只能通過(guò)向?qū)ο蟀l(fā)送消息來(lái)使用它)。⑶受保護(hù)的內(nèi)部實(shí)現(xiàn)。⒎繼承(inheritance)繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。(舉例:父與子)繼承具有傳遞性,如果類C繼承類B,類B繼承類A,則類C繼承類A。一個(gè)類除了具有該類所描述的性質(zhì)外,還具有類等級(jí)中該類上層全部基類描述的一切性質(zhì)。繼承機(jī)制的原理圖2.4 實(shí)現(xiàn)繼承機(jī)制的原理⒏多態(tài)性(polymorphism)

多態(tài)性是指子類對(duì)象可以像父類對(duì)象那樣使用。同樣的消息既可以發(fā)送給父類對(duì)象也可以發(fā)送給子類對(duì)象。在類等級(jí)的不同層次中,相同的消息,被不同的類(屬同一簇)的對(duì)象接收,產(chǎn)生了不同的行為。在C++語(yǔ)言中,多態(tài)性是通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的。虛函數(shù)機(jī)制使得程序員能在一個(gè)類等級(jí)中使用相同函數(shù)的多個(gè)不同版本,在運(yùn)行時(shí)刻才根據(jù)接收消息的對(duì)象所屬于的類,決定到底執(zhí)行哪個(gè)特定的版本,這稱為動(dòng)態(tài)聯(lián)編,也叫滯后聯(lián)編。⒐重載(overloading)(有兩種重載)⑴函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;⑵運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。在C++語(yǔ)言中函數(shù)重載是通過(guò)靜態(tài)聯(lián)編實(shí)現(xiàn)的,也就是在編譯時(shí)根據(jù)函數(shù)變?cè)膫€(gè)數(shù)和類型,決定到底使用函數(shù)的哪個(gè)實(shí)現(xiàn)代碼;對(duì)于重載的運(yùn)算符,同樣是在編譯時(shí)根據(jù)被操作數(shù)的類型,決定使用該算符的哪種語(yǔ)義。如:cout<<“2”;表示向屏幕輸出字符串2x<<2;表示將x中的二進(jìn)制左移2位熟悉并使用類C++標(biāo)準(zhǔn)庫(kù)提供了string類,string類的屬性是一個(gè)字符串str,同名函數(shù)string是用來(lái)初始化符串,另外3個(gè)成員函數(shù)用來(lái)對(duì)屬性str進(jìn)行操作。當(dāng)定義了一個(gè)對(duì)象后,這個(gè)對(duì)象可以通過(guò)這些成員函數(shù)展現(xiàn)自身的特性。stringstrstring()find()size()substr()使用string類的例子#include<iostream>#include<string>usingnamespacestd;voidmain(){ stringstr1("Wearehere!"); stringstr2; cout<<str1[0]<<str1[11]<<","<<str1<<endl; cout<<"pleaseinputaword:"; cin>>str2;//輸入一個(gè)單詞給對(duì)象str2 cout<<"lengthofstr2is"<<str2.size()<<endl; stringnewstr=str2.substr(3,1);//從str2的第3位開始截取1個(gè)字符 cout<<"newstr="<<newstr<<endl; inti=str1.find(“are”,0);//從字符串str1的位置0開始檢索are cout<<"i="<<i<<endl;}注意:C++規(guī)定符串的計(jì)數(shù)是從零開始的2.3面向?qū)ο蠼?/p>

所謂模型,由一組圖示符號(hào)和組織這些符號(hào)的規(guī)則組成,利用它們來(lái)定義和描述問(wèn)題域中的術(shù)語(yǔ)和概念。模型是一種思考工具,利用這種工具可以把知識(shí)規(guī)范地表示出來(lái)。為了開發(fā)復(fù)雜的軟件系統(tǒng),系統(tǒng)分析員應(yīng)該抽象出目標(biāo)系統(tǒng)的特性,使用精確的表示方法構(gòu)造系統(tǒng)的模型,并在設(shè)計(jì)過(guò)程中逐漸把和實(shí)現(xiàn)有關(guān)的細(xì)節(jié)加進(jìn)模型中,直至最終用程序?qū)崿F(xiàn)模型。

用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型,它們分別是:⒈描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型(基本、核心)⒉描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型⒊描述系統(tǒng)功能的功能模型一個(gè)典型的軟件系統(tǒng)組合了上述三方面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)(對(duì)象模型),執(zhí)行操作(動(dòng)態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)。2.4對(duì)象模型

對(duì)象模型是上述三種模型中最重要、最基本、最核心的模型,是表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。

它是對(duì)模擬客觀世界實(shí)體的對(duì)象以及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。面向?qū)ο蠓椒◤?qiáng)調(diào)圍繞對(duì)象而不是圍繞功能來(lái)構(gòu)造系統(tǒng)。對(duì)象模型為建立動(dòng)態(tài)模型和功能模型,提供了實(shí)質(zhì)性的框架。2.4.1類圖的基本符號(hào)⒈定義類

UML中類的圖形符號(hào)為長(zhǎng)方形,用兩條橫線把長(zhǎng)方形分成上、中、下3個(gè)區(qū)域(下面兩個(gè)區(qū)域可省略),3個(gè)區(qū)域分別放類的名字、屬性和服務(wù)。2.4.1類圖的基本符號(hào)類命名時(shí)應(yīng)遵守以下幾條準(zhǔn)則:⑴使用標(biāo)準(zhǔn)術(shù)語(yǔ)。⑵使用具有確切含義的名詞。⑶必要時(shí)用名詞短語(yǔ)作名字??傊謶?yīng)該是富于描述性的、簡(jiǎn)潔的而且無(wú)二義性的。2.4.1類圖的基本符號(hào)⒉定義屬性UML描述屬性的語(yǔ)法格式如下: 可見性屬性名:類型名=初值{性質(zhì)串}屬性的可見性(即可訪問(wèn)性)通常有下述3種:公有的(public)用加號(hào)(+)表示 私有的(private)用減號(hào)(-)表示 和保護(hù)的(protected)用井號(hào)(#)表示 如果未聲明可見性,則表示該屬性的可見性尚未定義。例如:“學(xué)生”類的屬性“學(xué)號(hào)”,可以這樣描述:-學(xué)號(hào):String=“020010”

2.4.1類圖的基本符號(hào)⒊定義服務(wù)服務(wù)也就是操作,UML描述操作的語(yǔ)法格式如下:

可見性操作名(參數(shù)表):返回值類型{性質(zhì)串}操作可見性的定義方法與屬性相同。參數(shù)表是用逗號(hào)分隔的形式參數(shù)的序列。描述一個(gè)參數(shù)的語(yǔ)法如下:

參數(shù)名:類型名=默認(rèn)值2.4.2表示關(guān)系的符號(hào)

⒈關(guān)聯(lián)關(guān)聯(lián)表示兩個(gè)類的對(duì)象之間存在某種語(yǔ)義上的聯(lián)系。⑴普通關(guān)聯(lián) 普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)的圖示符號(hào)是連接兩個(gè)類之間的直線。圖2.6 普通關(guān)系示例2.4.2表示關(guān)系的符號(hào)⑵關(guān)聯(lián)的角色

例如:一個(gè)人與另一個(gè)人結(jié)婚,必然一個(gè)人扮演丈夫的角色,另一個(gè)人扮演妻子的角色。

圖2.7 關(guān)聯(lián)的角色2.4.2表示關(guān)系的符號(hào)⑶限定關(guān)聯(lián) 限定關(guān)聯(lián)通常用在一對(duì)多或多對(duì)多的關(guān)聯(lián)關(guān)系中,可以把模型中的重?cái)?shù)從一對(duì)多變成一對(duì)一,或從多對(duì)多簡(jiǎn)化成多對(duì)一。 例如,某操作系統(tǒng)中一個(gè)目錄下有許多文件,一個(gè)文件僅屬于一個(gè)目錄,在一個(gè)目錄內(nèi)文件名確定了惟一一個(gè)文件。

圖2.8 一個(gè)受限的關(guān)聯(lián)2.4.2表示關(guān)系的符號(hào)⑷關(guān)聯(lián)類 為了說(shuō)明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息??梢砸胍粋€(gè)關(guān)聯(lián)類來(lái)記錄這些信息。

例如,圖2.9是一個(gè)電梯系統(tǒng)的類模型,隊(duì)列就是電梯控制器類與電梯類的關(guān)聯(lián)關(guān)系上的關(guān)聯(lián)類。圖2.9關(guān)聯(lián)類示例2.4.2表示關(guān)系的符號(hào)⒉聚集 聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系。⑴共享聚集 如圖2.10所示。一般聚集和共享聚集的圖示符號(hào),都是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一個(gè)空心菱形。

圖2.10共享聚集示例2.4.2表示關(guān)系的符號(hào)⑵組合聚集圖2.11是窗口的組成,從圖上可以看出組成關(guān)系用實(shí)心棱形表示。

圖2.11組合聚集示例2.4.2表示關(guān)系的符號(hào)⒊泛化

UML中的泛化關(guān)系就是通常所說(shuō)的繼承關(guān)系,它是通用元素和具體元素之間的分類關(guān)系。 泛化可進(jìn)一步劃分成普通泛化和受限泛化。

2.4.2表示關(guān)系的符號(hào)圖2.12抽象類示例⑴普通泛化2.4.2表示關(guān)系的符號(hào)圖2.13復(fù)雜類圖示例2.4.2表示關(guān)系的符號(hào)圖2.14多重繼承示例⑵受限泛化2.4.2表示關(guān)系的符號(hào)⒋依賴和細(xì)化

⑴依賴關(guān)系 依賴關(guān)

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論