程序設計首都師范大學chapter_第1頁
程序設計首都師范大學chapter_第2頁
程序設計首都師范大學chapter_第3頁
程序設計首都師范大學chapter_第4頁
程序設計首都師范大學chapter_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一緒論1 什麼是面向對象對象(object) 任何可以被感覺到的事物。面向(oriented) 直接面對。) 直接面對你能感覺到面向對象(O的任何事物。面向對象編程(OO)OP將軟件視為是由一群相互關聯(lián)對象組成的整體:這些對象具有足夠的智能,能理解從其他對象發(fā) 出的消息,并以適當?shù)男袨樽鞒鲰憫瑥亩鴮崿F(xiàn) 軟件的整體功能。面向對象編程就是直接面對軟 件所模擬的客觀世界中的事物,將它們直接到軟件系統(tǒng)的解空間對象。2 面向對象程序設計面向過程程序設計(Procedural Programming)· 自頂向下、逐步求精的結構化設計原則;· 程序由結構化的功能模塊和數(shù)據(jù)模塊組成;&

2、#183; 面向數(shù)據(jù)/過程的設計方法;· 程序由數(shù)據(jù)定義、操作過程定義加與數(shù)據(jù)實例的操作組成;· 數(shù)據(jù)與過程分離,容易產生對數(shù)據(jù)的錯誤操作、數(shù)據(jù)實例和施不易提高程序的重用性、維護和擴展。例如,一個學校管理軟件中可以包含如下的數(shù)據(jù)結構和操作:typedef structchar name10; long num;int age; char sex; student;void enroll(student* ptr).ptr->num+;typedef structchar name10; double salary; int age;char sex; teacher;

3、void raise(teacher* ptr)ptr->salary += 100;void print(student* ptr).main().student Zhang;void print(teacher* ptr)/ 定義學生數(shù)據(jù)模塊/ 定義教師數(shù)據(jù)模塊teacher Li;/ 操作與/ 操作與/ 操作與作數(shù)據(jù)匹配作數(shù)據(jù)失配作數(shù)據(jù)匹配enroll(&Zhang);enroll(&Li);print(&Zhang);.面向對象程序設計(Object Oriented Programming)· 吸取,又考慮了現(xiàn)實世界程序解空間直接關系;

4、3; 采用數(shù)據(jù)抽象和信息隱藏技術使得數(shù)據(jù)和(施加于數(shù)據(jù)的)操作成為不可分割的整體;· 程序由類定義、類實例對象和對象之間的動態(tài)組成;· 程序的重用性好、易于維護和擴展· 有望解決軟件的復雜性和生產率的提高。用面向對象的設計方法實現(xiàn)前例的功能:/ 類定義class student/ 屬性char name10; long num;int age;char sex;public:/ 方法void enroll() . ;friend ostream& operator<<(ostream& out, student stud) . ;.;/

5、 類定義class teacher/ 屬性char name10; double salary; int age;char sex;public:/ 方法void raise() . ;friend ostream& operator<<(ostream& out, teacher teach) . ;.;main()./ 類實例 對象student Zhang; teacher Li;/ 對象方法調用Zhang.enroll(); Li.raise();cout << Zhang; cout << Li;.3 面向對象的方法在大型程序設計的

6、應用特點:程序規(guī)模大;開發(fā)復雜程度高;組織程序邏輯和驗證正確性開發(fā)周期長;對易維護性、可讀性和可重用性要求高。對整個任務清晰、嚴格地劃分;對每個劃分的模塊清晰、合理地抽象(即只說明做什麼,不必說明如何做說明模塊關鍵:間的關系),合理的層次結構。方法:面向對象是一種基于對象屬性數(shù)據(jù)和建立在屬性之上的行為的抽象,并在該抽象之上引入繼承和動態(tài)機制的方法。該方法有利于任務的劃分,有利于模塊的狀態(tài)、行為的描述、和維護,有利于分而治之地解決大規(guī)模、復雜程序的分析、設計和開發(fā)。4 面向對象程序設計范型 設計程序的模式過程式程序設計范型函數(shù)式程序設計范型面向約束程序設計范型面向對象程序設計范型進程式程序設計范

7、型類型系統(tǒng)程序設計范型程序設計范型面向對象程序設計范型:程序的組成:由類定義集合和一個主程序組成。類定義集合類定義確定了一類對象的屬性和行為的創(chuàng)建規(guī)則,類定義具有層次結構。主程序創(chuàng)建所需要類的實例(對象對象之間的相互通訊,實現(xiàn)程序所要完成的功能。程序的運行:各對象之間以消息的方式進行的通訊對象方法。每種程序設計語言都能適應一種或幾種程序設計范型。例如 C+ 就是一種能適應過程式程序設計范型和面向對象程序設計范型的混合范型程序設計語言。5 面向對象程序設計方法的思維科學基礎建立模型模型是對事物特征和變化規(guī)律的一種抽象,是對 客體認識的深化。建模映射映射模擬系統(tǒng):實現(xiàn)的概念(類)抽象實體(對象)被

8、模擬的系統(tǒng):知性思維抽象感性具體問題的概念具體思維思維具體思維抽象 知性思維:從感性材料中分解"對象" ;抽象出一般規(guī)定,形成了對"對象" 的普遍認識。 具體思維:思維從抽象到具體的必須性:· 從知性思維得到出的一般規(guī)定不能揭示的事物的深刻本質和規(guī)律;· 思維的目的是把握具體對象的多樣性的統(tǒng)一和不同規(guī)則的綜合。具體思維的任務是類概念類概念層次關系繼承包含關系。抽象思維的方法· 分類法:根據(jù)對象的共性和差異,將對象分類,并形成有一定從屬關系的不同等級的邏輯方法。· 綜合法:將整體分解為部分,簡化問題的分析;將部分結合

9、起來整體地、動態(tài)地觀察整體的方法。· 普遍化方法:從個別一般的思維方法,也被稱為歸納方法。注意,不管哪法都是為了達到知性思維和具體思維所要達到的最終目的 分析歸納被模擬系統(tǒng)對象,對象從屬層次關系對象建造規(guī)則。通常在對一個具體的被模擬系統(tǒng)進行抽象思維的過程中,人們會根據(jù)被模擬系統(tǒng)的特點和的思維習慣,以一種抽象思維方法為主,其他抽象思維方法為輔。SimulaAdaModula-2Smalltalk弱類型LISP是一種以表處理為特色的人工智能程序設計語言。70 年代以來,在 LISP 的基礎上開發(fā)出許多 LISPFlavors的面向對象程序設計語言,例如:LOOPS(Lisp Object

10、 Oriented Programming System) CommonLOOPSCommonObjectsCLOS(Common Lisp Object System)C+C+ 是在C 程序設計語言的基礎上進行擴充,增加了相應的面向對象機制的強類型、混合型面向對象程序設計語言。 由于C+ 既具有完備的面向對象機制,又保持了C 的靈活高效和對C 程序的兼容性,所以是目前使用最廣泛的面向對象程序設計語言之一。常用的語言版本有:MS-C+、TurboC+、Boland C+、Visual C+ 和GCC 等。JavaJava 是由 Sun Microsystems 公司開發(fā)的一種弱類型面向對象程序

11、設計語言。 Java 編譯器生成的是一種稱為“字節(jié)碼”的中間碼文件,該文件的執(zhí)行是由 Java 解釋器和抽象機模型組成 JVM(Java Virtual Machine)完成的,所以 Java非常適合網絡編程,實現(xiàn)程序的跨平臺、跨介質運行的需要,但效率較低。C#C# 是由 Microsoft 公司近年來開發(fā)一種直接用于在 Microsoft Net 平臺上更易于編譯產生網絡程序(字節(jié)碼程序)的面向對象程序設計語言。該語言具有 Java 程序的跨介質運行機制,在一定程度上保持了C風格高效率,并融入了 VB 語言開發(fā)程序的友現(xiàn)跨平臺運行。和方便性,但目前還不能實二面向對象程序設計的基本概念1 對象

12、(object)對象的定義在客觀世界中,對象任何可以感覺到的事物。對象可以是自然事物(人、動物、植物等),組織結構(學校、院系、班級等),(物質(房屋、汽車、計算機等)和信息(文章、樂曲、規(guī)則、計劃等)等。對象可小可大,可簡單可復雜;復雜對象可以由簡單對象。無論對象的類型、大小、復雜程度多么不同,都具有共同的特性:有一個特定的名字以區(qū)別于其他對象;有一組屬性,有一組行為,對象的靜態(tài)特性;對象的動態(tài)特性;對象的操作可分為兩類:·· 對外自身服務行為服務行為。在面向對象的軟件中:對象是可以用名字區(qū)域。對象的屬性以固定或可變數(shù)目的確定類型數(shù)值(或數(shù)值的集合)的形式保存在該區(qū)域中,

13、而實現(xiàn)一類對象的行為的操作(代碼)被保存在另外器區(qū)域中。對象的劃分正確合理地識別和劃分對象是面向對象程序設計 的關鍵。劃分的重要性:確保軟件的結構合理,降低編程難度、提高編程效率、便于維護和擴充。 劃分的任務:分析軟件包含的對象,確定對 象的作用和對象之間的關系。劃分的方法:無固定的方法,依賴于設計人員的經驗、技巧和思維習慣。劃分的原則:尋求事物的共性,將具有共性的軟件成分確定為一種對象。對象的狀態(tài)在客觀世界中,對象的狀態(tài)是同類的不同對象獨 立存在的依據(jù),也是這些對象的行為表現(xiàn)差異的 基礎。在面向對象的軟件中,對象的狀態(tài)是同類對象屬性靜態(tài)類型和這些屬性的動態(tài)值的總和。一個對象一旦創(chuàng)建,由靜態(tài)類

14、型屬性區(qū)域,描述不同對象差異的屬性動態(tài)值可以在對象創(chuàng)建的同時被確定,并由對象的相應行為修改。對象的特性· 模塊性:對象的行為僅由對象本身的狀態(tài)確定,而對象的狀態(tài)和行為的操作細節(jié)被封閉在模塊內;· 動態(tài)連接性:對象(模塊)之間通過消息,實現(xiàn)不同對象行為的動態(tài)連接,完成確定任務;· 易維護性:維護工作被最大程度地限定在對對象狀態(tài)行為確定規(guī)則(對象的定義類)維護。2 消息(message)什麼是消息消息是一個對象請求另一個對象執(zhí)行其某種行為操作(也稱為方法)的規(guī)格說明。這種規(guī)格說明總是由消息的接收者、消息所請求的方法(方法名)和實現(xiàn)方法的必要參數(shù)組成的。所以在面向對象的

15、程序中,消息通常的表示形式是:對象名.方法消息具有三個性質:· 同一對象可以接受不同形式的多個消息,并產生不同的響應;· 相同形式的消息可以的響應可以截然不同;給不同接收對象,所獲得· 消息的者可以不必考慮消息接收者是否會響應消息,消息接收者對消息的響應并不是必須的。消息的響應接收消息的對象的狀態(tài)和消息所請求的方法決定了消息的響應。消息響應所引起的操作主要包括四種:返回對象的狀態(tài)修改對象的狀態(tài)完成特定的操作改變系統(tǒng)的某些狀態(tài)消息序列與現(xiàn)實世界中一樣,在面向對象軟件的運行中一個任務所涉及的操作總會有多個對象的參與和多次按順序相互作用才能完成,使得這些對象能夠按任務要

16、求的順序相互通訊的消息組成的序列被稱為"消息序列"。3 類(class)類的定義在客觀世界中,類是對一組具有共同特性(屬性和行為)事物抽象概念。在面向對象的軟件中,類是由程序員自定義數(shù)據(jù)結構抽象數(shù)據(jù)類型。類與對象的關系類是創(chuàng)建對象的模板對象是類的實例操作功能對象規(guī)則構造規(guī)則。數(shù)據(jù)。類同一類的不同實例(對象)必須具有:· 相同的操作集合;· 相同的靜態(tài)屬性集合;· 不同的對象名和屬性動態(tài)值。三面向對象軟件的重要特性1 封裝性(encapsulation)什麼是封裝· 具有一個確定的邊界,對象的所有數(shù)據(jù)成員屬性、成員函數(shù)(行為)都被固定在

17、這個邊界內部。· 對象屬性的私有部分和行為的實現(xiàn)代碼受到保護,其他對象不能直接修改該對象所擁有的數(shù) 據(jù)和代碼。· 具有一個接口,這個接口描述對象之間的相互 作用(請求和響應)的規(guī)格說明,即消息。封裝反映了客觀世界中事物的基本特性。什麼是協(xié)議 對象對外服務的說明。對象的操作行為有三類:· 私有(private)操作,不向外界公開的對象行為,只供對象自身調用;· 保護(protected)操作,向受限的外界公開的對象行為,對象自身和派生類對象調用;· 公有(public)操作,向外公開的功能的對象行為,對象自身、派生類對象和其他對象調用,即協(xié)議的內

18、容。面向對象軟件的封裝性 實現(xiàn)了數(shù)據(jù)隱藏和軟件安全。將設計與使用分隔,提供使用而隱藏設計。將功能與實現(xiàn)分隔。提供功能而隱藏實現(xiàn)。封裝的三個重要概念:· 封裝的原理 抽象數(shù)據(jù)類型;· 封裝的實現(xiàn) 類定義;· 封裝的 對象。2 繼承性(inheritance)什麼是繼承繼承表達了一種對象類之間的依賴關系,它使得 某類對象可以在另一類對象的屬性和行為的基礎上建造的屬性和行為。繼承反映了客觀世界中事物間的基本結構關系。具有繼承關系的類間具有如下特征:· 類間具有共享特征(數(shù)據(jù)和代碼的共享);· 類間具有細微的差別和新增部分(非共享的數(shù) 據(jù)和代碼);&#

19、183; 類間具有層次結構。繼承的分類具有繼承關系的類自然地被分為兩種:父類(基類):提供共享數(shù)據(jù)和功能的類。 子類(派生類):繼承共享數(shù)據(jù)和功能的類。按繼承源劃分:· 單繼承:從單一父類繼承屬性和行為。· 多繼承多個父類繼承屬性和行為。按繼承的內容劃分:· 取代繼承:子類可取代父類的作用。· 包含繼承:子類包含了父類的全部特征。· 受限繼承:子類只能繼承父類的某些特征。· 特化繼承:子類是父類的一種特殊類。繼承與封裝· 繼承不破壞封裝;· 繼承提供了一種靜態(tài)共享· 封裝提供了一種動態(tài)共享繼承與委托

20、83; 繼承與委托的共同之處 ;。通過代碼重用· 繼承共享操作一般類靜態(tài)特殊類繼承共享,即類之間的共享是在類定義的編譯時確定的。· 委托將一個對象的操作或操作的一部分交給另一個特定對象去完成。委托共享靜態(tài)動態(tài),即在類對象的操作執(zhí)行時確定委托對象。面向對象軟件的繼承性 實現(xiàn)軟件的代碼重用和結構化。能清晰體現(xiàn)類之間的層次結構關系;能減小代碼和數(shù)據(jù)的重復冗余度,大大提高了程序的代碼重用性;能通過增加一致性來減少模塊間的接口和界面,大大提高程序的易維護性;繼承是能自動代碼的工具;繼承是在一些具有一般特征的類的基礎上擴充屬性和行為,建立新類的最有效的。3 多態(tài)性(polymorphi

21、sm)多態(tài)表現(xiàn)了不同對象在接收到同一消息時,調用不 同操作,作出不同響應的現(xiàn)象。例如,不同類對象 的標準輸入、輸出、算術運算操作;具有繼承關系 的不同類對象的統(tǒng)一接口操作。多態(tài)事物通訊特征實現(xiàn)多態(tài)性的重要機制和概念:重載(overlaod)為函數(shù)或運算符創(chuàng)建附加定義,使具有相同名字函數(shù)行為運算符不同的場合不同的靜態(tài)多態(tài)性。虛函數(shù)(vitual function)在具有繼承層次結構的基類中定義虛函數(shù)版本派生類虛函數(shù)版本。運行時,根據(jù)接收消息的對象,確定虛函數(shù)的哪個版本被調用動態(tài)多態(tài)性。抽象類(abstrct class)· 抽象類是一個公共基類;· 抽象類刻劃了所有由它派生的

22、類的公有行為統(tǒng)一接口協(xié)議而行為的操作實現(xiàn)派生類;· 抽象類不能創(chuàng)建對象;· 在 C+ 語言中,用定義抽象類。純虛函數(shù)面向對象軟件的多態(tài)性 實現(xiàn)了運行的多樣性和靈活性。根據(jù)實現(xiàn)機制不同,多態(tài)性分為兩種:· 靜態(tài)多態(tài)性:通過重載實現(xiàn),編譯時確定執(zhí)行哪一個重載版本,故又稱為編譯多態(tài)性;· 動態(tài)多態(tài)性:通過虛函數(shù)和繼承實現(xiàn),需要在運行時通過找出接收消息的對象來確定執(zhí)行哪一個虛函數(shù)版本,故又稱為運行多態(tài)性。四面向對象的軟件開發(fā)技術1 面向對象的軟件模型和建模工具建立軟件模型的必要性· 需要一種幫助開發(fā)以及用戶和開發(fā)的工具;認識所設計軟件的需求進行充分交流

23、并達成一致· 需要一種管理軟件分析和設計階段的繁雜信息 的工具;· 需要一種描述軟件分析和設計結果的工具;這種工具就是軟件模型。概念的抽象概念是軟件所模擬的客觀世界中實體的屬性和行為的抽象和概括。概念之間的界中實體了客觀世靜態(tài)聯(lián)系動態(tài)靜態(tài)描述了實體之間的結構概念和屬性相關概念,這種主要表現(xiàn)為:· 屬性關系:一個實體概念是另一種實體概念的屬性。· 層次關系:一個實體概念是另一個實體概念的上位概念。· 并列關系:兩個實體概念都是同一實體概念的下位概念。動態(tài)描述了實體的行為概念,這種主要表現(xiàn)為:· 協(xié)議:實體對外表現(xiàn)的行為,為實體之間通過消

24、息通訊進行動態(tài)提供接口。· 委托:一個實體借助其他實體的行為實現(xiàn)本身行為。顯然,在面向對象設計的軟件系統(tǒng)中,實體與概念之間的關系相當于對象類之間的關系。信息系統(tǒng)的概念模型是用戶和開發(fā)者對系統(tǒng)所模擬的客觀事物及其關 系的理解,是由一組概念通過各種概念間關系組 成的概念體系,它抽象地描述了信息系統(tǒng)中對象 的結構和行為兩方面的特性和關系。概念模型的作用:· 是用戶和開發(fā)有利于開發(fā)之間進行交流公共框架,理解應用領域需求和用戶對信息系統(tǒng)功能的認識;· 是信息系統(tǒng)的設計依據(jù)檢驗評價依據(jù);· 是信息系統(tǒng)開檔的重要組成部分;· 有利于在維護階段對系統(tǒng)的修改和擴

25、充;基于 UMLUML(Unified Ming Language)是非贏利的對象管理組 OMG(ObjectManagement Group)為了實現(xiàn)基于對象的軟件設計工具的標準化而創(chuàng)建的最重要的工具 統(tǒng)模語言。使用 UML 可以提高我們在 OO 軟件開發(fā)的每個階段的工作效率 從分析歸納問題領域的中心概念的一些最初想法開始,到組織開發(fā)與領域進行交流,直到描述軟件模型的圖形文檔創(chuàng)建等?;?UML 的 OO 軟件開發(fā)工具(例如,Rose 等)的出現(xiàn),使 OO 設計更加高效、方便。使用 UML 建模的主要優(yōu)點表現(xiàn)在:· 使用各種恰當?shù)膱D形描述軟件中對象的屬性和行為,以及對象的相互作用和

26、軟件功能的實現(xiàn),使得軟件模型更加直觀和易于理解。· 有利于發(fā)現(xiàn)設計中的錯誤,特別是那些涉及對 象之間相互關系的錯誤;· 便于準確地從軟件模型到對象類設計和使用不同程序設計語言進行編碼實現(xiàn)的轉換;· 為軟件的調試檢錯和擴展提供準確的依據(jù)。· 便于軟件的程序模塊的形成和建立。UML· 用例圖外部· 類圖軟件· 順序圖· 協(xié)作圖· 狀態(tài)圖· 活動圖· 包圖用例圖類圖順序圖協(xié)作圖活動圖2 軟件開發(fā)的生命周期面向過程的軟件開發(fā)中,軟件生命周期一般是瀑布 型的,即軟件的開發(fā)過程被分為:分析、設計、

27、編 碼、測試和維護五個階段。這樣的軟件生命周期層 次清晰、階段分明,但缺乏迭代漸進機制。維護測試編碼設計分析面向對象的軟件開發(fā)中,軟件生命周期與瀑布型軟件生命周期不同,它由四個階段:分析、設計、演 化和維護組成。整個過程是一個迭代漸進的開發(fā)過 程。這種迭代過程不僅貫穿整個軟件生命周期,還 表現(xiàn)在每個階段,特別是分析和設計階段。分析設計演化維護需求分析階段軟件開發(fā)的開始階段。該階段由系統(tǒng)分析員和用 戶一起使用面向對象分析(OOA)方法,對問題域的進行精確地分析和描述,并從問題域的描述中找出關鍵抽象。確定問題域和設計策略在對用戶需求分析的基礎上繪制用例圖包括用例說明(對每個用例的詳細文字描述)。借

28、助用例圖與用戶和相關領域的進行交互,對用例圖修改和補充,直至確定軟件需求,從而確定問題域。在已經確定的問題域基礎上,考慮軟件的應變性和穩(wěn)定性,確 定軟件設計策略。拍賣向銷售者支付貼出需要拍賣的物品維護用戶列表接受報價將物品發(fā)給競拍獲勝者通知獲勝者接受用戶報價檢查用戶背景用戶登記l列出所有物品檢查者的信用度查出一件物品報價 擴展點:報價進行多個報價每個報價對應一件物品向銷售者付錢OOPDB銷售者者拍賣師拍賣活動信息數(shù)類的抽象通過對對象和相關數(shù)據(jù)的分析和歸納,抽象出所設計軟件中的類。例如本例中可以抽象出:銷售者類 Seller、者類 Buyer、拍品項目類AuctionItem、拍品集合(列表)類

29、 AuctionList、拍賣成交文書類 SalesDoc。設計階段設計階段的目的和任務是在需求分析結果的基礎上,使用面向對象設計(OOD)方法,確定所設計軟件中每個類的屬性和行為,類對象之間的相互關系和相互作用,每個類對象的狀態(tài)轉換,所有活動的相互關系和作用。初步設計對象類的屬性行為和相互關系為每個所設計的類繪制類圖和它們之間的繼承、關聯(lián)、聚合關系圖。類圖的描述能力和繪制方 法如下:· 類的一般描述:屬性的一般表示:visibility:屬性的可視性有三種:+ 表示 public; # 表示 protected;- 表示 :屬性的名稱。N:屬性的多值性:2.

30、* 表示屬性能接受多值;如果無此項表示屬性只接受一個值。visibility name N : type = initialValue property-stringEmployee-address2.*:char-age:int-name2.*:char+getName():char*+setAddress(in addr:char*)type:屬性的實現(xiàn)類型(依賴實現(xiàn)語言的規(guī)范)。initialValueproperty-string只讀property-stringfrozenvisibilitynameparameter-listkindnametypedefaultValueretu

31、rn-typeproperty-stringkind name : type = defaultValuevisibility name (parameter-list) : return-type property-string· 歸納(Generalization)關系:表示兩個類之間的繼承關系。例如,下圖中 Employee 是Manager 的父類:· 關聯(lián)(Association)關系:表示兩個類之間的關聯(lián)關系。例如,下圖描述了 Employee 和Corporation 之間的關聯(lián)關系:Employeedepartment name Position emplo

32、yeeByCorporationaddress namenumberEmployee employeesManagerEmployeeemployeeBy 是 Employee 的屬性成員,其類型為 CorporationemployeeByEmployeeCorporationCorporationEmployee 。箭頭處的 * 表示一個 Corporation 對象有 0 至任意數(shù)量的Employee 對象,即雇用任意多個雇員。上述關聯(lián)關系也可以如下表示:或者Employeedepartment name Position employeeByCorporationaddress nam

33、enumberEmployee employeesCorporationaddress namenumberEmployee employeesEmployeedepartment name Position employeeBy下面的關聯(lián)關系表示同一類的兩個不同對象間的關聯(lián)。它的含義是該雇員可以管理 1 至 10個其他員工。關聯(lián)關聯(lián)關聯(lián)Employeedepartment employeeBy name PositionemployeeSupervised· 類聚合:表示對象之間“整體” 和“部分” 的關系,即在對象整體和對象組成部分之間可能存在著生命期依賴。其中表示當整體不復存在

34、時,部分同時被銷毀的緊密關系。例如,下圖中的 Window 與 Slider、TitleBar 和Panel 之間的關系的關系:TitleBarSliderPanel就W是ind典ow型body title scrollbar聚合表示當對象整體被銷毀之后,對象的組成部分還會繼續(xù)存在的關系。例如,下圖中的 Orchestra 和 Performer聚合關聯(lián)聚合聚合關系樂隊由演奏但樂隊的生存期與演奏存在緊密依賴關系所組成的,之間不的Performer instrument nameOrchestracalender namenumberOfPlayers musicians· 類模板抽象

35、類:下圖中 Shape 就是一個抽象類。類模板類financial instruments類模板MarginAccount類Shape position sizeDraw· 特定對象:下圖中表示一個 對象名為 joeShmoe類的特定對象。其注意,對象名和類名可以省略一個。joeShmoe :name: “Joe Shmoe” address: “main street”financial instrumentsMarginAccountbrokerLoan: double maintenanceMargin: double margin: double marketValueOfS

36、ecurities: doublebuyOnMargin(): void checkSecurityMarginable(): bool estimateRisk(): string進一步設計對象類的屬性行為和相互作用用例用例交互圖交互圖與其他類一個類通訊行為交互圖類類類交互圖· 順序圖(Sequence Diagram)按時間順序顯示一組類對象所實現(xiàn)的協(xié)作。順序圖的基本圖形元素包括:順序圖銷售者者拍品集合拍品項目拍賣成交文書an Objecta Buyer:getCurrentMaxBidselectItempostBid=checknotifySellerchecknewSale

37、sDoc:a Seller:an AuctionItem:AuctionList狀態(tài)消息bidAcceptable方法名selectItem()*迭代依據(jù)方法*for all items in Auctionlist getCurrentMaxBid()flag := 方法minAcceptBidExceeded := check()條件方法條件minAcceptBidExceeded notifySeller()特殊符號 newbidAccepttable new拍賣成交交互操作順序者拍賣品報價通知拍賣者通知拍賣行賣成交文件拍賣者滿意者拍多進程多線程異步異步交互First Landmark

38、Seeker:Second Landmark Seeker:Navigator Object:Mobile Robot Object:MobileRobotNavigator人LandmarkLocatorLandmarkLocator人路標路標路標路標異步路標線程Navigator進程異步運行線程進程被阻塞半箭頭線對象活動異步垂直矩形焦點 FOCFOC異步創(chuàng)建活動下面的×協(xié)作圖協(xié)作圖順序圖協(xié)作圖:Buyer:AuctionListwidget:AuctionItem:Seller確定類對象的狀態(tài)狀態(tài)圖對象類狀態(tài)(用例)活動圖,確定類對象在程序活動中各個階段的屬性變化和方法的調用。狀

39、態(tài)圖狀態(tài)對象狀態(tài)名稱圓角矩形狀態(tài)狀態(tài)活動開始名稱do:/ start名稱特殊狀結束end態(tài)轉換路徑狀態(tài)狀態(tài)箭頭線狀態(tài)轉換狀態(tài)轉換的ActionEvent GuardEvent動作條件ActionGuard狀態(tài)轉換狀態(tài)狀態(tài)狀態(tài)相互排斥任描述規(guī)則何形式組合狀態(tài)圖BuyerRegistrationdo:/examine customer historyBrowerdo:/examine all items in AuctionListItemReviewdo:/getCurrentMaxBid getMinAcceptBidBidding do:/place bidPaymentdo:/send p

40、aymentItemReceivedsessionTerminateBuyersuperstateRegistrationdo:/examine customer historyBrowerdo:/examine all items in AuctionListItemReviewdo:/getCurrentMaxBid getMinAcceptBidBiddingdo:/place bidPaymentdo:/send paymentItemReceivedSessionTerminate狀態(tài)圖Buyer狀態(tài)轉換BackgroundCheckdo:/check previous participationGetInforOnUserdo:/fillOutFormCreditAuthorizatio

溫馨提示

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

評論

0/150

提交評論