UML中幾種類間關係:繼承、實現、依賴、關聯、聚合、組合的聯繫與區別

       這篇博客對類之間的關係進行了整理,在用UML進行類圖設計時,對類之間的關係更加清晰明瞭.java

       

       1、表示符號上的區別學習

 

2、具體區別與聯繫spa

繼承(泛化)設計

       指的是一個類(稱爲子類、子接口)繼承另外的一個類(稱爲父類、父接口)的功能,並能夠增長它本身的新功能的能力,繼承是類與類或者接口與接口之間最多見的關係,可分單重繼承,多重繼承(java不支持);在Java中此類關係經過關鍵字extends明確標識。對象

       實現繼承

      指的是一個class類實現interface接口(能夠是多個)的功能;實現是類與接口之間最多見的關係;在Java中此類關係經過關鍵字implements明確標識接口

      依賴生命週期

      能夠簡單的理解,就是一個類A使用到了另外一個類B,而這種使用關係是具備偶然性的、臨時性的、很是弱的,可是B類的變化會影響到A;好比某個老師要授課,則須要有這麼一門課讓他教授,此時老師與課之間的關係就是依賴;表如今代碼層面,爲類Course做爲參數被類Professor在Teach方法中使用;博客

      關聯class

      它體現的是兩個類、或者類與接口之間語義級別的一種強依賴關係,普通關聯關係的兩個類處於同一層次上,關聯能夠是單向(只有一個類知道另一個類的公共屬性和操做)的也能夠是雙向(兩個類都知道另外一個類的公共屬性和操做)的;大多數關聯應該是單向的,單向關係更容易創建和維護,有助於尋找可服用的類。

雙向關聯:

單向關聯:

      聚合

      聚合是關聯關係的一種特例,他體現的是總體與部分、擁有的關係,即has-a的關係,此時總體與部分之間是可分離的,他們能夠具備各自的生命週期,部分能夠屬於多個總體對象,也能夠爲多個總體對象共享;好比書本與暑假、公司與員工的關係等;具體表現爲,若是A由B聚合成,表現爲A包含有B的全局對象,可是B對象能夠不在A建立的時刻建立。

      組合

      組合也是關聯關係的一種特例,他體現的是一種contains-a的關係,這種關係比聚合更強,也稱爲強聚合;他一樣體現總體與部分間的關係,但此時總體與部分是不可分的,總體的生命週期結束也就意味着部分的生命週期結束,也能夠理解爲若是A由B組成,表現爲A包含有B的全局對象,而且B對象在A建立的時刻建立。好比你和你的大腦或一本書和它的書頁。

      綜上所述,對於繼承、實現這兩種關係比較簡單,他們體現的是一種類與類、或者類與接口間的縱向關係;其餘的四者關係則體現的是類與類、或者類與接口間的引用、橫向關係,這幾種關係都是語義級別的,因此從代碼層面並不能徹底區分各類關係;從後幾種關係所表現的強弱程度來看,依次爲:組合>聚合>關聯>依賴。在面向對象的設計過程當中,能採起強度較大的關係,決不能採起強度小的關係。

     隨着學習深刻,會加上代碼實現!

相關文章
相關標籤/搜索