第2章面向?qū)ο笈cUML(2學(xué)時)_第1頁
第2章面向?qū)ο笈cUML(2學(xué)時)_第2頁
第2章面向?qū)ο笈cUML(2學(xué)時)_第3頁
第2章面向?qū)ο笈cUML(2學(xué)時)_第4頁
第2章面向?qū)ο笈cUML(2學(xué)時)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023/2/51

面向?qū)ο笈cUML上講回顧UML的三位創(chuàng)始人分別是?UML于哪年被OMG組織正式批準?是什么版本?請說出UML是一種什么樣的語言?請說出一種4+1觀點分別是什么?你現(xiàn)在能說出幾種UML圖?2023/2/522023/2/53一些面向?qū)ο蟮母拍?UML組成2本講主要內(nèi)容2.3公共機制2.2規(guī)則2.1構(gòu)造塊2023/2/54一些面向?qū)ο蟮母拍?UML組成2當前正在講述……2.3公共機制2.2規(guī)則2.1構(gòu)造塊2023/2/55無處不在的對象類類是加工小甜餅的模子可以用類壓出許多新的小甜餅對象世界由對象而構(gòu)成。對象無處不在??紤]到的屬性和行為越多,所建立的模型就越符合實際。真正制造洗衣機的工程師普通人群2023/2/56繼承(Inheritance)一些權(quán)威人士認為:抽象對于建模者來說是最重要的技術(shù)。我們應(yīng)該弄清楚什么應(yīng)該納入模型中,什么應(yīng)該舍去。家用商品家用電器家具家用電器2023/2/57封裝(Encapsulation)當一個對象執(zhí)行自己的操作時,它對外隱蔽了操作的細節(jié)。爆米花是怎么炸出來的?關(guān)心這個干嗎?2023/2/58多態(tài)(Polymorphism['p?li'm?:fiz?m])不同的類具有相同名稱的操作,每個類都能夠知道如何執(zhí)行自己的操作。2023/2/59一些面向?qū)ο蟮母拍?UML組成22.3公共機制2.2規(guī)則2.1構(gòu)造塊當前正在講述……UML構(gòu)造塊公共機制事物關(guān)系規(guī)則規(guī)格描述修飾公共分類擴展機制對模型中最具有代表性的成分的抽象把事物結(jié)合在一起聚集了相關(guān)的事物(類圖,構(gòu)件圖,部署圖,對象圖,用例圖,順序圖,協(xié)作圖,狀態(tài)圖,活動圖)UML組成圖一個結(jié)構(gòu)良好的模型所應(yīng)該遵循的有一套貫穿整個語言且一致應(yīng)用的公共機制,使得UML變得較為簡單,且風(fēng)格(建筑)一致。2023/2/511一些面向?qū)ο蟮母拍?UML組成22.3公共機制2.2規(guī)則2.1構(gòu)造塊-事物當前正在講述……注釋2023/2/512UML構(gòu)造塊——(1)事物

代表面向?qū)ο笾械念?,對象等概念,是?gòu)成圖的最基本的常用的元素。一個模型元素可以用于多個不同的圖中。注釋類和對象類是對一組具有相同屬性、相同操作、相同關(guān)系和相同語義的對象的抽象UML中類是用一個矩形表示的,它包含三個區(qū)域,最上面是類名、中間是類的屬性、最下面是類的方法對象則是類的一個實例2023/2/514類的可視化表示——屬性圖3.4類和類的屬性圖3.6屬性可以帶類型和缺省值2023/2/515類的可視化表示——操作圖3.7類的操作放在屬性列表之下,并用一條分割線與屬性隔開圖3.8操作的型構(gòu)圖3.10省略符號說明還有沒列出來的屬性或操作接口接口是描述某個類或構(gòu)件的一個服務(wù)操作集用例用例是著名的大師IvarJacobson首先提出的,現(xiàn)已經(jīng)成為了面向?qū)ο筌浖_發(fā)中一個需求分析的最常用工具用例——系統(tǒng)的一個功能:系統(tǒng)的一組使用場景、執(zhí)行的一系列動作。UseCase構(gòu)件在實際的軟件系統(tǒng)中,有許多要比“類”更大的實體,例如一個COM組件、一個DLL文件、一個JavaBeans、一個執(zhí)行文件等等。為了更好地對在UML模型中對它們進行表示,就引入了構(gòu)件(也譯為組件)構(gòu)件是系統(tǒng)設(shè)計的一個模塊化部分,它隱藏了內(nèi)部的實現(xiàn),對外提供了一組外部接口。在系統(tǒng)中滿足相同接口的組件可以自由地替換構(gòu)件節(jié)點為了能夠有效地對部署的結(jié)構(gòu)進行建模,UML引入了節(jié)點這一概念,它可以用來描述實際的PC機、打印機、服務(wù)器等軟件運行的基礎(chǔ)硬件節(jié)點是運行時存在的物理元素,它表示了一種可計算的資源,通常至少有存儲空間和處理能力包對于一個中大型的軟件系統(tǒng)而言,通常會包含大量的類,因此也就會存在大量的結(jié)構(gòu)事物、行為事物,為了能夠更加有效地對其進行整合,生成或簡或繁、或宏觀或微觀的模型,就需要對其進行分組。在UML中,提供了“包(Package)”來完成這一目標注釋元素注釋事物則是用來錦上添花的,它是用來在UML模型上添加適當?shù)慕忉尣糠?/p>

注釋2023/2/523注釋元素(續(xù))圖3.14附加的注釋可以提供有關(guān)類的更多信息2023/2/524一些面向?qū)ο蟮母拍?UML組成22.3公共機制2.2規(guī)則2.1構(gòu)造塊-關(guān)系當前正在講述……2023/2/525關(guān)聯(lián):連接(connect)模型元素及鏈接(link)實例。依賴:表示一個事物以某種方式依賴于另一種事物。泛化:表示一般與特殊的關(guān)系,即“一般”元素是“特殊”關(guān)系的泛化。聚合、組合:表示整體與部分的關(guān)系。UML構(gòu)造塊——(2)關(guān)系事物之間的關(guān)系。2023/2/526關(guān)聯(lián):連接(connect)模型元素。依賴:表示一個事物以某種方式依賴于另一種事物。泛化:表示一般與特殊的關(guān)系。聚合、組合:表示整體與部分的關(guān)系。(二)關(guān)系事物之間的關(guān)系。2023/2/527(1)關(guān)聯(lián)(Associations)classmatefriend對象之間以某種方式發(fā)生關(guān)聯(lián)當Susan打開電視機時,她與TV之間就發(fā)生了單向關(guān)聯(lián)Turnon對象之間也可以以多種方式發(fā)生關(guān)聯(lián)妞妞與丫丫既是同學(xué)也是好朋友28定義:當類之間在概念上有連接關(guān)系時,類之間的連接叫做關(guān)聯(lián)。PersonCompanyworksforemployeeemployer角色角色*1多重性多重性關(guān)聯(lián)關(guān)系描述(1)關(guān)聯(lián)(Associations)Tip:關(guān)聯(lián)(Association)表示兩個類之間存在某種語義上的聯(lián)系。關(guān)聯(lián)關(guān)系提供了通信的路徑,它是所有關(guān)系中最通用、語義最弱的。使用一條實線來表示關(guān)聯(lián)關(guān)系。方向TeacherStudentsteaches單向雙向(1)關(guān)聯(lián)—方向(Navigation)PlayerTeamPlaysonEmployeeemployeeemployer圖4.3兩個類之間的不同關(guān)聯(lián)可以表示在一幅圖中隊員和球隊之間的關(guān)聯(lián)PublicclassUser

{

PublicList<Order>GetOrder()

{

returnnewList<Order>();}

}

PublicClassOrder

{

PublicUserGetUserByOrderID(stringOrderId)

{

ReturnnewUser();

}

}(1)關(guān)聯(lián)—方向(Navigation)練習(xí):請描述如下User類與Order類之間關(guān)聯(lián)的方向。OrderUserBelongstoowns1..*12023/2/531(1)關(guān)聯(lián)—多重性(multiplicity)PersonBusRidesin11CarRidesin11rideride一個類可以和多個類關(guān)聯(lián)2023/2/532(1)關(guān)聯(lián)—多重性(multiplicity)BasketballTeam1多個類可以和同一個類關(guān)聯(lián)TeamForwardPlaysonPlaysonCenterPlaysonGuard關(guān)系——多重性多重性Howtoexplainmultiplicity?2023/2/533特定數(shù)字

CarEnginehas11TeacherStudentteaches1*TricycleWheelhas13多重性及UML表示法可能的關(guān)聯(lián)表示:特定數(shù)字/非特定數(shù)字/特定范圍/枚舉

非特定數(shù)字*定義:多重性(multiplicity),即一個類的單個對象和另一個類的多個對象關(guān)聯(lián)。表示多重性的方法是在參與關(guān)聯(lián)的類附近的關(guān)聯(lián)線上注明多重性數(shù)值?!?..*”或“*”:表示“0”或“多”;“1..*”:表示“1或多”;特定范圍m..nFullTimeStudentCreditHourtakes112..18EggBoxEggholds112,24多重性及UML表示法BankTellerCustomerserves11..*HouseChinmeyhas10..1枚舉,orHowtoReadit?練習(xí):我們經(jīng)常去圖書館借書,那么圖書與學(xué)生之間關(guān)系的多重性應(yīng)該如何表示?對于這幅圖這個雙向關(guān)聯(lián)我們應(yīng)該怎么去讀它?BookStudentborrowedtoborrow0..7

*(2)關(guān)聯(lián)—依賴(Dependencies)思考:請列舉程序中存在依賴關(guān)系的例子。有兩個元素X、Y,如果修改元素X的定義可能會引起對另一個元素Y的定義的修改,則稱元素Y依賴(Dependency)于元素X。對于類間關(guān)系而言,Dependency(依賴關(guān)系)表示一個類依賴于另一個類的定義,其中一個類的變化將影響另外一個類。關(guān)系——依賴2023/2/539(2)關(guān)聯(lián)——依賴ClassAVar1:longFunction1()Function2()Function3(para:ClassB)ClassBField1:StringOperation1()Operation2()局部變量靜態(tài)方法方法的參數(shù)ClassA{publicvoidFunction1(){ClassBb=newClassB();b.Operation1(); deleteb;}}voidFunction2(){ClassB.Operation2();}PublicvoidFunction3(ClassBpara){Strings=para.field1;}類之間常見的依賴關(guān)系如下:類B以局部變量的形式存在于類A的方法中類B以參數(shù)的形式傳入類A的方法類A調(diào)用類B的靜態(tài)方法關(guān)系——依賴2023/2/540(3)關(guān)聯(lián)——聚合組合在關(guān)聯(lián)關(guān)系中,有兩種比較特殊的關(guān)系:聚合和組合2023/2/542(3)關(guān)聯(lián)—聚合(Aggregation)一個典型的計算機系統(tǒng)就是聚集的一個例子——它由許多不同類型的對象組合而成的。聚合關(guān)系:聚合(Aggregation)是一種特殊形式的關(guān)聯(lián)。聚合表示類之間的關(guān)系是整體與部分的關(guān)系。計算機計算機機箱顯示器鍵盤鼠標音箱2023/2/543(3)關(guān)聯(lián)—組合(Composition)在組成體中,部分體有時可能會先于組成體消亡,如果組成體被銷毀,則部分體隨組成體一同被銷毀組合關(guān)系:Composition。組合是聚合的變種,加入了一些重要的語義。如果發(fā)現(xiàn)“部分”類的存在,是完全依賴于“整體”類的,那么就應(yīng)該使用“組合”關(guān)系來描述。樹樹葉樹枝樹根聚合與組合The"nosharing"ruleisthekeytocomposition.Anotherassumptionisthatifyoudeletethewhole,itshouldautomaticallyensurethatanyownedpartsalsoaredeleted.2023/2/544計算機機箱顯示器鍵盤鼠標音箱樹樹葉樹枝樹根練習(xí):俱樂部與會員、汽車與輪胎、多邊形與點。Window窗體由滑動條slider、頭部Header和工作區(qū)Panel組合而成。(3)關(guān)聯(lián)——聚合組合1

4汽車輪胎Windows窗體PanelHeaderSlider1*ClubPerson1

3..*PolygonPoint聚合與組合Aggregationisthepart-ofrelationship.The"nosharing"ruleisthekeytocomposition.Anotherassumptionisthatifyoudeletethewhole,itshouldautomaticallyensurethatanyownedpartsalsoaredeleted.2023/2/546三種關(guān)聯(lián)的比較特征正常關(guān)聯(lián)聚集組合UML標記實線空心菱形實心菱形擁有關(guān)系無弱強傳遞性無有有傳遞方向無整體到部分整體到部分關(guān)系——比較2023/2/548(3)關(guān)聯(lián)關(guān)系——聚合ClassAb:ClassBFunction()ClassBField1:StringOperation1()Operation2()A包含有B的全局對象ClassClassA{ PrivateClassB*b;publicFunction(){b=newClassB();}}B在合適的時機創(chuàng)建ClassAhasaClassB,notcomposedbyClassB.是一種弱的擁有關(guān)系,體現(xiàn)的是A對象可以包含B對象,但B對象不是A對象的組成部分。Aggregation(聚合關(guān)系)是一種弱的“擁有”關(guān)系。2023/2/549(3)關(guān)聯(lián)關(guān)系——組合ClassAb1:ClassBb2:ClassBClassA()ClassBField1:StringOperation1()Operation2()A包含有B的全局對象ClassClassA{ PrivateClassBb1,b2; publicClassA(){b1=newClassB();b2=newClassB();}}ClassAhasaClassB,andcomposedbyClassB.是一種強的擁有關(guān)系,體現(xiàn)了嚴格的部分和整體的關(guān)系,部分和整體的生命周期一致。Composition(組合關(guān)系)是一種強的“擁有”關(guān)系,它要求普通的聚合關(guān)系中代表整體的對象負責代表部分的對象的生命周期。2023/2/550(4)繼承和泛化圖4.14動物王國的繼承關(guān)系泛化關(guān)系描述了一般事物與該事物中的特殊種類之間的關(guān)系,也就是父類與子類之間的關(guān)系。猴子獅子虎獵豹貓鳥動物猴子獅子虎獵豹貓鳥動物2023/2/551抽象類——指沒有實例的類,定義一些抽象的操作,即不提供實現(xiàn)方法的操作,只提供操作的特征。并附以{abstract}。交疊泛化——在繼承樹中,若存在某種具有公共父類的多重繼承,稱為是交疊{overlapping}的。否則是不交的{disjoint}。完全泛化——一般類特化出它所有的子類,稱為完全泛化,記為{complete}。不完全泛化——即未特化出它所有的子類,稱為是不完全泛化的,表示為{incomplete}.繼承與泛化{complete}PersonFemaleMale性別完全泛化{overlapping}交通工具交疊泛化汽車船水陸兩棲車{incomplete}(4)繼承和泛化{abstract}有關(guān)泛化的約束(4)繼承和泛化{complete}{incomplete}{incomplete}請解釋如下這幅圖的涵義其他關(guān)聯(lián)2023/2/5552023/2/556(1)關(guān)聯(lián)上的約束

(ConstraintsonAssociations)圖4.5可以對關(guān)聯(lián)施加約束。在這個例子中,Serves關(guān)聯(lián)上的{ordered}約束說明銀行出納員要按照顧客排隊的次序為顧客服務(wù)圖4.6表示兩個關(guān)聯(lián)之間的{or}約束2023/2/557(2)關(guān)聯(lián)類

(AssociationClasses)圖4.7關(guān)聯(lián)類對關(guān)聯(lián)的屬性和操作建模。它與所對應(yīng)的關(guān)聯(lián)線之間通過虛線連接起來,并且還可以和其他類關(guān)聯(lián)用戶工作站

授權(quán)**授權(quán)優(yōu)先級特權(quán)開始一個時間片關(guān)聯(lián)類(2)關(guān)聯(lián)類Associationclassesallowyoutoaddattributes,operations,andotherfeaturestoassociations2023/2/558(2)關(guān)聯(lián)類WhatbenefitdoyougainwiththeassociationclasstoOffsettheextranotationyouhavetoremember?Theassociationclassaddsanextraconstraint,inthattherecanbeonlyoneinstanceoftheassociationclassbetweenanytwoparticipatingobjects.2023/2/559(2)關(guān)聯(lián)類當它作為一個完全的類時,將不再具有一個潛在的約束:Person與Meeting之間一對一的關(guān)系。2023/2/560(2)關(guān)聯(lián)類YoucanhaveonlyonecompetencyforeachcombinationofPersonandSkill.ThetopdiagraminFigure5.14wouldnotallowaCompanytohavemorethanoneRoleonasingleContract.

SoWeshoulddesignroleasafullclass.2023/2/5612023/2/562兩個以上的類之間也可以互相關(guān)聯(lián)。(2)關(guān)聯(lián)類

(AssociationClasses)2023/2/563(3)鏈

(Links)圖4.8鏈是關(guān)聯(lián)的實例。鏈連接的是對象而不是類。和對象名要加下劃線一樣,鏈名也要加下劃線例如:特定的隊員效力一個特定的球隊2023/2/564(4)限定關(guān)聯(lián)

(QualifiedAssociations)圖4.11房間預(yù)訂列表和它所包含的預(yù)訂登記之間具有“一對多”多重性圖4.12UML的限定符圖標,當你使用它時,你限定了一種關(guān)聯(lián)*當關(guān)聯(lián)的多重性是一對多時,產(chǎn)生查找問題。一個類必須要依賴一個具體的屬性值來找到正確的對象。這通常是一個標識符號——限定符(qualifier)。2023/2/565(5)自身關(guān)聯(lián)

(ReflexiveAssociations)

圖4.13自身關(guān)聯(lián)的關(guān)聯(lián)線從某個類出發(fā)又回到其自身。自身關(guān)聯(lián)也可以指明角色名、關(guān)聯(lián)名、關(guān)聯(lián)方向和多重性一個類的對象可以充當多種角色時,自身關(guān)聯(lián)就可能發(fā)生。人治療病人醫(yī)生帶有職責的遞歸關(guān)聯(lián)2023/2/566一些面向?qū)ο蟮母拍?UML組成22.3公共機制2.2規(guī)則2.1構(gòu)造塊-圖當前正在講述……2023/2/567一些面向?qū)ο蟮母拍?UML組成22.3公共機制2.2規(guī)則2.1構(gòu)造塊當前正在講述……2023/2/5命名

為事物、關(guān)系和圖起名范圍

給一個名稱以特定含義的語境可見性

怎樣讓其他人使用或者看見名稱完整性

事物如何正確、一致的相互聯(lián)系執(zhí)行

運行或模擬動態(tài)模型的含義是什么UML基本組成——規(guī)則一個結(jié)構(gòu)良好的模型應(yīng)該遵循的規(guī)則。2023/2/569一些面向?qū)ο蟮母拍?UML組成22.3公共機制2.2規(guī)則2.1構(gòu)造塊當前正在講述……UML公共機制規(guī)格說明構(gòu)造塊語法及語義的文字敘述,及描述系統(tǒng)的細節(jié)修飾基本圖形符號的修飾:+,-,#,斜體等。通用劃分類與對象之二分接口與實現(xiàn)之分離擴展機制非閉合語言,可擴展UML有一套貫穿整個語言且一致應(yīng)用的公共機制,使得UML變得較為簡單,且建筑風(fēng)格一致。UML公共機制——擴展機制優(yōu)秀的擴展機制。防止UML變得過于復(fù)雜,實現(xiàn)必要的擴展和調(diào)整。構(gòu)造型:在實際的建模過程中,可能會需要定義一些特定于某個領(lǐng)域或某個系統(tǒng)的構(gòu)造塊標記值:則是用來為事物添加新特性的。標記值的表示方法

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論