版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java語言程序設(shè)計shelly200607@126.comUML類圖簡介面向抽象原則開-閉原則多用組合少用繼承原則高內(nèi)聚-低耦合原則主要內(nèi)容7.1UML類圖簡介UML(UnifiedModelingLanguage)類圖(ClassDiagram)屬于結(jié)構(gòu)圖,常被用于描述一個系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖是由若干類關(guān)聯(lián)在一起,反映系統(tǒng)或者子系統(tǒng)組成結(jié)構(gòu)的靜態(tài)圖。類圖的建模貫穿工程的分析和設(shè)計階段的始終,通常從用戶能夠理解的類開始建模,最終往往成為只有開發(fā)小組才能夠完全理解的類。類圖由如下元素組成:類(Class):是具有共同結(jié)構(gòu)特征、行為特征、聯(lián)系和語義的對象集合的抽象形式。關(guān)聯(lián)(Association):它表示類與類之間的關(guān)系。在類的UML圖中,使用一個長方形描述一個類的主要構(gòu)成,將長方形垂直地分為三層?!舻?層是名字層◆第2層是變量層,也稱屬性層,列出類的成員變量及類型,格式是“變量名字:類型”?!舻?層是方法層,也稱操作層,列出類的方法及返回類型,格式是“方法名字(參數(shù)列表):類型”。7.1.1類的UML圖在類圖中,根據(jù)建模的不同景象,類圖標中不一定列出全部的內(nèi)容。如在建立分析模型或設(shè)計模型時,甚至可以只列出類名,在圖中著重表達的是類與類之間的聯(lián)系;在建立實現(xiàn)模型時,則應(yīng)當在類圖標中詳細給出類的屬性和方法等細節(jié)。1.屬性
屬性(Attribute)在UML類圖標的矩形框中用文字串說明,如下圖所示。
可視性(Visibility)標記表示:
+ 公共# 保護-私用可視性也可以用以下關(guān)鍵字表示:public(公共)、protected(保護)、private(私用)。若可視性標記為“+”或“public”,則為公共屬性,可以被外部對象訪問。若可視性標記為“#’或“protected”,則為保護屬性,可以被本類或子類的對象訪問。若可視性標記為“-”或“private”,則為私用屬性,不可以被外部對象訪問,只能為本類的對象使用??梢曅钥梢匀笔?,表示該屬性不可視。Student類
屬性類型表示:冒號“:”后跟屬性值的數(shù)據(jù)類型。數(shù)據(jù)類型的表示依賴于實現(xiàn)語言,如有的程序設(shè)計語言規(guī)定浮點數(shù)用保留字“Float”表示,有的則規(guī)定用保留字“Real”表示。Student類數(shù)據(jù)類型可以是任何用戶需要的內(nèi)容,包括:來自程序設(shè)計語言如VisualBasic、C++、C#和Java的任何標準數(shù)據(jù)類型。一個已經(jīng)定義的類。接口定義語言(InterfaceDefinitionLanguage,IDL)中的數(shù)據(jù)類型列表中的數(shù)據(jù)類型。讀者在自己的系統(tǒng)建模中能夠使用的其他類型。屬性初始值設(shè)置:可以通過在屬性名稱和數(shù)據(jù)類型之后添加等于號(=)來為屬性指定默認值,如下圖所示。屬性多重性:多重性為可選項,它表達該類的每個實例的屬性值的個數(shù)??梢韵駪?yīng)用于類之間的關(guān)系中那樣把多重性應(yīng)用于屬性。例如,Student類具有屬性Grades。不希望該屬性只包含單個值,而是希望它包含該學生的所有成績,可以是任意多個。派生的屬性:另一種可以為屬性提供的信息是派生值,它可以使用數(shù)學函數(shù)、字符串函數(shù)或者將要在應(yīng)用程序中實現(xiàn)的其他商務(wù)邏輯。要想指出一個屬性是派生的,需要在屬性名之前添加一個前斜線(/),并且要附加一個注釋,其中包含了派生屬性值的指令,如下圖所示。2.操作(方法)
操作(Operation)表示類能夠提供的功能服務(wù)。它在UML類矩形框中用文字串說明,如下圖所示。操作名指示類可提供的功能服務(wù),它后跟圓括號中的參數(shù)列表是可選項,即一個操作可以有參數(shù),也可以沒有參數(shù)。參數(shù)列表由逗號分隔的操作的形式參數(shù)組成,其格式為:
參數(shù)名:類型=缺省值,…Student類返回列表是返回給調(diào)用者的單個變量值,它可以表示該操作程序運行的一個成功標志或者計算的值。7.1.2接口(Interface)表示接口的UML圖使用一個長方形描述一個接口的主要構(gòu)成,將長方形垂直地分為三層?!繇敳康?層是名字層,用<<interface>>修飾名字?!舻?層是常量層,列出接口中的常量及類型,格式是“常量名字:類型”。
◆第3層是方法層,也稱操作層,列出接口中的方法及返回類型,格式是“方法名字(參數(shù)列表):類型”。
類的關(guān)系類之間可以建立四種關(guān)系:泛化、關(guān)聯(lián)、依賴和實現(xiàn)。其標記如下圖所示。如果一個類是另一個類的子類,那么UML通過使用一個實線連接兩個類的UML圖來表示二者之間的繼承關(guān)系。如果A類中成員變量是用B類(接口)來聲明的變量,那么A和B的關(guān)系是關(guān)聯(lián)關(guān)系,稱A關(guān)聯(lián)于B。實現(xiàn)關(guān)系如果A類中某個方法的參數(shù)用B類(接口)來聲明的變量或某個方法返回的數(shù)據(jù)類型是B類型的,那么A和B的關(guān)系是依賴關(guān)系,稱A依賴于B。如果一個類實現(xiàn)了一個接口,那么類和接口的關(guān)系是實現(xiàn)關(guān)系,稱類實現(xiàn)接口7.1.7注釋(Annotation)UML使用注釋為類圖提供附加的說明。UML在一個帶卷角的長方形中顯示給出的注釋,并使用虛線將這個帶卷角的長方形和所它所注釋的實體連接起來。
1)關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是指類之間的語義聯(lián)系。關(guān)聯(lián)可以具有如下特性:關(guān)聯(lián)名稱角色名稱多重性導航性多個類可以關(guān)聯(lián)到同一個類多重性:
多重性(mutiplicity)用來指示一個類的多少對象與另一個類的一個對象相關(guān)。可以在類關(guān)系的任何一端添加多重性,來指示出多重性,如下圖所示。多重性是一個數(shù)值或者數(shù)值范圍,用來指示一個類的幾個對象與另一個類的一個對象相關(guān)。如下圖所示。關(guān)聯(lián)的多重性角色
類關(guān)系還可以通過添加角色來進一步豐富。在類圖中使用角色可以幫助讀者理解第一個類對于第二個類的作用。角色與多重性顯示在相同的位置,在指示類之間關(guān)系線的上面或者下面,如下圖所示。下圖顯示了player類和Team類在關(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)聯(lián),稱為自反關(guān)聯(lián)。2聚集聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示一類對象與另一類對象之間的關(guān)系,是整體與部分的關(guān)系。在陳述需求時使用的“包含”、“組成”、“分為……部分”等字句,往往意味著存在聚集關(guān)系。除了一般的聚集關(guān)系之外,還有兩種特殊的聚集關(guān)系,分別稱為共享聚集和復合聚集。圖9.10共享聚集示例①共享聚集如果在聚集關(guān)系中處于部分方的對象可以同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。①共享聚集②組合聚集如果部分類對象完全隸屬于整體類對象,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱為組合聚集。②組合聚集練習:建模聚合關(guān)聯(lián)和組合關(guān)聯(lián)在這個練習中,將會使用目前為止學習到的所有類型的關(guān)系來創(chuàng)建一個類圖,這些關(guān)系包括普通關(guān)聯(lián)、泛化、聚合和組合。讀者將會綜合運用自己的知識從需求構(gòu)造一個類圖。下面是一個制造商和維修店使用的存貨清單系統(tǒng)的需求列表,從這些信息構(gòu)造一個類圖:存貨由兩個部分組成(零件和產(chǎn)品)。產(chǎn)品由兩個或者更多零件組成,系統(tǒng)可以擁有無限多個零件和產(chǎn)品。存貨中的部分零件包括調(diào)速輪、輪齒和加力燃燒室。一名倉庫保管員維護貨存。一名裝配工組裝產(chǎn)品,一名維修員維修產(chǎn)品。完成的產(chǎn)品包括1-3個標簽:Manufacturer標簽指示產(chǎn)品已經(jīng)完成;Repair標簽指示產(chǎn)品已經(jīng)檢修過;FCC標簽指示產(chǎn)品中包含加力燃燒室。練習設(shè)計一組幾何對象類圖。組中父類為“幾何單項”,由之衍生“線”、“圓”、“方”,“橢圓”、“多邊形”、“點”等類。幾何單項多邊形圓矩形橢圓線點幾何單項多邊形圓矩形橢圓線點11..*{有序}7.2面向抽象原則7.2.1抽象類和接口抽象(abstract)類具有如下特點:◆抽象類中可以有abstract方法,也可以有非abstract方法。◆抽象類不能用new運算符創(chuàng)建對象?!羧绻粋€非抽象類是某個抽象類的子類,那么它必須重寫父類的abstract方法。◆抽象類聲明的對象做上轉(zhuǎn)型對象。A.java,B.java,Application.java
publicabstractclassA{publicabstractintadd(intx,inty);}publicclassBextendsA{publicintadd(intx,inty){returnx+y;}}publicclassApplication{publicstaticvoidmain(Stringargs[]){Aa;a=newB();//a是B類對象的上轉(zhuǎn)型對象intm=a.add(3,2);//a調(diào)用子類B重寫的add()方法System.out.println(m);//輸出結(jié)果為5}}接口(interface)具有如下特點:◆接口中只可以有public權(quán)限的abstract方法,不能有非abstract方法?!艚涌谟深惾崿F(xiàn),即一個類如果實現(xiàn)一個接口,那么它必須重寫接口中的abstract方法?!艚涌诨卣{(diào)。Com.java,ComImp.java,Application.java
publicinterfaceCom{publicabstractintsub(intx,inty);}classComImpimplementsCom{publicintsub(intx,inty){returnx-y;}}publicclassApplication{publicstaticvoidmain(Stringargs[]){Comcom;com=newComImp();//com變量存放ComImp類的對象的引用
intm=com.sub(8,2);//com回調(diào)ComImp類實現(xiàn)的接口方法System.out.println(m);//輸出結(jié)果為6}}7.2.2面向抽象所謂面向抽象編程,是指當設(shè)計一個類時,不讓該類面向具體的類,而是面向抽象類或接口,即所設(shè)計類中的重要數(shù)據(jù)是抽象類或接口聲明的變量,而不是具體類聲明的變量。
◆
Circle.java,Pillar.java
publicclassCircle{doubler;Circle(doubler){this.r=r;}publicdoublegetArea(){return(3.14*r*r);}}publicclassPillar{
Circlebottom;doubleheight;Pillar(Circlebottom,doubleheight){this.bottom=bottom;this.height=height;}publicdoublegetVolume(){returnbottom.getArea()*height;//bottom可以調(diào)用子類重寫的getArea方法}}面向抽象重新設(shè)計Pillar類。首先編寫一個抽象類Geometry(或接口),其中定義兩個一個抽象的getAre()方法。publicabstractclassGeometry{//如果使用接口需用interface來定義Geometry。publicabstractdoublegetArea();}接著重新設(shè)計Pillar類以及Circle和Rectangle類。publicclassPillar{
Geometrybottom;//bottom是抽象類Geometry聲明的變量doubleheight;Pillar(Geometrybottom,doubleheight){this.bottom=bottom;this.height=height;}publicdoublegetVolume(){returnbottom.getArea()*height;//bottom可以調(diào)用子類重寫的getArea方法}}publicclassCircleextendsGeometry{doubler;Circle(doubler){this.r=r;}publicdoublegetArea(){return(3.14*r*r);}}publicclassRectangleextendsGeometry{doublea,b;Lader(doublea,doubleb){this.a=a;this.b=b;}publicdoublegetArea(){returna*b;}}publicclassApplication{publicstaticvoidmain(Stringargs[]){Pillarpillar;Geometrybottom;bottom=newRectangle(12,22,100);pillar=newPillar(bottom,58);
//pillar是具有矩形底的柱體System.out.println("矩形底的柱體
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年平頂山工業(yè)職業(yè)技術(shù)學院單招職業(yè)技能考試參考題庫含詳細答案解析
- 2026年湖北水利水電職業(yè)技術(shù)學院單招職業(yè)技能考試模擬試題含詳細答案解析
- 2026年山西青年職業(yè)學院單招職業(yè)技能考試參考題庫含詳細答案解析
- 2026年朔州陶瓷職業(yè)技術(shù)學院單招綜合素質(zhì)考試參考題庫含詳細答案解析
- 2026江蘇蘇州市生物醫(yī)藥產(chǎn)業(yè)集團有限公司招聘1人考試重點題庫及答案解析
- 2026年安徽電氣工程職業(yè)技術(shù)學院單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2026年貴州職業(yè)技術(shù)學院單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2026年上海戲劇學院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細解析
- 2026年銅川陽光中學教師招聘參考考試試題及答案解析
- 2026年山東文化產(chǎn)業(yè)職業(yè)學院單招綜合素質(zhì)考試備考試題含詳細答案解析
- DB41∕T 2018-2020 地質(zhì)遺跡保護技術(shù)規(guī)范
- 膠帶機保潔管理辦法
- 2025年國防科工局面試模擬題庫解析
- 老舊小區(qū)改造的國內(nèi)外現(xiàn)狀與發(fā)展趨勢
- 《人工智能導論》高職人工智能通識課程全套教學課件
- 食堂檔口承包合同協(xié)議書
- 云南公務(wù)接待管理辦法
- 農(nóng)行監(jiān)控錄像管理辦法
- 急性呼吸衰竭的診斷與治療
- 職業(yè)技能認定考評員培訓
- DB11∕T 1448-2024 城市軌道交通工程資料管理規(guī)程
評論
0/150
提交評論