版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java語言程序設計pUML類圖簡介類圖簡介p面向抽象原則面向抽象原則p開開-閉原則閉原則p多用組合少用繼承原則多用組合少用繼承原則p高內聚高內聚-低耦合原則低耦合原則主要內容7.1 UML類圖簡介pUML(Unified Modeling Language)類圖(Class Diagram)屬于結構圖,常被用于描述一個系統(tǒng)的靜態(tài)結構。p類圖類圖是由若干類關聯(lián)在一起,反映系統(tǒng)或者子系統(tǒng)組是由若干類關聯(lián)在一起,反映系統(tǒng)或者子系統(tǒng)組成結構的靜態(tài)圖。類圖的建模貫穿工程的分析和設計成結構的靜態(tài)圖。類圖的建模貫穿工程的分析和設計階段的始終,通常從階段的始終,通常從用戶用戶能夠理解的類開始建模,最能夠理解
2、的類開始建模,最終往往成為只有開發(fā)小組才能夠完全理解的類。終往往成為只有開發(fā)小組才能夠完全理解的類。類圖類圖由如下元素組成:由如下元素組成:類類(Class)(Class):是具有共同結構特征、行為特征、聯(lián):是具有共同結構特征、行為特征、聯(lián)系和語義的對象系和語義的對象集合的抽象形式。集合的抽象形式。關聯(lián)關聯(lián)(AssociationAssociation):它表示類與類之間的關系。):它表示類與類之間的關系。在類的在類的UMLUML圖中,使用一個長方形描圖中,使用一個長方形描述一個類的主要構成,將長方形垂述一個類的主要構成,將長方形垂直地分為三層。直地分為三層。第第1 1層是名字層層是名字層 第
3、第2 2層是變量層,也稱屬性層,列層是變量層,也稱屬性層,列出類的成員變量及類型,格式是出類的成員變量及類型,格式是“變量名字:類型變量名字:類型”。 第第3 3層是方法層,也稱操作層,列層是方法層,也稱操作層,列出類的方法及返回類型,格式是出類的方法及返回類型,格式是“方法名字(參數(shù)列表):類型方法名字(參數(shù)列表):類型”。 7.1.1 類的UML圖 在類圖中,根據(jù)建模的不同景象,類圖標中不一定列出全部的內容。如在建立分析模型或設計模型時,甚至可以只列出類名,在圖中著重表達的是類與類之間的聯(lián)系;在建立實現(xiàn)模型時,則應當在類圖標中詳細給出類的屬性和方法等細節(jié)。1. 屬性 屬性(屬性(Attri
4、buteAttribute)在在UMLUML類圖標的矩形框中用文字類圖標的矩形框中用文字串說明,如下圖所示。串說明,如下圖所示。 可視性(Visibility)標記表示: + 公共 保護 - 私用 可視性也可以用以下關鍵字表示:public(公共)、protected(保護)、private(私用)。若可視性標記為“+”或“public”,則為公共屬性,可以被外部對象訪問。若可視性標記為“#或“ protected”,則為保護屬性,可以被本類或子類的對象訪問。若可視性標記為“-”或“ private”,則為私用屬性,不可以被外部對象訪問,只能為本類的對象使用??梢曅钥梢匀笔?,表示該屬性不可視。
5、Student類 屬性類型表示:屬性類型表示: 冒號冒號“:”后跟屬性值的數(shù)據(jù)類型。數(shù)據(jù)類型的表后跟屬性值的數(shù)據(jù)類型。數(shù)據(jù)類型的表示依賴于實現(xiàn)語言,如有的程序設計語言規(guī)定浮點數(shù)用保示依賴于實現(xiàn)語言,如有的程序設計語言規(guī)定浮點數(shù)用保留字留字“ “ Float”Float”表示,有的則規(guī)定用保留字表示,有的則規(guī)定用保留字“ “ Real”Real”表表示。示。Student類 數(shù)據(jù)類型可以是任何用戶需要的內容,包括:數(shù)據(jù)類型可以是任何用戶需要的內容,包括: 來自程序設計語言如來自程序設計語言如 Visual BasicVisual Basic、C C、C C和和 JavaJava的任何標準數(shù)據(jù)類型
6、。的任何標準數(shù)據(jù)類型。 一個已經(jīng)定義的類。一個已經(jīng)定義的類。 接口定義語言(接口定義語言(Interface Definition LanguageInterface Definition Language,IDLIDL)中的數(shù)據(jù)類型列表中的數(shù)據(jù)類型。)中的數(shù)據(jù)類型列表中的數(shù)據(jù)類型。 讀者在自己的系統(tǒng)建模中能夠使用的其他類型。讀者在自己的系統(tǒng)建模中能夠使用的其他類型。屬性初始值設置:屬性初始值設置: 可以通過在屬性名稱和數(shù)據(jù)類型之后添加等于可以通過在屬性名稱和數(shù)據(jù)類型之后添加等于號()來為屬性指定默認值,如下圖所示。號()來為屬性指定默認值,如下圖所示。屬性多重性:屬性多重性:多重性為可選項,
7、多重性為可選項,它表達該類的每個實例的屬性值的它表達該類的每個實例的屬性值的個數(shù)。個數(shù)。可以像應用于類之間的關系中那樣把多重性應可以像應用于類之間的關系中那樣把多重性應用于屬性。例如,用于屬性。例如,StudentStudent類具有屬性類具有屬性GradesGrades。不希望。不希望該屬性只包含單個值,而是希望它包含該學生的所有該屬性只包含單個值,而是希望它包含該學生的所有成績,可以是任意多個。成績,可以是任意多個。派生的屬性:派生的屬性: 另一種可以為屬性提供的信息是派生值,它可以使另一種可以為屬性提供的信息是派生值,它可以使用數(shù)學函數(shù)、字符串函數(shù)或者將要在應用程序中實現(xiàn)的其用數(shù)學函數(shù)、
8、字符串函數(shù)或者將要在應用程序中實現(xiàn)的其他商務邏輯。他商務邏輯。 要想指出一個屬性是派生的,需要在屬性要想指出一個屬性是派生的,需要在屬性名之前添加一個前斜線(),名之前添加一個前斜線(), 并且要附加一個注釋,并且要附加一個注釋,其中包含了派生屬性值的指令,如下圖所示。其中包含了派生屬性值的指令,如下圖所示。2. 操作操作(方法方法) 操作(操作(OperationOperation)表示類能夠提供的功能服務。它在表示類能夠提供的功能服務。它在UMLUML類類矩形框中用文字串說明,如下圖所示。矩形框中用文字串說明,如下圖所示。 操作名操作名指示類可提供的功能服務,它后跟圓括號中的參數(shù)列表是指示
9、類可提供的功能服務,它后跟圓括號中的參數(shù)列表是可選項,即一個操作可以有參數(shù),也可以沒有參數(shù)??蛇x項,即一個操作可以有參數(shù),也可以沒有參數(shù)。參數(shù)列表參數(shù)列表由由逗號分隔的操作的形式參數(shù)組成,逗號分隔的操作的形式參數(shù)組成,其格式為其格式為: 參數(shù)名:類型參數(shù)名:類型= =缺省值,缺省值,Student類返回列表返回列表是返回給調用者的單個變量值,它可以表示是返回給調用者的單個變量值,它可以表示該操作程序運行的一個成功標志或者計算的值。該操作程序運行的一個成功標志或者計算的值。7.1.2 接口(Interface)p表示接口的UML圖使用一個長方形描述一個接口的主要構成,將長方形垂直地分為三層。 p
10、頂部第1層是名字層,用修飾名字。p第2層是常量層,列出接口中的常量及類型,格式是“常量名字:類型”。 p第3層是方法層,也稱操作層,列出接口中的方法及返回類型,格式是“方法名字(參數(shù)列表):類型”。 類的關系類之間可以建立四種關系:類之間可以建立四種關系:泛化泛化、關聯(lián)、依賴關聯(lián)、依賴和和實現(xiàn)實現(xiàn)。其標記如下圖所示。其標記如下圖所示。泛化關系Class AClass B如果一個類是另一個類的如果一個類是另一個類的子類子類,那么那么UML通過使用一個實線連接通過使用一個實線連接兩個類的兩個類的UML圖來表示二者之間圖來表示二者之間的繼承關系。的繼承關系。如果如果A類中成員變量是用類中成員變量是用
11、B類(接口)類(接口)來來聲明的變量聲明的變量,那么,那么A和和B的關系是的關系是關聯(lián)關系,關聯(lián)關系,稱稱A關聯(lián)于關聯(lián)于B。關聯(lián)關系Class AClass B依賴關系Class AClass B依賴關系Class AClass B泛化關系Class AClass B依賴關系Class AClass B依賴關系Class AClass B依賴關系Class AClass B實現(xiàn)關系實現(xiàn)關系如果如果A類中某個方法的參數(shù)用類中某個方法的參數(shù)用B類類(接口)來聲明的變量或某個方法(接口)來聲明的變量或某個方法返回的數(shù)據(jù)類型是返回的數(shù)據(jù)類型是B類型的,那么類型的,那么A和和B的關系是依賴關系,稱的關系
12、是依賴關系,稱A依賴于依賴于B。如果一個類實現(xiàn)了一個接口,那么如果一個類實現(xiàn)了一個接口,那么類和接口的關系是實現(xiàn)關系類和接口的關系是實現(xiàn)關系,稱類實現(xiàn)接口稱類實現(xiàn)接口7.1.7 注釋(Annotation)pUML使用注釋為類圖提供附加的說明。p UML在一個帶卷角的長方形中顯示給出的注釋,并使用虛線將這個帶卷角的長方形和所它所注釋的實體連接起來。 1)關聯(lián)關系 關聯(lián)關系是指類之間的語義聯(lián)系。關聯(lián)可以具有如下特性:關聯(lián)名稱角色名稱多重性導航性多個類可以關聯(lián)到同一個類多重性: 多重性(mutiplicity)用來指示一個類的多少對象與另一個類的一個對象相關??梢栽陬愱P系的任何一端添加多重性,來指
13、示出多重性,如下圖所示。 多重性是一個數(shù)值或者數(shù)值范圍,用來指示一個類的幾個對象與另一個類的一個對象相關。如下圖所示。關聯(lián)的多重性角色 類關系還可以通過添加角色來進一步豐富。在類圖中使用角色可以幫助讀者理解第一個類對于第二個類的作用。角色與多重性顯示在相同的位置,在指示類之間關系線的上面或者下面,如下圖所示。 下圖顯示了player類和Team類在關聯(lián)中分別扮演兩個角色。關聯(lián)的限定關聯(lián)的限定 類的關聯(lián)還可以通過限定條件來明確類之間的關系。如下圖所示。類的自反關聯(lián)自反關聯(lián): 類具有到自身的關聯(lián),稱為自反關聯(lián)。2 2 聚集聚集 聚集也稱為聚合,是關聯(lián)的特例。聚集表示一聚集也稱為聚合,是關聯(lián)的特例。
14、聚集表示一類對象與另一類對象之間的關系,是整體與部分類對象與另一類對象之間的關系,是整體與部分的關系。在陳述需求時使用的的關系。在陳述需求時使用的“包含包含”、“組成組成”、“分為分為部分部分”等字句,往往意味著存在等字句,往往意味著存在聚集關系。除了一般的聚集關系之外,還有兩種聚集關系。除了一般的聚集關系之外,還有兩種特殊的聚集關系,分別稱為特殊的聚集關系,分別稱為共享聚集共享聚集和和復合聚集復合聚集。圖圖9.10 9.10 共享聚集示例共享聚集示例 共享聚集共享聚集 如果在聚集關系中處于部分方的對象可以同如果在聚集關系中處于部分方的對象可以同時參與多個處于整體方對象的構成,則該聚集稱時參與
15、多個處于整體方對象的構成,則該聚集稱為共享聚集。為共享聚集。 共享聚集共享聚集 組合聚集組合聚集 如果部分類對象完全隸屬于整體類對象,部分如果部分類對象完全隸屬于整體類對象,部分與整體共存,整體不存在了部分也會隨之消失(與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱為組合聚集?;蚴ゴ嬖趦r值了),則該聚集稱為組合聚集。 組合聚集組合聚集練習:建模聚合關聯(lián)和組合關聯(lián) 在這個練習中,將會使用目前為止學習到的所有類型的關系來創(chuàng)建一個類圖,這些關系包括普通關聯(lián)、泛化、聚合和組合。讀者將會綜合運用自己的知識從需求構造一個類圖。 下面是一個制造商和維修店使用的存貨清單系統(tǒng)的需求列
16、表,從這些信息構造一個類圖: 存貨由兩個部分組成(零件和產品)。 產品由兩個或者更多零件組成,系統(tǒng)可以擁有無限多個零件和產品。 存貨中的部分零件包括調速輪、輪齒和加力燃燒室。 一名倉庫保管員維護貨存。一名裝配工組裝產品,一名維修員維修產品。 完成的產品包括1-3個標簽:Manufacturer標簽指示產品已經(jīng)完成;Repair標簽指示產品已經(jīng)檢修過;FCC標簽指示產品中包含加力燃燒室。練習p設計一組幾何對象類圖。組中父類為“幾何單項” ,由之衍生“線”、“圓”、“方”,“橢圓”、“多邊形”、“點”等類。幾何單項多邊形圓矩形橢圓線點幾何單項多邊形圓矩形橢圓線點11.*有序7.2 面向抽象原則 7
17、.2.1 抽象類和接口抽象(abstract)類具有如下特點:抽象類中可以有abstract方法,也可以有非abstract方法。抽象類不能用new運算符創(chuàng)建對象。如果一個非抽象類是某個抽象類的子類,那么它必須重寫父類的abstract方法。抽象類聲明的對象做上轉型對象。 A.java,B.java, ,Application.java public abstract class A public abstract int add(int x,int y);public class B extends A public int add(int x,int y) return x+y; publ
18、ic class Application public static void main(String args) A a; a=new B(); /a是是B類對象的上轉型對象類對象的上轉型對象 int m=a.add(3,2); /a調用子類調用子類B重寫的重寫的add()方法方法 System.out.println(m); /輸出結果為輸出結果為5 接口(interface)具有如下特點:接口中只可以有public權限的abstract方法,不能有非abstract方法。接口由類去實現(xiàn),即一個類如果實現(xiàn)一個接口,那么它必須重寫接口中的abstract方法。接口回調。 Com.java,C
19、omImp.java,Application.java public interface Com public abstract int sub(int x,int y);class ComImp implements Com public int sub(int x,int y) return x-y; public class Application public static void main(String args) Com com; com=new ComImp(); /com變量存放變量存放ComImp類的對象的引用類的對象的引用 int m=com.sub(8,2); /com
20、回調回調ComImp類實現(xiàn)的接口方法類實現(xiàn)的接口方法 System.out.println(m); /輸出結果為輸出結果為6 7.2.2 面向抽象 所謂面向抽象編程,是指當設計一個類時,不讓該類面向具體的類,而是面向抽象類或接口,即所設計類中的重要數(shù)據(jù)是抽象類或接口聲明的變量,而不是具體類聲明的變量。 Circle.java,Pillar.java public class Circle double r; Circle(double r) this.r=r; public double getArea() return(3.14*r*r); public class Pillar Circl
21、e bottom; double height; Pillar (Circle bottom,double height) this.bottom=bottom; this.height=height; public double getVolume() return bottom.getArea()*height; /bottom可以可以調用子類重寫的調用子類重寫的getArea方法方法 面向抽象重新設計面向抽象重新設計Pillar類。首先編寫一個抽象類。首先編寫一個抽象類類Geometry(或接口或接口),其中定義兩個一個抽象的,其中定義兩個一個抽象的getAre()方法。方法。publi
22、c abstract class Geometry /如果使用接口需用如果使用接口需用interface來定義來定義Geometry。 public abstract double getArea();接著重新設計接著重新設計Pillar類以及類以及Circle和和Rectangle類。類。public class Pillar Geometry bottom; /bottom是抽象類是抽象類Geometry聲明的聲明的變量變量 double height; Pillar (Geometry bottom,double height) this.bottom=bottom; this.heig
23、ht=height; public double getVolume() return bottom.getArea()*height; /bottom可以調用子類可以調用子類重寫的重寫的getArea方法方法 public class Circle extends Geometry double r; Circle(double r) this.r=r; public double getArea() return(3.14*r*r); public class Rectangle extends Geometry double a,b; Lader(double a,double b) this.a=a; this.b=b; public double getArea() return a*b; public class Application public static void main(String args) Pillar pillar; G
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復習專題八恒定電流實驗九測定電源的電動勢和內阻練習含答案
- 草莓購買合同
- 江蘇地區(qū)高一年級信息技術一年教案7資源管理器教案
- 江蘇地區(qū)高一年級信息技術一年教案26 IF語句教案
- 2024年高中政治 第一單元 公民的政治生活 第二課 我國公民的政治參與 3 民主管理:共創(chuàng)幸福生活教案1 新人教版必修2
- 2024-2025學年新教材高中物理 第七章 萬有引力與宇宙航行 4 宇宙航行(1)教案 新人教版必修2
- 2024-2025學年新教材高中地理 第3章 天氣的成因與氣候的形成 第2節(jié) 氣壓帶、風帶對氣候的影響教案 中圖版選擇性必修第一冊
- 高考地理一輪復習第十二章環(huán)境與發(fā)展第二節(jié)中國國家發(fā)展戰(zhàn)略課件
- 寶寶防疫針委托書
- 人教A版廣東省深圳實驗學校高中部2023-2024學年高一上學期第三階段考試數(shù)學試題
- 大學生心理稿范文800字(優(yōu)選9篇)-1
- 北京科技大學EMC-VNX5300實施文檔
- 高一女生青春期教育講座
- 氨分解制氫安全技術要求3
- 智慧農業(yè)導論智慧樹知到答案章節(jié)測試2023年浙江農林大學
- 知識產權保險介紹
- 2023年重慶市大渡口區(qū)春暉路街道陽光社區(qū)工作人員考試模擬試題及答案
- 日本福島核電站事故案例環(huán)境倫理分析
- 孔子與《論語》智慧樹知到答案章節(jié)測試2023年曲阜師范大學
- GA 1811.1-2022傳媒設施反恐怖防范要求第1部分:媒體機構
- 醫(yī)學原蟲的檢驗 藍氏賈第鞭毛蟲的檢驗
評論
0/150
提交評論