版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言程序設(shè)計(jì)shelly200607@126.comUML類圖簡(jiǎn)介面向抽象原則開-閉原則多用組合少用繼承原則高內(nèi)聚-低耦合原則主要內(nèi)容7.1UML類圖簡(jiǎn)介UML(UnifiedModelingLanguage)類圖(ClassDiagram)屬于結(jié)構(gòu)圖,常被用于描述一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖是由若干類關(guān)聯(lián)在一起,反映系統(tǒng)或者子系統(tǒng)組成結(jié)構(gòu)的靜態(tài)圖。類圖的建模貫穿工程的分析和設(shè)計(jì)階段的始終,通常從用戶能夠理解的類開始建模,最終往往成為只有開發(fā)小組才能夠完全理解的類。類圖由如下元素組成:類(Class):是具有共同結(jié)構(gòu)特征、行為特征、聯(lián)系和語(yǔ)義的對(duì)象集合的抽象形式。關(guān)聯(lián)(Association):它表示類與類之間的關(guān)系。在類的UML圖中,使用一個(gè)長(zhǎng)方形描述一個(gè)類的主要構(gòu)成,將長(zhǎng)方形垂直地分為三層?!舻?層是名字層◆第2層是變量層,也稱屬性層,列出類的成員變量及類型,格式是“變量名字:類型”?!舻?層是方法層,也稱操作層,列出類的方法及返回類型,格式是“方法名字(參數(shù)列表):類型”。7.1.1類的UML圖在類圖中,根據(jù)建模的不同景象,類圖標(biāo)中不一定列出全部的內(nèi)容。如在建立分析模型或設(shè)計(jì)模型時(shí),甚至可以只列出類名,在圖中著重表達(dá)的是類與類之間的聯(lián)系;在建立實(shí)現(xiàn)模型時(shí),則應(yīng)當(dāng)在類圖標(biāo)中詳細(xì)給出類的屬性和方法等細(xì)節(jié)。1.屬性
屬性(Attribute)在UML類圖標(biāo)的矩形框中用文字串說(shuō)明,如下圖所示。
可視性(Visibility)標(biāo)記表示:
+ 公共# 保護(hù)-私用可視性也可以用以下關(guān)鍵字表示:public(公共)、protected(保護(hù))、private(私用)。若可視性標(biāo)記為“+”或“public”,則為公共屬性,可以被外部對(duì)象訪問(wèn)。若可視性標(biāo)記為“#’或“protected”,則為保護(hù)屬性,可以被本類或子類的對(duì)象訪問(wèn)。若可視性標(biāo)記為“-”或“private”,則為私用屬性,不可以被外部對(duì)象訪問(wèn),只能為本類的對(duì)象使用??梢曅钥梢匀笔?,表示該屬性不可視。Student類
屬性類型表示:冒號(hào)“:”后跟屬性值的數(shù)據(jù)類型。數(shù)據(jù)類型的表示依賴于實(shí)現(xiàn)語(yǔ)言,如有的程序設(shè)計(jì)語(yǔ)言規(guī)定浮點(diǎn)數(shù)用保留字“Float”表示,有的則規(guī)定用保留字“Real”表示。Student類數(shù)據(jù)類型可以是任何用戶需要的內(nèi)容,包括:來(lái)自程序設(shè)計(jì)語(yǔ)言如VisualBasic、C++、C#和Java的任何標(biāo)準(zhǔn)數(shù)據(jù)類型。一個(gè)已經(jīng)定義的類。接口定義語(yǔ)言(InterfaceDefinitionLanguage,IDL)中的數(shù)據(jù)類型列表中的數(shù)據(jù)類型。讀者在自己的系統(tǒng)建模中能夠使用的其他類型。屬性初始值設(shè)置:可以通過(guò)在屬性名稱和數(shù)據(jù)類型之后添加等于號(hào)(=)來(lái)為屬性指定默認(rèn)值,如下圖所示。屬性多重性:多重性為可選項(xiàng),它表達(dá)該類的每個(gè)實(shí)例的屬性值的個(gè)數(shù)。可以像應(yīng)用于類之間的關(guān)系中那樣把多重性應(yīng)用于屬性。例如,Student類具有屬性Grades。不希望該屬性只包含單個(gè)值,而是希望它包含該學(xué)生的所有成績(jī),可以是任意多個(gè)。派生的屬性:另一種可以為屬性提供的信息是派生值,它可以使用數(shù)學(xué)函數(shù)、字符串函數(shù)或者將要在應(yīng)用程序中實(shí)現(xiàn)的其他商務(wù)邏輯。要想指出一個(gè)屬性是派生的,需要在屬性名之前添加一個(gè)前斜線(/),并且要附加一個(gè)注釋,其中包含了派生屬性值的指令,如下圖所示。2.操作(方法)
操作(Operation)表示類能夠提供的功能服務(wù)。它在UML類矩形框中用文字串說(shuō)明,如下圖所示。操作名指示類可提供的功能服務(wù),它后跟圓括號(hào)中的參數(shù)列表是可選項(xiàng),即一個(gè)操作可以有參數(shù),也可以沒(méi)有參數(shù)。參數(shù)列表由逗號(hào)分隔的操作的形式參數(shù)組成,其格式為:
參數(shù)名:類型=缺省值,…Student類返回列表是返回給調(diào)用者的單個(gè)變量值,它可以表示該操作程序運(yùn)行的一個(gè)成功標(biāo)志或者計(jì)算的值。7.1.2接口(Interface)表示接口的UML圖使用一個(gè)長(zhǎng)方形描述一個(gè)接口的主要構(gòu)成,將長(zhǎng)方形垂直地分為三層?!繇敳康?層是名字層,用<<interface>>修飾名字。◆第2層是常量層,列出接口中的常量及類型,格式是“常量名字:類型”。
◆第3層是方法層,也稱操作層,列出接口中的方法及返回類型,格式是“方法名字(參數(shù)列表):類型”。
類的關(guān)系類之間可以建立四種關(guān)系:泛化、關(guān)聯(lián)、依賴和實(shí)現(xiàn)。其標(biāo)記如下圖所示。如果一個(gè)類是另一個(gè)類的子類,那么UML通過(guò)使用一個(gè)實(shí)線連接兩個(gè)類的UML圖來(lái)表示二者之間的繼承關(guān)系。如果A類中成員變量是用B類(接口)來(lái)聲明的變量,那么A和B的關(guān)系是關(guān)聯(lián)關(guān)系,稱A關(guān)聯(lián)于B。實(shí)現(xiàn)關(guān)系如果A類中某個(gè)方法的參數(shù)用B類(接口)來(lái)聲明的變量或某個(gè)方法返回的數(shù)據(jù)類型是B類型的,那么A和B的關(guān)系是依賴關(guān)系,稱A依賴于B。如果一個(gè)類實(shí)現(xiàn)了一個(gè)接口,那么類和接口的關(guān)系是實(shí)現(xiàn)關(guān)系,稱類實(shí)現(xiàn)接口7.1.7注釋(Annotation)UML使用注釋為類圖提供附加的說(shuō)明。UML在一個(gè)帶卷角的長(zhǎng)方形中顯示給出的注釋,并使用虛線將這個(gè)帶卷角的長(zhǎng)方形和所它所注釋的實(shí)體連接起來(lái)。
1)關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是指類之間的語(yǔ)義聯(lián)系。關(guān)聯(lián)可以具有如下特性:關(guān)聯(lián)名稱角色名稱多重性導(dǎo)航性多個(gè)類可以關(guān)聯(lián)到同一個(gè)類多重性:
多重性(mutiplicity)用來(lái)指示一個(gè)類的多少對(duì)象與另一個(gè)類的一個(gè)對(duì)象相關(guān)??梢栽陬愱P(guān)系的任何一端添加多重性,來(lái)指示出多重性,如下圖所示。多重性是一個(gè)數(shù)值或者數(shù)值范圍,用來(lái)指示一個(gè)類的幾個(gè)對(duì)象與另一個(gè)類的一個(gè)對(duì)象相關(guān)。如下圖所示。關(guān)聯(lián)的多重性角色
類關(guān)系還可以通過(guò)添加角色來(lái)進(jìn)一步豐富。在類圖中使用角色可以幫助讀者理解第一個(gè)類對(duì)于第二個(gè)類的作用。角色與多重性顯示在相同的位置,在指示類之間關(guān)系線的上面或者下面,如下圖所示。下圖顯示了player類和Team類在關(guān)聯(lián)中分別扮演兩個(gè)角色。關(guān)聯(lián)的限定關(guān)聯(lián)的限定
類的關(guān)聯(lián)還可以通過(guò)限定條件來(lái)明確類之間的關(guān)系。如下圖所示。類的自反關(guān)聯(lián)自反關(guān)聯(lián):
類具有到自身的關(guān)聯(lián),稱為自反關(guān)聯(lián)。2聚集聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示一類對(duì)象與另一類對(duì)象之間的關(guān)系,是整體與部分的關(guān)系。在陳述需求時(shí)使用的“包含”、“組成”、“分為……部分”等字句,往往意味著存在聚集關(guān)系。除了一般的聚集關(guān)系之外,還有兩種特殊的聚集關(guān)系,分別稱為共享聚集和復(fù)合聚集。圖9.10共享聚集示例①共享聚集如果在聚集關(guān)系中處于部分方的對(duì)象可以同時(shí)參與多個(gè)處于整體方對(duì)象的構(gòu)成,則該聚集稱為共享聚集。①共享聚集②組合聚集如果部分類對(duì)象完全隸屬于整體類對(duì)象,部分與整體共存,整體不存在了部分也會(huì)隨之消失(或失去存在價(jià)值了),則該聚集稱為組合聚集。②組合聚集練習(xí):建模聚合關(guān)聯(lián)和組合關(guān)聯(lián)在這個(gè)練習(xí)中,將會(huì)使用目前為止學(xué)習(xí)到的所有類型的關(guān)系來(lái)創(chuàng)建一個(gè)類圖,這些關(guān)系包括普通關(guān)聯(lián)、泛化、聚合和組合。讀者將會(huì)綜合運(yùn)用自己的知識(shí)從需求構(gòu)造一個(gè)類圖。下面是一個(gè)制造商和維修店使用的存貨清單系統(tǒng)的需求列表,從這些信息構(gòu)造一個(gè)類圖:存貨由兩個(gè)部分組成(零件和產(chǎn)品)。產(chǎn)品由兩個(gè)或者更多零件組成,系統(tǒng)可以擁有無(wú)限多個(gè)零件和產(chǎn)品。存貨中的部分零件包括調(diào)速輪、輪齒和加力燃燒室。一名倉(cāng)庫(kù)保管員維護(hù)貨存。一名裝配工組裝產(chǎn)品,一名維修員維修產(chǎn)品。完成的產(chǎn)品包括1-3個(gè)標(biāo)簽:Manufacturer標(biāo)簽指示產(chǎn)品已經(jīng)完成;Repair標(biāo)簽指示產(chǎn)品已經(jīng)檢修過(guò);FCC標(biāo)簽指示產(chǎn)品中包含加力燃燒室。練習(xí)設(shè)計(jì)一組幾何對(duì)象類圖。組中父類為“幾何單項(xiàng)”,由之衍生“線”、“圓”、“方”,“橢圓”、“多邊形”、“點(diǎn)”等類。幾何單項(xiàng)多邊形圓矩形橢圓線點(diǎn)幾何單項(xiàng)多邊形圓矩形橢圓線點(diǎn)11..*{有序}7.2面向抽象原則7.2.1抽象類和接口抽象(abstract)類具有如下特點(diǎn):◆抽象類中可以有abstract方法,也可以有非abstract方法?!舫橄箢惒荒苡胣ew運(yùn)算符創(chuàng)建對(duì)象?!羧绻粋€(gè)非抽象類是某個(gè)抽象類的子類,那么它必須重寫父類的abstract方法?!舫橄箢惵暶鞯膶?duì)象做上轉(zhuǎn)型對(duì)象。A.java,B.java,Application.java
publicabstractclassA{publicabstractintadd(intx,inty);}publicclassBextendsA{publicintadd(intx,inty){returnx+y;}}publicclassApplication{publicstaticvoidmain(Stringargs[]){Aa;a=newB();//a是B類對(duì)象的上轉(zhuǎn)型對(duì)象intm=a.add(3,2);//a調(diào)用子類B重寫的add()方法System.out.println(m);//輸出結(jié)果為5}}接口(interface)具有如下特點(diǎn):◆接口中只可以有public權(quán)限的abstract方法,不能有非abstract方法?!艚涌谟深惾?shí)現(xiàn),即一個(gè)類如果實(shí)現(xiàn)一個(gè)接口,那么它必須重寫接口中的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類的對(duì)象的引用
intm=com.sub(8,2);//com回調(diào)ComImp類實(shí)現(xiàn)的接口方法System.out.println(m);//輸出結(jié)果為6}}7.2.2面向抽象所謂面向抽象編程,是指當(dāng)設(shè)計(jì)一個(gè)類時(shí),不讓該類面向具體的類,而是面向抽象類或接口,即所設(shè)計(jì)類中的重要數(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è)計(jì)Pillar類。首先編寫一個(gè)抽象類Geometry(或接口),其中定義兩個(gè)一個(gè)抽象的getAre()方法。publicabstractclassGeometry{//如果使用接口需用interface來(lái)定義Geometry。publicabstractdoublegetArea();}接著重新設(shè)計(jì)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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年罩光防塵乳膠漆項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年中國(guó)單片鋁制噴霧罐涂料行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國(guó)冰烏龍茶行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年分離式無(wú)損傷軸承起拔器項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年丁基膠膠輥?lái)?xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年中國(guó)GRC門窗套行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年中國(guó)隔斷墻市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)鑄造齒輪市場(chǎng)調(diào)查研究報(bào)告
- 2024年油性柱塞油項(xiàng)目可行性研究報(bào)告
- 2024年托花項(xiàng)目可行性研究報(bào)告
- 廣東省深圳市2024年九年級(jí)中考提分訓(xùn)練《六選五》專題練習(xí)
- 2024年永州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 注射相關(guān)感染預(yù)防與控制(全文)
- SMP-10-003-00 藥品上市后風(fēng)險(xiǎn)管理規(guī)程
- 升壓站土建施工合同2024年
- NB-T31030-2012陸地和海上風(fēng)電場(chǎng)工程地質(zhì)勘察規(guī)范
- 感悟考古智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)
- 溝通的藝術(shù)智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學(xué)
- JJF 1171-2024溫濕度巡回檢測(cè)儀校準(zhǔn)規(guī)范
- DB32-T 4757-2024 連棟塑料薄膜溫室建造技術(shù)規(guī)范
- 建筑信息模型技術(shù)員理論知識(shí)考試題庫(kù)
評(píng)論
0/150
提交評(píng)論