uml筆記

總原則:開閉原則(Open Close Principle)對擴展開放,對修改關閉

1、單一職責原則 每個類應該實現單一的職責
            (Liskov Substitution Principle)
2、里氏替換原則 LSP
            (Dependence Inversion Principle)
3、依賴倒轉原則DIP  面向接口編程,依賴於抽象而不依賴於具體。
            (Interface Segregation Principle)
4、接口隔離原則ISP  :每個接口中不存在子類用不到卻必須實現的方法
            (Demeter Principle)
5、迪米特法則(最少知道原則)一個類對自己依賴的類知道的越少越好
            (Composite Reuse Principle)
6、合成複用原則 原則是儘量首先使用合成/聚合的方式,而不是使用繼承。
 

 

 

在UML類圖中,常見的有以下幾種關係:泛化(Generalization),實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

1、泛化(繼承)

【箭頭指向】:帶三角箭頭的實線,表示繼承一個基類,B類繼承A類。

【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。

【泛化例子】:老虎是動物的一種,既有老虎的特性也有動物的共性。

2、實現

【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口,表示C類實現接口的定義。

【實現關係】:是一種類與接口的關係,表示類是接口所有特徵和行爲的實現。

3、關聯

【箭頭指向】:帶普通箭頭的實線,指向被擁有者。

【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的特徵和行爲,關聯分爲單項關聯和雙向關聯兩種;雙向關聯可以用倆頭帶箭頭的實現表示,也可以不要箭頭。

【3.1】、單向關聯:僅能從一個類訪問到另一個類(前者的屬性中有後者),B類單項關聯A類(B中有屬性a爲類A的對象);如:學生與課程的單向關聯。

【3.2】、雙向關聯:兩個類之間能相互訪問(兩個類的屬性中都有對方),B類關聯A類(B中有屬性a爲類A的對象),A類關聯B類(A中有屬性bs爲Set,Set包含B的對象),A和B是1對n(n>0)的關聯;如老師與學生的雙向關聯。

【3.3】、自身關聯:… …

【代碼體現】:成員變量

4、聚合

【箭頭方向】:帶空心菱形的實線,菱形指向整體;Wheel類扮演wheels角色,聚合4個到Car對象裏面去。

【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如Car和Wheel是整體與部分的關係,Wheel離開Car仍然可以存在,並不隨Car的創建而創建,銷燬而銷燬。

【代碼體現】:成員變量

【聚合PK關聯】:聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。

5、組合

【箭頭方向】:帶實心菱形的實線,菱形指向整體;Company對象完全由Department對象組成。

【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如Company和Department是整體與部分的關係,沒有Company就沒有Department,Department隨Company的創建而創建,銷燬而銷燬。

【代碼體現】:成員變量

【組合PK關聯】:組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。

6、依賴

【箭頭指向】:帶箭頭的虛線,指向被使用者,

【依賴關係】:是一種使用關係,表示類之間的調用關係,即一個類的實現需要另一個類的協助,所以儘量不使用互相依賴。

【代碼體現】:如果類A訪問類B的屬性或者方法,或者類A負責實例化類B,那麼可以說類A依賴類B(局部變量、方法的參數或者對靜態方法的調用)。

【依賴PK關聯】:和關聯關係不同,無須再類A中定義類B類型的屬性。

各種關係的強弱順序

泛化 == 實現 > 組合 > 聚合 > 關聯 > 依賴

--------------------- 本文來自 zmken497300 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/zmken497300/article/details/72471223?utm_source=copy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章