華南理工大學UML-2面向對象方法學_第1頁
華南理工大學UML-2面向對象方法學_第2頁
華南理工大學UML-2面向對象方法學_第3頁
華南理工大學UML-2面向對象方法學_第4頁
華南理工大學UML-2面向對象方法學_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件需求分析與建模-面向對象方法學概述主講:( )2022年8月27日1內容面向對象方法學的基本要素對象概念OOA、OOD和OOP信息系統(tǒng)建模1. 面向對象方法學的要素31.1 對象:世界由對象構成對象是面向對象開發(fā)模式的基本成份。每個對象可用它本身的一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務,它描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其它對象使用。1.2 類:物以類聚類是一組具有相同數據結構和相同操作的對象的集合。類的定義包括一組數據屬性和在數據上的一組合法操作。類定義可以視為一個具有類似特性與共同行為的對象的模板,可用來產生對象。

2、在一個類中,每個對象都是類的實例 (Instance),它們都可使用類中提供的函數。對象的狀態(tài)則包含在它的實例變量,即實例的屬性中。例: class Post_office private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; ; main ( ) Post_office My_PO ; req_type My_request ; money_t

3、ype My_payment ; My_PO.Send ( My_request, My_payment) ; 繼承(inheritance):類可分層,下層子類與上層父類有相同特征,稱為繼承。繼承是使用已存在的定義做為基礎建立新定義的技術。新類的定義可以是既存類所聲明的數據和新類所增加的聲明的組合。新類復用既存的定義,而不要求修改繼承類。既存類可當做基類來引用,則新類相應地可當做派生類來引用。1.3 繼承:世界的相似性與多樣性使用繼承設計一個新類,可以視為描述一個新的對象集,它是既存類所描述對象集的子集合。這個新的子集合可以認為是既存類的一個特殊化。Quadrilateral類是Polygo

4、n類的特殊化。Quadrilateral是限制為四條邊的多邊形。我們還可以進一步地把類Quadrilateral特殊化為Rectangle 。類Quadrilateral的界面可以等同于類Polygon的界面,而Rectangle類的界面又與Quadrilateral類的界面相同。新類的界面還可以被看做是既存類界面的一個擴充界面。例如,從一個既存的車輛類派生的四輪驅動車類可能不僅是車輛類子集合定義的特殊化,而且還可能在新類的界面中引入新的能力。在類的繼承層次中,Quadrilateral的實際參數可以替換Polygon的形式參數。類Quadrilateral的界面與類Polygon的界面是相容

5、的Quadrilateral的界面可響應Polygon界面的所有消息。 1.4 消息:合作之道消息(message):對象間只能通過發(fā)送消息進行聯(lián)系,外界不能處理對象的內部數據,只能通過消息請求它進行處理(如果它提供相應消息的話)。消息是一個對象與另一個對象的通信單元,是要求某個對象執(zhí)行類中定義的某個操作的規(guī)格說明。發(fā)送給一個對象的消息定義了一個方法名和一個參數表(可能是空的),并指定某一個對象。一個對象接收的消息則調用消息中指定的方法,并將形式參數與參數表中相應的值結合起來。例如,要獲取一個人的身高,可以使用以下語句:aPerson.getHeight(aUnit);關聯(lián)和聚合對象與對象之間

6、通過消息傳遞機制形成了不同的關系,這些關系可根據強弱程度分為:關聯(lián)(Association)和聚合(Aggregation).1.關聯(lián):是一種弱的連接關系,不構成完全的依賴關系。(例如,汽車和乘客,或者教室與學生,書架與書)2.聚合:是一種強關聯(lián)關系,表示“擁有”關系或整體與部分的關系;通常用于將不同的對象通過聚合關系形成一個整體,即形成了“部分-整體”的層次結構”(例如汽車,電腦,微波爐)通常還存在另外兩種關聯(lián)關系,稱為組合(Composition)和依賴關系(Dependency)3.組合:表示一種強得多的“擁有”關系,在一個組合關系里面,部分和整體的生命周期是一樣。(例如,人和四肢,樹和

7、樹葉,公司和部門)在Java語言里面,聚合和組合從語法上是沒辦法區(qū)分的,需要考察類之間的邏輯關系。4.依賴關系:依賴總是單向的,表示一個類依賴于另一個類的定義。(例如人可以買房或買車)依賴關系:Public class PersonPublic void buy (Car car)Public void buy(House house)關于重用面向對象方法中的兩種主要重用方式:(1)繼承;(2)組合/聚合。一般的重用類別:(1)Copy & Paste;(2)函數重用;(3)類庫;(例如JDK)(4)組件、構件或中間件;(如IBM MQ)(5)設計模式;(6)框架;(例如EJB,VCL,STL

8、)2. 對象概念21f1f2f3fifnSgi(X,S)S輸出輸出1、Object : = ID + Method + Attribute + Message特點:以數據為中心,不設與數據無關的操作;Object主動處理而不 被動地等待被處理,外部只能通過message請求操作;具有黑盒性:外部操作時,無須知道該object內部的數據結構及算法;具有并行性:不同object各自獨立地處理自身數據,彼此間僅通過傳遞message完成通信;模塊獨立性好: 內聚強( )、耦合松( )2、Class:具有相同數據和相同操作的一組對象;3、Instance:某個class描述的具體對象;4、Messag

9、e: = object_ID. method_ID (parameter(s);5、Method: object能做的操作,亦稱為service 、responsibility, 在 class 中須定義相應的代碼;6、Attribute :object 的固有數據; 7、Inheritance:子類自動共享父類的attributes 和methods ,而不必重復定義。類和對象對象實體類抽象數據類型計算機世界實例化抽 象映 射映 射現實世界類和對象的關系每一個對象都是某一個類的實例每一個類在某一時刻都有零個或更多的實體類是靜態(tài)的;它們的存在、語義和關系在執(zhí)行前就已經定義好了對象是動態(tài)的; 它

10、們在程序執(zhí)行時可以被創(chuàng)建和刪除Class 中國人中國人 Attributes中國人 Methods張山 (instance) Class 中國人 張山的 AttributesClass 上海人 (子類)上海人 Attributes 上海人 Methods Class 中國人李士 (instance) 中國人李士的 Attributes上海人李士的 Attributes Class 上海人例:特點:若上海人的 methods中有與中國人的同名,則李四使用該 method 時以上海人為準,不執(zhí)行中國人中定義的同名 method。傳遞性(transitivity):AB、BC AC, 一個 clas

11、s 繼承了上層全部 classes 的一切性質。一個子類只 有 一 個父類稱為單 繼 承 (single inheritance), 一個子類可有多個父類稱為多重繼承(multiple inheritance). 注意:multiple inheritance 在定義中應避免二義性(ambiguity),即二個父類中定義重名,但各具不同性質。FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw := take a card from a deckMethod:Draw := displaya graphical

12、 objectMethod:Draw := ?例:8 多態(tài)Polymorphism:以不同方式響應同一消息的不同對象,使對象可以不必知道相互的類型而交互不同層次的 classes 可共享一個method名,但按各自的方式來實現這種 method。C+ 中定義了虛函數(virtual function)來實現這一功能。即一個method有多個版本,運行時才決定執(zhí)行哪一個。故亦稱為動態(tài)聯(lián)編(dynamic binding)或滯后聯(lián)編(late binding)修改與擴充可以很容易地通過派生子類來完成范例:多態(tài)class abstract Shape public abstract void dra

13、w();class Rectangle extends Shape / 覆蓋(override)基類方法 public void draw() . /* 繪制矩形 */ class Circle extends Shape / 覆蓋(override)基類方法 public void draw() /* 繪制圓形 */ 應用多態(tài)性假設我們有一個數組sharr,里面放著一排Shape,但是不知道哪些是Rectangle,哪些是Circle。利用多態(tài)性,我們可以:for (int i = 0; i sharr.length; +i) Shape shape = (Shape)sharri; sha

14、pe.draw();遍歷整個數組的過程中,各個Shape自己知道應當如何在畫布上繪制自己。shape.draw()這同一行代碼在shape指向不同的對象時表現出不同的行為,這就是所謂多態(tài)性double avg (const double a , int size) ;double avg (const int a , int size) ;double avg (const double a , int size) ; double sum = 0.0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( sum / size ) ; dou

15、ble avg (const int a , int size) ; int sum = 0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( (double) sum / size ) ; main() int k3 = 1, 2, 3 ; double x3 = 1.1, 2.2, 3.3 ; cout avg(k, 3) “ int average n” ; cout avg(x, 3) “ double average n” ;9、Overloading Function (or parameter) overloading :不

16、同函數共用一個名字,而調用參數的特征不同。例: Operator overloading : 同一運算符 (operator)作用于不同類型的操作數 (operand) 上面。在編譯(compile)階段就決定了使用類型及執(zhí)行代碼,故亦稱為靜態(tài)聯(lián)編 (static binding)或先前聯(lián)編 (early binding) 。 3. 面向對象的分析/設計/編程353.1 概述面向對象的分析(OOA)分析問題論域,找出問題解決方案,發(fā)現對象,分析對象的內部構成和外部關系,建立軟件系統(tǒng)的對象模型面向對象的設計(OOD)根據已確定的系統(tǒng)對象模型,運用面向對象技術,進行系統(tǒng)軟件設計面向對象的編程(OO

17、P)在軟件生命周期全過程運用面向對象方法L.M.Northrop:“盡管面向對象語言正取得令人振奮的發(fā)展,但編程并不是軟件開發(fā)問題的主要根源。需求分析與設計問題更為普遍并且更值得解決。因此面向對象開發(fā)技術的焦點不應該只對準編程階段,而應更全面地對準軟件工程的其他階段。面向對象方法真正意義深遠的目標是它適合于解決分析與設計期間的復雜性并實現分析與設計的復用。面向對象的開發(fā)不僅僅是編程,必須在整個軟件生命周期采用一種全新的方法,這一觀點已被人們所接受。軟件工程百科全書紐約,1994面向對象的分析面向對象的設計面向對象的編程面向對象的測試面向對象的軟件維護3.2 面向對象的分析1. 問題論域分析業(yè)務

18、范圍,業(yè)務規(guī)則,業(yè)務處理過程,確定系統(tǒng)的責任,范圍和邊界,確定系統(tǒng)的需求2. 發(fā)現和定義對象和類識別對象和類,確定它們的內部特征:屬性和操作,這是一個抽象過程3. 識別對象的外部聯(lián)系對象與對象,類與類之間的各種外部聯(lián)系,包括一般與特殊,整體與部分,實例連接(關聯(lián)),消息連接等4. 建立系統(tǒng)的靜態(tài)結構模型對象類圖和對象圖,系統(tǒng)與子系統(tǒng)結構圖等,繪制相應的圖5. 建立系統(tǒng)的動態(tài)行為模型對象之間的交互關系等3.3 面向對象的設計設計對象和類具體設計對象和類的屬性,操作,設計對象與類的各種外部聯(lián)系的實現結構,設計消息與事件的內容、格式等設計系統(tǒng)結構設計組件與子系統(tǒng),以及它們的相互的靜態(tài)和動態(tài)關系設計問題論域子系統(tǒng)負責領域的業(yè)務服務設計人機交互系統(tǒng)設計數據管理子系統(tǒng)設計任務管理子系統(tǒng)進程管理設計優(yōu)化,提高系統(tǒng)性能詳細的面向對象設計與語言有關。一般地,所有的語言都可以完成面向對象實現,但某些語言能夠提供更豐富的語法,能夠顯式地描繪在面向對象分析和面向對

溫馨提示

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

評論

0/150

提交評論