




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 面向?qū)ο蟪绦蛟O(shè)計實例面向?qū)ο蟪绦蛟O(shè)計實例6.1面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述6.2面向?qū)ο蠓椒▽W(xué)的主要優(yōu)點面向?qū)ο蠓椒▽W(xué)的主要優(yōu)點6.3面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.4面向?qū)ο竽P兔嫦驅(qū)ο竽P?.5對象模型對象模型6.6動態(tài)模型動態(tài)模型6.7功能模型功能模型6.8三種模型之間的關(guān)系三種模型之間的關(guān)系6.9小小 結(jié)結(jié)6.106.1 6.1 面向?qū)ο蟪绦蛟O(shè)計實例面向?qū)ο蟪绦蛟O(shè)計實例 6.1.1 6.1.1 用對象分解取代功能分用對象分解取代功能分解解 傳統(tǒng)的程序設(shè)計方法把精力集中于設(shè)傳統(tǒng)的程序設(shè)計方法把精力集中于設(shè)計解題算法(即處理數(shù)據(jù)的過程),因此計解題算法(即處理數(shù)據(jù)的過程),因此也
2、稱為面向過程的程序設(shè)計方法。這樣做也稱為面向過程的程序設(shè)計方法。這樣做實質(zhì)上也是在用計算機的觀點進行程序設(shè)實質(zhì)上也是在用計算機的觀點進行程序設(shè)計工作。計工作。 但是,計算機觀點與人類觀點終究有但是,計算機觀點與人類觀點終究有很大區(qū)別,面向過程的思維方式也并不符很大區(qū)別,面向過程的思維方式也并不符合人類習(xí)慣的思維方式。合人類習(xí)慣的思維方式。 由于用面向過程方法開發(fā)軟件的方法由于用面向過程方法開發(fā)軟件的方法與過程,不同于人類認識世界解決問題時與過程,不同于人類認識世界解決問題時習(xí)慣采用的方法與過程,因此使得實現(xiàn)解習(xí)慣采用的方法與過程,因此使得實現(xiàn)解法的解空間與描述問題的問題空間在結(jié)構(gòu)法的解空間與描
3、述問題的問題空間在結(jié)構(gòu)上明顯不同,這不僅增加了開發(fā)軟件的難上明顯不同,這不僅增加了開發(fā)軟件的難度,也使得所開發(fā)出的軟件難于理解。度,也使得所開發(fā)出的軟件難于理解。 面向?qū)ο蟮某绦蛟O(shè)計技術(shù)以對象面向?qū)ο蟮某绦蛟O(shè)計技術(shù)以對象(Object)(Object)為核心,用這種技術(shù)開發(fā)出的程為核心,用這種技術(shù)開發(fā)出的程序由一系列對象組成。序由一系列對象組成。 對象是對現(xiàn)實世界實體的正確抽象,對象是對現(xiàn)實世界實體的正確抽象,它是由描述內(nèi)部狀態(tài)、表示靜態(tài)屬性的數(shù)它是由描述內(nèi)部狀態(tài)、表示靜態(tài)屬性的數(shù)據(jù),以及可以對這些數(shù)據(jù)施加的操作據(jù),以及可以對這些數(shù)據(jù)施加的操作( (實現(xiàn)實現(xiàn)對象的動態(tài)行為對象的動態(tài)行為) ),
4、封裝在一起所構(gòu)成的統(tǒng),封裝在一起所構(gòu)成的統(tǒng)一體。對象之間通過傳遞消息互相通信,一體。對象之間通過傳遞消息互相通信,以模擬現(xiàn)實世界中不同實體彼此之間的聯(lián)以模擬現(xiàn)實世界中不同實體彼此之間的聯(lián)系。系。 人類習(xí)慣的解決問題的方法是使用人類習(xí)慣的解決問題的方法是使用“顧客顧客服務(wù)員服務(wù)員”的工作模式。的工作模式。 面向?qū)ο蟪绦蛟O(shè)計方法模仿人類習(xí)慣面向?qū)ο蟪绦蛟O(shè)計方法模仿人類習(xí)慣的解題方法,用對象分解取代功能分解,的解題方法,用對象分解取代功能分解,也就是把程序分解成一系列對象,每個對也就是把程序分解成一系列對象,每個對象都既有自己的數(shù)據(jù)(描述該對象所代表象都既有自己的數(shù)據(jù)(描述該對象所代表的實體的屬性)
5、,又有處理這些數(shù)據(jù)的函的實體的屬性),又有處理這些數(shù)據(jù)的函數(shù)(通常稱為服務(wù)或方法,它們實現(xiàn)該對數(shù)(通常稱為服務(wù)或方法,它們實現(xiàn)該對象應(yīng)有的行為)。象應(yīng)有的行為)。 不同對象之間通過發(fā)送消息向?qū)Ψ教岵煌瑢ο笾g通過發(fā)送消息向?qū)Ψ教岢龇?wù)要求,接受消息的對象主動完成指出服務(wù)要求,接受消息的對象主動完成指定功能提供所要求的服務(wù)。程序中所有對定功能提供所要求的服務(wù)。程序中所有對象分工協(xié)作,共同完成整個程序的功能。象分工協(xié)作,共同完成整個程序的功能。事實上,對象是組成面向?qū)ο蟪绦虻幕臼聦嵣?,對象是組成面向?qū)ο蟪绦虻幕灸K。模塊。 面向?qū)ο蟪绦蛟O(shè)計方法的提出,是軟面向?qū)ο蟪绦蛟O(shè)計方法的提出,是軟件開發(fā)
6、方法的一次革命,它代表了計算機件開發(fā)方法的一次革命,它代表了計算機程序設(shè)計的一種新穎的思維方法,是解決程序設(shè)計的一種新穎的思維方法,是解決軟件開發(fā)所面臨的困難的最有希望的方法軟件開發(fā)所面臨的困難的最有希望的方法之一。之一。 6.1.2 6.1.2 設(shè)計類等級設(shè)計類等級 這個簡單的圖形程序需要使用圓類和這個簡單的圖形程序需要使用圓類和弧類這兩類對象,也就是說,我們把該程弧類這兩類對象,也就是說,我們把該程序中的對象劃分成兩類。序中的對象劃分成兩類。圖圖6.1 6.1 圓類和弧類圓類和弧類 得到圖得到圖6.26.2所示的類等級所示的類等級圖圖6.2 6.2 簡單圖形程序的類等級簡單圖形程序的類等級
7、 6.1.3 6.1.3 定義屬性和服務(wù)定義屬性和服務(wù) 1. 1.定義屬性定義屬性 所謂定義屬性就是確定每個屬性的數(shù)所謂定義屬性就是確定每個屬性的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),同時還要確定每個屬據(jù)類型和數(shù)據(jù)結(jié)構(gòu),同時還要確定每個屬性的訪問權(quán)限。性的訪問權(quán)限。 2. 2. 定義服務(wù)定義服務(wù) 定義服務(wù)的主要任務(wù)就是設(shè)計完成每定義服務(wù)的主要任務(wù)就是設(shè)計完成每項服務(wù)功能的算法。項服務(wù)功能的算法。 6.1.4 6.1.4 用用C+C+語言實現(xiàn)語言實現(xiàn) #include #include graphics.hgraphics.h #include #include conio.hconio.h enum Boole
8、anfalse,trueenum Booleanfalse,true; class Locationclass Location protected: int X: int Y: phblic: Location(int IntiX,int InitY); int GetX( ); int GetY( ); ; class Point:public Location protected: Boolean Visible; public: Point(int InitX,int InitY); void Show( ); void Hide( ); Boolean Is Visible( );
9、; class Circle:public Point protected: int Radius; pubic; Circle(int InitX;int InitY,int InitRadius); void Show( ); void Hide( ); int GetRadius( ); ; class Arc:public Circle private: int StartAngle; int EndAngle; public: Arc(int InitX,int InitY,int InitRadius,int InitStartAngle,int InitEndAngle); vo
10、id Show( ); void Hide( ); int GetStartAngle( ); int GetEndAngle( ); ; /下面是成員函數(shù)的定義下面是成員函數(shù)的定義 Location Location(int InitX,int InitY) X=InitX; Y=InitY; int Location GetX( ) return X; int Location GetY( ) return Y; Point Point(int InitX,int IntiY):Location(InitX,InitY) Visible=false; void Point Show( )
11、Visible=true; putpixel(X,Y,getcolor( ); void Point Hide( ) Visible=false; putpixel(X,Y,getbkcolor( ); Boolean Point IsVisible( ) return Visible; Gircle Circle(int InitX,int InitY,int InitRadius):Point(InitX,InitY) Radius=InitRadius; void Circle Show( ) Visible=true; circle(X,Y,Radius); void Circle H
12、ide( ) int TempColor; TempColor=getcolor( ); Setcolor(getbkcolor( ); Visible=false; circle(X,Y,Radius); setcolor(TempColor); int Circle GetRadius( ) return Radins; Arc Arc(int InitX,int InitY,int InitRadius,int InitStartAngle,int InitEndAngle); Circle(InitX,InitY,InitRadius) StartAngle=InitStartAngl
13、e; EndAngle=InitEndAngle; void Arc Show( ) Visible=true; arc(X,Y,StartAngle,EndAngle,Radius); void Arc Hide( ) Visible=false; int TempColor; TempColor=getcolor( ); 6.2.1 6.2.1 面向?qū)ο蠓椒▽W(xué)的要面向?qū)ο蠓椒▽W(xué)的要點點 概括地說,面向?qū)ο蠓椒ň哂邢率龈爬ǖ卣f,面向?qū)ο蠓椒ň哂邢率? 4個要點。個要點。(1 1) 認為客觀世界是由各種對象組認為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對成的,任何事物都是對象,復(fù)雜
14、的對象可以由比較簡單的對象以某種方式象可以由比較簡單的對象以某種方式組合而成。組合而成。 按照這種觀點,可以認為整個世按照這種觀點,可以認為整個世界就是一個最復(fù)雜的對象。因此,面界就是一個最復(fù)雜的對象。因此,面向?qū)ο蟮能浖到y(tǒng)是由對象組成的,向?qū)ο蟮能浖到y(tǒng)是由對象組成的,軟件中的任何元素都是對象,復(fù)雜的軟件中的任何元素都是對象,復(fù)雜的軟件對象由比較簡單的對象組合而成。軟件對象由比較簡單的對象組合而成。 由此可見,面向?qū)ο蠓椒ㄓ脤ο笥纱丝梢?,面向?qū)ο蠓椒ㄓ脤ο蠓纸馊〈藗鹘y(tǒng)方法的功能分解。分解取代了傳統(tǒng)方法的功能分解。 (2 2) 把所有對象都劃分成各種把所有對象都劃分成各種對象類對象類( (
15、簡稱為類,簡稱為類,Class)Class),每個對,每個對象類都定義了一組數(shù)據(jù)和一組方法。象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。因此,每當(dāng)建立該對象的狀態(tài)信息。因此,每當(dāng)建立該對象類的一個新實例時,就按照類中對象類的一個新實例時,就按照類中對數(shù)據(jù)的定義為這個新對象生成一組專數(shù)據(jù)的定義為這個新對象生成一組專用的數(shù)據(jù),以便描述該對象用的數(shù)據(jù),以便描述該對象 獨特的屬性值。例如,熒光屏上獨特的屬性值。例如,熒光屏上不同位置顯示的半徑不同的幾個圓,不同位置顯示的半徑不同的幾個圓,雖然都是雖然都是CircleCircle類的對象,
16、但是,各類的對象,但是,各自都有自己專用的數(shù)據(jù),以便記錄各自都有自己專用的數(shù)據(jù),以便記錄各自的圓心位置、半徑等等。自的圓心位置、半徑等等。 類中定義的方法,是允許施加于類中定義的方法,是允許施加于該類對象上的操作,是該類所有對象該類對象上的操作,是該類所有對象共享的,并不需要為每個對象都復(fù)制共享的,并不需要為每個對象都復(fù)制操作的代碼。操作的代碼。 6.2.2 6.2.2 面向?qū)ο蟮能浖^程面向?qū)ο蟮能浖^程 一般說來,使用面向?qū)ο蠓椒▽W(xué)開發(fā)一般說來,使用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時,工作重點應(yīng)該放在生命周期中的軟件時,工作重點應(yīng)該放在生命周期中的分析階段。這種方法在開發(fā)的早期階段定分析階段。這種方
17、法在開發(fā)的早期階段定義了一系列面向問題的對象,并且在整個義了一系列面向問題的對象,并且在整個開發(fā)過程中不斷充實和擴充這些對象。開發(fā)過程中不斷充實和擴充這些對象。 迭代是軟件開發(fā)過程中普遍存在的一迭代是軟件開發(fā)過程中普遍存在的一種內(nèi)在屬性。經(jīng)驗表明,軟件過程各個階種內(nèi)在屬性。經(jīng)驗表明,軟件過程各個階段之間的迭代或一個階段內(nèi)各個工作步驟段之間的迭代或一個階段內(nèi)各個工作步驟之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)化范型中更常見,也更容易實現(xiàn)?;缎椭懈R姡哺菀讓崿F(xiàn)。 圖圖6.36.3所示的噴泉模型是典型的面向?qū)λ镜膰娙P褪堑湫偷拿嫦驅(qū)ο笊芷谀P汀O笊?/p>
18、期模型。圖圖6.3 6.3 噴泉模型噴泉模型 1. 1. 與人類習(xí)慣的思維方法一致與人類習(xí)慣的思維方法一致 面向?qū)ο蟮能浖夹g(shù)以對象面向?qū)ο蟮能浖夹g(shù)以對象(Object)(Object)為核心,用這種技術(shù)開發(fā)出的軟件系統(tǒng)由為核心,用這種技術(shù)開發(fā)出的軟件系統(tǒng)由對象組成。對象組成。 對象是對現(xiàn)實世界實體的正確抽象,對象是對現(xiàn)實世界實體的正確抽象,它是由描述內(nèi)部狀態(tài)表示靜態(tài)屬性的數(shù)據(jù),它是由描述內(nèi)部狀態(tài)表示靜態(tài)屬性的數(shù)據(jù),以及可以對這些數(shù)據(jù)施加的操作以及可以對這些數(shù)據(jù)施加的操作( (表示對象表示對象的動態(tài)行為的動態(tài)行為) ),封裝在一起所構(gòu)成的統(tǒng)一體。,封裝在一起所構(gòu)成的統(tǒng)一體。對象之間通過傳遞消
19、息互相聯(lián)系,以模擬對象之間通過傳遞消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系?,F(xiàn)實世界中不同事物彼此之間的聯(lián)系。 面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,這種方法的基本原程的方法有本質(zhì)不同,這種方法的基本原理是,使用現(xiàn)實世界的概念抽象地思考問理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。題從而自然地解決問題。 它強調(diào)模擬現(xiàn)實世界中的概念而不強它強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,它鼓勵開發(fā)者在軟件開發(fā)的絕大調(diào)算法,它鼓勵開發(fā)者在軟件開發(fā)的絕大部分過程中都用應(yīng)用領(lǐng)域的概念去思考。部分過程中都用應(yīng)用領(lǐng)域的概念去思考。在面向?qū)ο蟮脑O(shè)
20、計方法中,計算機的觀點在面向?qū)ο蟮脑O(shè)計方法中,計算機的觀點是不重要的,現(xiàn)實世界的模型才是最重要是不重要的,現(xiàn)實世界的模型才是最重要的。的。 面向?qū)ο蟮能浖_發(fā)過程從始至終都面向?qū)ο蟮能浖_發(fā)過程從始至終都圍繞著建立問題領(lǐng)域的對象模型來進行:圍繞著建立問題領(lǐng)域的對象模型來進行:對問題領(lǐng)域進行自然的分解,確定需要使對問題領(lǐng)域進行自然的分解,確定需要使用的對象和類,建立適當(dāng)?shù)念惖燃?,在對用的對象和類,建立適當(dāng)?shù)念惖燃墸趯ο笾g傳遞消息實現(xiàn)必要的聯(lián)系,從而按象之間傳遞消息實現(xiàn)必要的聯(lián)系,從而按照人們習(xí)慣的思維方式建立起問題領(lǐng)域的照人們習(xí)慣的思維方式建立起問題領(lǐng)域的模型,模擬客觀世界。模型,模擬客觀世
21、界。 2. 2. 穩(wěn)定性好穩(wěn)定性好 面向?qū)ο蠓椒ɑ跇?gòu)造問題領(lǐng)域的對面向?qū)ο蠓椒ɑ跇?gòu)造問題領(lǐng)域的對象模型,以對象為中心構(gòu)造軟件系統(tǒng)。它象模型,以對象為中心構(gòu)造軟件系統(tǒng)。它的基本作法是用對象模擬問題領(lǐng)域中的實的基本作法是用對象模擬問題領(lǐng)域中的實體,以對象間的聯(lián)系刻畫實體間的聯(lián)系。體,以對象間的聯(lián)系刻畫實體間的聯(lián)系。 因為面向?qū)ο蟮能浖到y(tǒng)的結(jié)構(gòu)是根因為面向?qū)ο蟮能浖到y(tǒng)的結(jié)構(gòu)是根據(jù)問題領(lǐng)域的模型建立起來的,而不是基據(jù)問題領(lǐng)域的模型建立起來的,而不是基于對系統(tǒng)應(yīng)完成的功能的分解,所以,當(dāng)于對系統(tǒng)應(yīng)完成的功能的分解,所以,當(dāng)對系統(tǒng)的功能需求變化時并不會引起軟件對系統(tǒng)的功能需求變化時并不會引起軟件結(jié)
22、構(gòu)的整體變化,往往僅需要作一些局部結(jié)構(gòu)的整體變化,往往僅需要作一些局部性的修改。性的修改。 例如,從已有類派生出一些新的子類例如,從已有類派生出一些新的子類以實現(xiàn)功能擴充或修改,增加或刪除某些以實現(xiàn)功能擴充或修改,增加或刪除某些對象等。總之,由于現(xiàn)實世界中的實體是對象等。總之,由于現(xiàn)實世界中的實體是相對穩(wěn)定的,因此,以對象為中心構(gòu)造的相對穩(wěn)定的,因此,以對象為中心構(gòu)造的軟件系統(tǒng)也是比較穩(wěn)定的。軟件系統(tǒng)也是比較穩(wěn)定的。 3. 3. 可重用性好可重用性好 事實上,離開了操作數(shù)據(jù)便無法處理,事實上,離開了操作數(shù)據(jù)便無法處理,而脫離了數(shù)據(jù)的操作也是毫無意義的,我而脫離了數(shù)據(jù)的操作也是毫無意義的,我們應(yīng)
23、該對數(shù)據(jù)和操作同樣重視。在面向?qū)儜?yīng)該對數(shù)據(jù)和操作同樣重視。在面向?qū)ο蠓椒ㄋ褂玫膶ο笾?,?shù)據(jù)和操作正是象方法所使用的對象中,數(shù)據(jù)和操作正是作為平等伙伴出現(xiàn)的。作為平等伙伴出現(xiàn)的。 因此,對象具有很強的自含性,此外,因此,對象具有很強的自含性,此外,對象所固有的封裝性和信息隱藏機理,使對象所固有的封裝性和信息隱藏機理,使得對象的內(nèi)部實現(xiàn)與外界隔離,具有較強得對象的內(nèi)部實現(xiàn)與外界隔離,具有較強的獨立性。由此可見,對象類提供了比較的獨立性。由此可見,對象類提供了比較理想的模塊化機制和比較理想的可重用的理想的模塊化機制和比較理想的可重用的軟件成分。軟件成分。 面向?qū)ο蟮能浖夹g(shù)在利用可重用的面向?qū)ο?/p>
24、的軟件技術(shù)在利用可重用的軟件成分構(gòu)造新的軟件系統(tǒng)時,有很大的軟件成分構(gòu)造新的軟件系統(tǒng)時,有很大的靈活性。靈活性。 有兩種方法可以重復(fù)使用一個對象類:有兩種方法可以重復(fù)使用一個對象類:一種方法是創(chuàng)建該類的實例,從而直接使一種方法是創(chuàng)建該類的實例,從而直接使用它;另一種方法是從它派生出一個滿足用它;另一種方法是從它派生出一個滿足當(dāng)前需要的新類。當(dāng)前需要的新類。 繼承性機制使得子類不僅可以重用其繼承性機制使得子類不僅可以重用其父類的數(shù)據(jù)結(jié)構(gòu)和程序代碼,而且可以在父類的數(shù)據(jù)結(jié)構(gòu)和程序代碼,而且可以在父類代碼的基礎(chǔ)上方便地修改和擴充,這父類代碼的基礎(chǔ)上方便地修改和擴充,這種修改并不影響對原有類的使用。種
25、修改并不影響對原有類的使用。class Apublic:void Func1(void);void Func2(void);class B : public Apublic:void Func3(void);void Func4(void);/ Examplemain()B b; / B的一個對象b.Func1(); / B 從A 繼承了函數(shù)Func1b.Func2(); / B 從A 繼承了函數(shù)Func2b.Func3();b.Func4(); 由于可以像使用集成電路由于可以像使用集成電路(IC)(IC)構(gòu)造計構(gòu)造計算機硬件那樣,比較方便地重用對象類來算機硬件那樣,比較方便地重用對象類來構(gòu)造
26、軟件系統(tǒng),因此,有人把對象類稱為構(gòu)造軟件系統(tǒng),因此,有人把對象類稱為“軟件軟件IC”IC”。 面向?qū)ο蟮能浖夹g(shù)所實現(xiàn)的可重用面向?qū)ο蟮能浖夹g(shù)所實現(xiàn)的可重用性是自然的和準(zhǔn)確的,在軟件重用技術(shù)中性是自然的和準(zhǔn)確的,在軟件重用技術(shù)中它是最成功的一個。它是最成功的一個。 4. 4. 較易開發(fā)大型軟件產(chǎn)品較易開發(fā)大型軟件產(chǎn)品 當(dāng)開發(fā)大型軟件產(chǎn)品時,組織開發(fā)人當(dāng)開發(fā)大型軟件產(chǎn)品時,組織開發(fā)人員的方法不恰當(dāng)往往是出現(xiàn)問題的主要原員的方法不恰當(dāng)往往是出現(xiàn)問題的主要原因。因。 用面向?qū)ο蠓缎烷_發(fā)軟件時,可以把用面向?qū)ο蠓缎烷_發(fā)軟件時,可以把一個大型產(chǎn)品看作是一系列本質(zhì)上相互獨一個大型產(chǎn)品看作是一系列本質(zhì)上相
27、互獨立的小產(chǎn)品來處理,這就不僅降低了開發(fā)立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對開發(fā)工作的管的技術(shù)難度,而且也使得對開發(fā)工作的管理變得容易多了。理變得容易多了。 這就是為什么對于大型軟件產(chǎn)品來說,這就是為什么對于大型軟件產(chǎn)品來說,面向?qū)ο蠓缎蛢?yōu)于結(jié)構(gòu)化范型的原因之一。面向?qū)ο蠓缎蛢?yōu)于結(jié)構(gòu)化范型的原因之一。許多軟件開發(fā)公司的經(jīng)驗都表明,當(dāng)把面許多軟件開發(fā)公司的經(jīng)驗都表明,當(dāng)把面向?qū)ο蠹夹g(shù)用于大型軟件開發(fā)時,軟件成向?qū)ο蠹夹g(shù)用于大型軟件開發(fā)時,軟件成本明顯地降低了,軟件的整體質(zhì)量也提高本明顯地降低了,軟件的整體質(zhì)量也提高了。了。 5. 5. 可維護性好可維護性好 由于下述因素的
28、存在,使得用面向?qū)τ捎谙率鲆蛩氐拇嬖?,使得用面向?qū)ο蠓椒ㄋ_發(fā)的軟件可維護性好。象方法所開發(fā)的軟件可維護性好。 面向?qū)ο蟮能浖€(wěn)定性比較好。面向?qū)ο蟮能浖€(wěn)定性比較好。 面向?qū)ο蟮能浖容^容易修改。面向?qū)ο蟮能浖容^容易修改。 面向?qū)ο蟮能浖容^容易理解。面向?qū)ο蟮能浖容^容易理解。 易于測試和調(diào)試。易于測試和調(diào)試。 6.4.1 6.4.1 對象對象 在應(yīng)用領(lǐng)域中有意義的、與所要解決在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象的問題有關(guān)系的任何事物都可以作為對象(Object)(Object),它既可以是具體的物理實體的,它既可以是具體的物理實體的抽象,也可以是人為的概
29、念,或者是任何抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。有明確邊界和意義的東西。 例如,一名職工、一家公司、一個窗例如,一名職工、一家公司、一個窗口、一座圖書館、一本圖書、貸款和借款口、一座圖書館、一本圖書、貸款和借款等,都可以作為一個對象??傊?,對象是等,都可以作為一個對象??傊?,對象是對問題域中某個實體的抽象,設(shè)立某個對對問題域中某個實體的抽象,設(shè)立某個對象就反映了軟件系統(tǒng)保存有關(guān)它的信息并象就反映了軟件系統(tǒng)保存有關(guān)它的信息并具與它進行交互的能力。具與它進行交互的能力。圖圖6.4 6.4 對象的形象表示對象的形象表示 1. 1. 對象的形象表示對象的形象表示 2. 2.
30、對象的定義對象的定義 (1) (1) 定義定義1 1 對象是具有相同狀態(tài)的一組操作的集對象是具有相同狀態(tài)的一組操作的集合。合。 這個定義主要是從面向?qū)ο蟪绦蛟O(shè)計這個定義主要是從面向?qū)ο蟪绦蛟O(shè)計的角度看的角度看“對象對象”。 (2) (2) 定義定義2 2 對象是對問題域中某個東西的抽象,對象是對問題域中某個東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個東西的這種抽象反映了系統(tǒng)保存有關(guān)這個東西的信息或與它交互的能力。也就是說,對象信息或與它交互的能力。也就是說,對象是對屬性值和操作的封裝。是對屬性值和操作的封裝。 這個定義著重從信息模擬的角度看待這個定義著重從信息模擬的角度看待“對象對象”。 (3)
31、 (3) 定義定義3 3 對象對象=ID=MI 其中,其中,IDID是對象的標(biāo)識或名字是對象的標(biāo)識或名字 MSMS是對象中的操作集合是對象中的操作集合 DS DS是對象的數(shù)據(jù)結(jié)構(gòu)是對象的數(shù)據(jù)結(jié)構(gòu) MIMI是對象受理的消息名集合是對象受理的消息名集合( (即對外接即對外接口口) ) 這個定義是一個形式化的定義。這個定義是一個形式化的定義。 總之,對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以總之,對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個封裝體有可以唯一地標(biāo)識它的名字,這個封裝體有可以唯一地標(biāo)識它的名字,而且向外界提供一組服務(wù)而且向外界提供一組服務(wù)( (即
32、公有的操作即公有的操作) )。 對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能由該對象的操作來改變。對象的狀態(tài)只能由該對象的操作來改變。每當(dāng)需要改變對象的狀態(tài)時,只能由其他每當(dāng)需要改變對象的狀態(tài)時,只能由其他對象向該對象發(fā)送消息。對象響應(yīng)消息時,對象向該對象發(fā)送消息。對象響應(yīng)消息時,按照消息模式找出與之匹配的方法,并執(zhí)按照消息模式找出與之匹配的方法,并執(zhí)行該方法。行該方法。 從動態(tài)角度或?qū)ο蟮膶崿F(xiàn)機制來看,從動態(tài)角度或?qū)ο蟮膶崿F(xiàn)機制來看,對象是一臺自動機。具有內(nèi)部狀態(tài)對象是一臺自動機。具有內(nèi)部狀態(tài)S S,操作,操作f fi i(i(i=1,2,=1,2,n),n
33、),且與操作,且與操作f fi i對應(yīng)的狀態(tài)轉(zhuǎn)對應(yīng)的狀態(tài)轉(zhuǎn)換函數(shù)為換函數(shù)為g gi i(i(i=1,2,=1,2,n),n)的一個對象,可以的一個對象,可以用圖用圖6.26.2所示的自動機來模擬。所示的自動機來模擬。圖圖6.5 6.5 用自動機模擬對象用自動機模擬對象 3. 3.對象的特點對象的特點 以數(shù)據(jù)為中心。以數(shù)據(jù)為中心。 對象是主動的。對象是主動的。 實現(xiàn)了數(shù)據(jù)封裝。實現(xiàn)了數(shù)據(jù)封裝。 本質(zhì)上具有并行性。本質(zhì)上具有并行性。 模塊獨立性好。模塊獨立性好。 6.4.2 6.4.2 其他概念其他概念 1. 1. 類類(Class)(Class) 在面向?qū)ο蟮能浖夹g(shù)中,在面向?qū)ο蟮能浖夹g(shù)中,
34、“類類”就就是對具有相同數(shù)據(jù)和相同操作的一組相似是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。對象的定義。 也就是說,類是對具有相同屬性和行也就是說,類是對具有相同屬性和行為的一個或多個對象的描述,通常在這種為的一個或多個對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的描述中也包括對怎樣創(chuàng)建該類的新對象的說明。說明。 2. 2. 實例實例(Instance)(Instance) 實例就是由某個特定的類所描述的一實例就是由某個特定的類所描述的一個具體的對象。個具體的對象。3. 3. 消息消息(Message)(Message) 消息,就是要求某個對象執(zhí)行在定義消息,就是要求某個對象執(zhí)
35、行在定義它的那個類中所定義的某個操作的規(guī)格說它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由下述三部分組成:明。通常,一個消息由下述三部分組成: 接收消息的對象;接收消息的對象; 消息選擇符消息選擇符( (也稱為消息名也稱為消息名) ); 零個或多個變元。零個或多個變元。4. 4. 方法方法(Method)(Method) 方法,就是對象所能執(zhí)行的操作,也方法,就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對象就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算執(zhí)行操作的算法,響應(yīng)消息的方法。法,響應(yīng)消息的方法。 5. 5. 屬性屬性(Attribute)(Attribute)
36、 屬性,就是類中所定義的數(shù)據(jù),它是屬性,就是類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。類對客觀世界實體所具有的性質(zhì)的抽象。類的每個實例都的每個實例都有自己特有的屬性值。有自己特有的屬性值。 6. 6. 封裝封裝(Encapsulation)(Encapsulation) 從字面上理解,所謂封裝就是把某個從字面上理解,所謂封裝就是把某個事物包起來,使外界不知道該事物的具體事物包起來,使外界不知道該事物的具體內(nèi)容。內(nèi)容。 綜上所述,具有封裝性的條件如下。綜上所述,具有封裝性的條件如下。 有一有一個清晰的邊界。所有私有數(shù)據(jù)個清晰的邊界。所有私有數(shù)據(jù)和實現(xiàn)操作的代碼都被封裝在這個邊界內(nèi),
37、和實現(xiàn)操作的代碼都被封裝在這個邊界內(nèi),從外面看不見更不能直接訪問。從外面看不見更不能直接訪問。 有有確定的接口確定的接口( (即協(xié)議即協(xié)議) )。這些接口。這些接口就是對象可以接受的消息,只能通過向?qū)褪菍ο罂梢越邮艿南?,只能通過向?qū)ο蟀l(fā)送消息來使用它。象發(fā)送消息來使用它。 受受保護的內(nèi)部實現(xiàn)。實現(xiàn)對象功能保護的內(nèi)部實現(xiàn)。實現(xiàn)對象功能的細節(jié)的細節(jié)( (私有數(shù)據(jù)和代碼私有數(shù)據(jù)和代碼) )不能在定義該對不能在定義該對象的類的范圍外進行訪問。象的類的范圍外進行訪問。 封裝性也就是信息隱藏,通過封裝把封裝性也就是信息隱藏,通過封裝把對象的實現(xiàn)細節(jié)對外界隱藏起來了。對象的實現(xiàn)細節(jié)對外界隱藏起來了。 7
38、. 7. 繼承繼承(Inheritance)(Inheritance) 廣義地說,繼承是指能夠直接獲得已廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機制。動地共享基類中定義的數(shù)據(jù)和方法的機制。 當(dāng)一個類只允許有一個父類時,也就當(dāng)一個類只允許有一個父類時,也就是說,當(dāng)類等級為樹形結(jié)構(gòu)時,類的繼承是說,當(dāng)類等級為樹形結(jié)構(gòu)時,類的繼承是單繼承;當(dāng)是單繼承;當(dāng)允許一個類有多個父類時,允許一個類有多個父類時,類的繼承是多重繼承。類的繼承是多重
39、繼承。圖圖6.6 6.6 實現(xiàn)繼承機制的原理實現(xiàn)繼承機制的原理 8. 8. 多態(tài)性多態(tài)性(Polymorphism)(Polymorphism) 多態(tài)性一詞來源于希臘語,意思是多態(tài)性一詞來源于希臘語,意思是“有許多形態(tài)有許多形態(tài)”。 在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是指子類對象可以像父類對象那樣使用,同指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。送給子類對象。 也就是說,在類等級的不同層次中可也就是說,在類等級的不同層次中可以共享以共享( (公用公用) )一個行為一個行為( (方法方法)
40、 )的名字,然的名字,然而不同層次中的每個類卻各自按自己的需而不同層次中的每個類卻各自按自己的需要來實現(xiàn)這個行為。當(dāng)對象接收到發(fā)送給要來實現(xiàn)這個行為。當(dāng)對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)它的消息時,根據(jù)該對象所屬于的類動態(tài)選用在該類中定義的實現(xiàn)算法。選用在該類中定義的實現(xiàn)算法。 9. 9. 重載重載(Overloading)(Overloading) 有兩種重載:函數(shù)重載是指在同一作有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運算符重載是指同使用相同的函數(shù)名字;運算符重載是指同一個運算符可以施加于
41、不同類型的操作數(shù)一個運算符可以施加于不同類型的操作數(shù)上面。上面。 當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的類型不同時,實現(xiàn)函數(shù)的算法或運算符的類型不同時,實現(xiàn)函數(shù)的算法或運算符的語義是不相同的。語義是不相同的。 為了更好地理解問題,人們常常采用為了更好地理解問題,人們常常采用建立問題模型的方法。所謂模型,就是為建立問題模型的方法。所謂模型,就是為了理解事物而對事物作出的一種抽象,是了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。對事物的一種無歧義的書面描述。 通常,模型由一組圖示符號和組織這通常,模型由一組圖示符號和組織這些符號的規(guī)則組成,利用它們來定
42、義和描些符號的規(guī)則組成,利用它們來定義和描述問題域中的術(shù)語和概念。更進一步講,述問題域中的術(shù)語和概念。更進一步講,模型是一種思考工具,利用這種工具可以模型是一種思考工具,利用這種工具可以把知識規(guī)范地表示出來。把知識規(guī)范地表示出來。 用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常需要用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型,它們分別是描述系建立三種形式的模型,它們分別是描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型,描述系統(tǒng)控制結(jié)統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型,描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型和描述系統(tǒng)功能的功能模型。構(gòu)的動態(tài)模型和描述系統(tǒng)功能的功能模型。 這三種模型都涉及到數(shù)據(jù)、控制和操這三種模型都涉及到數(shù)據(jù)、控制和操作等共同的概念,只
43、不過每種模型描述的作等共同的概念,只不過每種模型描述的側(cè)重點不同。這三種模型從三個不同但又側(cè)重點不同。這三種模型從三個不同但又密切相關(guān)的角度模擬目標(biāo)系統(tǒng),它們各自密切相關(guān)的角度模擬目標(biāo)系統(tǒng),它們各自從不同側(cè)面反映了系統(tǒng)的實質(zhì)性內(nèi)容,綜從不同側(cè)面反映了系統(tǒng)的實質(zhì)性內(nèi)容,綜合起來則全面地反映了對目標(biāo)系統(tǒng)的需求。合起來則全面地反映了對目標(biāo)系統(tǒng)的需求。 一個典型的軟件系統(tǒng)組合了上述三方一個典型的軟件系統(tǒng)組合了上述三方面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)( (對象模型對象模型) ),執(zhí),執(zhí)行操作行操作( (動態(tài)模型動態(tài)模型) ),并且完成數(shù)據(jù)值的變,并且完成數(shù)據(jù)值的變化化( (功能模型功能模型)
44、 )。 對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的的“數(shù)據(jù)數(shù)據(jù)”性質(zhì)。它是對模擬客觀世界實性質(zhì)。它是對模擬客觀世界實體的對象以及對象彼此間的關(guān)系的映射,體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。 正如正如6.2.1節(jié)所述,面向?qū)ο蠓椒◤娬{(diào)節(jié)所述,面向?qū)ο蠓椒◤娬{(diào)圍繞對象而不是圍繞功能來構(gòu)造系統(tǒng)。對圍繞對象而不是圍繞功能來構(gòu)造系統(tǒng)。對象模型為建立動態(tài)模型和功能模型,提供象模型為建立動態(tài)模型和功能模型,提供了實質(zhì)性的框架。了實質(zhì)性的框架。 在建立對象模型時,我們的目標(biāo)是從在建立對象模型時,我們的目標(biāo)是從客觀世界中提煉出對具體應(yīng)用有價值的
45、概客觀世界中提煉出對具體應(yīng)用有價值的概念。念。 6.6.1 6.6.1 表示類的符號表示類的符號 類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖是一種靜態(tài)模型,它是創(chuàng)建其他類圖是一種靜態(tài)模型,它是創(chuàng)建其他UMLUML圖圖的基礎(chǔ)。一個系統(tǒng)可以由多張類圖來描述,的基礎(chǔ)。一個系統(tǒng)可以由多張類圖來描述,一個類也可以出現(xiàn)在幾張類圖中。一個類也可以出現(xiàn)在幾張類圖中。 1. 1.定義類定義類 UML中類的圖形符號為長方形,用兩中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下條橫線把長方形分成上、中、下3個區(qū)域個區(qū)域(下面兩個區(qū)域可省略),(下面兩個區(qū)域可省略),3個區(qū)域分別
46、放個區(qū)域分別放類的名字、屬性和服務(wù)類的名字、屬性和服務(wù)。 2. 2. 定義屬性定義屬性 UML描述屬性的語法格式如下:描述屬性的語法格式如下: 可見性可見性 屬性名:類型名屬性名:類型名=初值初值性質(zhì)串性質(zhì)串 3. 3. 定義服務(wù)定義服務(wù) 服務(wù)也就是操作,服務(wù)也就是操作,UMLUML描述操作的語法描述操作的語法格式如下:格式如下: 可見性可見性 操作名(參數(shù)表):返回值操作名(參數(shù)表):返回值類型類型 性質(zhì)串性質(zhì)串 6.6.2 6.6.2 表示關(guān)系的符號表示關(guān)系的符號 1. 1. 關(guān)聯(lián)關(guān)聯(lián) 關(guān)聯(lián)表示兩個類的對象之間存在某種關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。語義上的聯(lián)系。 (1 1)
47、 普通關(guān)聯(lián)普通關(guān)聯(lián) 普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)的圖示符號是連接兩關(guān)聯(lián)表示。普通關(guān)聯(lián)的圖示符號是連接兩個類之間的直線,如圖個類之間的直線,如圖6.76.7所示。所示。 圖圖6.7 6.7 普通關(guān)聯(lián)示例普通關(guān)聯(lián)示例(2 2) 限定關(guān)聯(lián)限定關(guān)聯(lián) 限定關(guān)聯(lián)通常用在一對多或多對多的限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重數(shù)從一對關(guān)聯(lián)關(guān)系中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成多對一。多變成一對一,或從多對多簡化成多對一。在類圖中把限定詞放在
48、關(guān)聯(lián)關(guān)系末端的一在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個小方框內(nèi)。個小方框內(nèi)。 (3 3) 關(guān)聯(lián)類關(guān)聯(lián)類 為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息??梢砸胍粋€關(guān)聯(lián)類來記錄這些加信息。可以引入一個關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。對象相聯(lián)系。 2. 2. 聚集聚集 聚集也稱為聚合,是關(guān)聯(lián)的特例。聚聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體與部分的集表示類與類之間的關(guān)系是整體與部分的關(guān)系。關(guān)系。 (1 1) 共享聚集共享聚集 如果在聚集關(guān)系中處于部分方的對象如果在聚集關(guān)系中處于部分方的
49、對象可同時參與多個處于整體方對象的構(gòu)成,可同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。則該聚集稱為共享聚集。 圖圖6.10 6.10 共享聚集示例共享聚集示例(2 2) 組合聚集組合聚集 如果部分類完全隸屬于整體類,部分如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱消失(或失去存在價值了),則該聚集稱為組合聚集(簡稱為組成)。為組合聚集(簡稱為組成)。圖圖6.11 6.11 組合聚集示例組合聚集示例 3. 3.泛化泛化 UML中的泛化關(guān)系就是通常所說的繼中的泛化關(guān)系就是通常所說的繼承關(guān)系,
50、它是通用元素和具體元素之間的承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。一種分類關(guān)系。 在在UML中,用一端為空心三角形的連中,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。注意,泛化針對類型而不針對實用元素。注意,泛化針對類型而不針對實例,一個類可以繼承另一個類,但一個對例,一個類可以繼承另一個類,但一個對象不能繼承另一個對象。實際上,泛化關(guān)象不能繼承另一個對象。實際上,泛化關(guān)系指出在類與類之間存在系指出在類與類之間存在“一般一般特殊特殊”關(guān)系。關(guān)系。圖圖6.12 6.12 抽象類示例抽象類示例 動態(tài)模型表示瞬時的、行為化的系統(tǒng)動
51、態(tài)模型表示瞬時的、行為化的系統(tǒng)的的“控制控制”性質(zhì),它規(guī)定了對象模型中的性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。對象的合法變化序列。 對一個對象來說,生命周期由許多階對一個對象來說,生命周期由許多階段組成,在每個特定階段中,都有適合該段組成,在每個特定階段中,都有適合該對象的一組運行規(guī)律和行為規(guī)則,用以規(guī)對象的一組運行規(guī)律和行為規(guī)則,用以規(guī)范該對象的行為。生命周期中的階段也就范該對象的行為。生命周期中的階段也就是對象的狀態(tài)。所謂狀態(tài),是對對象屬性是對象的狀態(tài)。所謂狀態(tài),是對對象屬性值的一種抽象。值的一種抽象。 各對象之間相互觸發(fā)(即作用)就形各對象之間相互觸發(fā)(即作用)就形成了一系列的狀
52、態(tài)變化。我們把一個觸發(fā)成了一系列的狀態(tài)變化。我們把一個觸發(fā)行為稱作一個事件。對象對事件的響應(yīng),行為稱作一個事件。對象對事件的響應(yīng),取決于接受該觸發(fā)的對象當(dāng)時所處的狀態(tài),取決于接受該觸發(fā)的對象當(dāng)時所處的狀態(tài),響應(yīng)包括改變自己的狀態(tài)或者又形成一個響應(yīng)包括改變自己的狀態(tài)或者又形成一個新的觸發(fā)行為。新的觸發(fā)行為。 狀態(tài)有持續(xù)性,它占用一段時間間隔。狀態(tài)有持續(xù)性,它占用一段時間間隔。狀態(tài)與事件密不可分,一個事件分開兩個狀態(tài)與事件密不可分,一個事件分開兩個狀態(tài),一個狀態(tài)隔開兩個事件。事件表示狀態(tài),一個狀態(tài)隔開兩個事件。事件表示時刻,狀態(tài)代表時間間隔。時刻,狀態(tài)代表時間間隔。 每個類的動態(tài)行為用一張狀態(tài)圖來
53、描每個類的動態(tài)行為用一張狀態(tài)圖來描繪,各個類的狀態(tài)圖通過共享事件合并起繪,各個類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。來,從而構(gòu)成系統(tǒng)的動態(tài)模型。 功能模型表示變化的系統(tǒng)的功能模型表示變化的系統(tǒng)的“功能功能”性質(zhì),它指明了系統(tǒng)應(yīng)該性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么做什么”,因,因此更直接地反映了用戶對目標(biāo)系統(tǒng)的需求。此更直接地反映了用戶對目標(biāo)系統(tǒng)的需求。 通常,功能模型由一組數(shù)據(jù)流圖組成。通常,功能模型由一組數(shù)據(jù)流圖組成。UML提供的用例圖也是進行需求分析和建提供的用例圖也是進行需求分析和建立功能模型的強有力工具。立功能模型的強有力工具。 面向?qū)ο蠼<夹g(shù)所建立的三種模型,面向?qū)ο?/p>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025××單位(醫(yī)院)合同管理人員聘用合同管理辦法
- 江蘇附負擔(dān)贈與合同
- 單位定期贈與合同
- 2025合同違約金的認定及處理方式
- 房屋滯銷改造協(xié)議書
- 2025年03月常熟市事業(yè)單位工作人員102人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 河南省信陽市商城縣2025屆六年級下學(xué)期小升初真題數(shù)學(xué)試卷含解析
- 浙江科技學(xué)院《生醫(yī)專業(yè)英語》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶海聯(lián)職業(yè)技術(shù)學(xué)院《商務(wù)英語翻譯二》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南工業(yè)和信息化職業(yè)學(xué)院《數(shù)據(jù)庫課程設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 庫房管理工作職責(zé)與規(guī)范化
- 2024-2025學(xué)年七年級下學(xué)期數(shù)學(xué)期中測試(浙江瑞安市專用)(含答案)
- 2025年浙江省杭州市拱墅區(qū)中考語文模擬試卷含答案
- 2024國家數(shù)字化范式與路徑-公共政策立場-67正式版
- 路面工程安全專項施工方案
- 瑞吉歐幼兒教育
- 酒駕案件辦理培訓(xùn)課件
- 2022年10月自考06779應(yīng)用寫作學(xué)試題及答案
- 科學(xué)教學(xué)儀器設(shè)備借用登記表(精品文檔)
- 火災(zāi)報警系統(tǒng)安裝檢查記錄
- 壓力性損傷管理制度
評論
0/150
提交評論