UML的各種關系理解


  • 泛化關系(generalization)(IS A
    • 解釋:就是繼承關系,繼承關系為 is-a的關系;兩個對象之間如果可以用 is-a 來表示,就是繼承關系:(..是..)
    • eg:IPhone5s 的類 is a IPhone5 的類 ,從哲學的角度上講,IPhone5s類就是iPhone5類--因為它可以實在iPhone5 的類上修改而產生的,對比5而言5s只有功能的修改或者增加,並沒有減少因為5的類是有具體實現(非抽象類),5s也是有具體實現(非抽象類的所以就叫繼承
      同理,如果5類 和5s類都是抽象類,那也是可以稱為繼承的,要不就就成了實現了。【抽象到抽象,具體到具體】
    • 類圖:
      image
  • 實現關系(realize)(IS A)
    • 解釋: 和泛化關系(generalization)幾乎一致,區別說就是 一個繼承抽象類(abstract ,interface),一個繼承具體類
    • eg:iPhone 類 和 iPhone 5 的類 的關系 iPhone 類是沒有具體實現的,是一個抽象類,一個抽象的概念【抽象到具體】
    • 類圖:
      image
  • 聚合關系(aggregation)(has-a)
    • 解釋:就是由某某組成的關系,聚合關系的兩個類處於不同的層次,一個是整體,一個是部分。而且各個組成部分脫離整體也是可以存在的,整體和部分的生命周期是獨立的。如果有聯系產生那就是Composition(組合)關系了。代碼上的體現:如果A由B聚合成,表現為A包含有B的全局對象,但是B對象可以不在A創建的時刻創建
    • eg: 部門和員工,當部門解散后,員工的生命周期是不會隨着部門的生命周期的結束而結束。
    • 類圖:

      image
  • 組合關系(composition)(contains-a)
    • 解釋:就是由某某組裝而成的關系,聚合關系的兩個類處於不同的層次,一個是整體,一個是部分,各個組成部分脫離整體是不可以存在的。整體和部分的生命周期是一致的。代碼上的體現:如果A由B組成,表現為A包含有B的全局對象,並且B對象在A創建的時刻創建
    • eg:企業和部門,當企業倒閉后,部門也就隨着企業的生命周期的結束而結束。人和四肢
    • 類圖:
      image

  • 關於聚合和組合的區分:其關鍵點就是整體和部分的生命周期是否一致這個條件。(深入思考:當整體的生命周期結束后,不會受到質變,也不會受到任何 對生命周期有影響的改變。例如 電腦 和CPU, 相反 例如 人體 和四肢)
  • 關聯關系(association)
    • 解釋:它描述不同類的對象之間的結構關系,是處於同一種層次;它是一種靜態關系, 通常與運行狀態無關,一般由常識等因素決定的;它一般用來定義對象之間靜態的、天然的結構; 所以,關聯關系是一種“強關聯”的關系;
      不存在依賴關系的偶然性、關系也不是臨時性的,一般是長期性的。代碼體現:表現在代碼層面,為被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型為被關聯類B的全局變量。
    • eg:A引用了B作為屬性
    • 類圖:
      image
  • 依賴關系(dependency)
    • 解釋:它描述不同類的對象之間的結構關系,是處於同一種層次;它是一種動態關系,與關聯關系不同的是,它是一種臨時性的關系,通常在運行期間產生,並且隨着運行時的變化; 依賴關系也可能發生變化;
      代碼體現:例如如果A依賴於B,則B體現為局部變量,方法的參數、或靜態方法的調用。
    • eg:A中的方法調用了B
    • 類圖:
      image
     
     
     
     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM