uml 类图_UML-类图
概念
Class diagram is UML structure diagram which shows structure of the designed system at the level of classes and interfaces, shows their features, constraints and relationships - associations, generalizations, dependencies, etc.類圖是用于描述類、接口這一層次的圖形,他表達了類、接口的功能、約束以及他們之間的關系。
使用場景
類圖是適用于面向對象進行建模的場景,通過類圖,我們能夠知道我們對系統被抽象成了哪些類,以及他們之間的關系。因此,類圖適用于使用面向對象的方法進行設計的系統、應用。
對于后端來說,一般類圖常用于單一的系統內,對于微服務這類分布式架構的表達,更適用于組件圖或者部署圖。 對于前端來說,由于 js 的語言特性,以及react、vue 這類組件化框架大行其道,簡單的業務場景就不需要使用到類圖了,基于面向對象建模反而是過度設計,此時用組件圖表達即可。但是當業務復雜到到一定程度,不得不使用面向對象對業務層進行建模時,類圖就有意義了。
類圖元素
類(class)
類是面向對象的概念,是描述一系列對象共有的功能和約束 對于類來說,功能即類的屬性以及方法,約束即屬性及方法的可見性。
接口(interface)
接口描述的是功能的合集,一般我們會對功能進行分類,同一類別的功能統一放在一個接口里,用接口來描述功能的抽象,以此來增強接口的可復用性。 比如 cloneable 接口,表述實現了這個接口的類是支持 clone 相關的行為的。接口和類最大的不同在于接口只描述行為,表達的是能力,比如 cloneable 接口,表達的是 clone 的能力,具體怎么 clone (如何實現)是在類的范疇,因此接口的抽象程度更高。
因為接口是一個高度的抽象,因此接口需要有實際的載體,也就是類,所以接口是需要配合類來一起表達才能有實際的含義,因此聲明了接口后,還需要表明誰來實現,或者相關的依賴。
類圖關系
類的基本元素比較簡單,難點在于關系的表達。業務之所以復雜,不是因為業務中可以抽象出多個類,而是類之間的關系,每個類的變動都可能牽扯到其他部分,業務行為正是通過這些”牽扯“組成的。因此我們使用面向對象建模,核心的目的在于讓關系變得簡單,簡單意味著可控,業務行為便可預測。
本章節不會把所有的關系全部說清楚,只會講到平時開發過程中常見的 5 種關系線,他們的含義以及用法。
依賴(dependency)
兩個對象間最弱的關系,表示一個類的某些行為與另一個類有相關性。 敲黑板!依賴關系是行為之間產生關聯
A 依賴 B 的三種場景:
class A {function fn(B b) { }function fn2() {B b = new B()}function fn3() {return new B()} }泛化(generalization)
通常指一個類(或接口)繼承另一個類(或接口),并可以增加它自己的新功能的能力。
A 繼承類 B 實現 IC 接口:
class A extends B implements IC { }關聯(association)
二元關系,表示對象與對象之間有持有關系
單向關聯關系,A 關聯 B :
class A {B b } class B { }雙向關聯關系,A 與 B 互相關聯:
class A {B b } class B {A a }聚合(aggression)
含義更明確的單向關聯關系,表示群體與個體的關系。群體解散了,個體可能還會存活。 聚合關系強調了對象間生命周期的關系,聚合的對象是有各自獨立的生命周期的。
class A {B bconstructor(B _b) {this.b = _b}setB(B b) {this.b = b} }組合(composition)
和聚合關系類似,屬于更明確的關聯關系,表示全體和局部的關系。全體不存在了,局部也不存在了(或沒有意義了),和聚合的區別在于聲明周期的不同。
class A {B bconstructor() {this.b = new B()} }小結
我們講的 5 種關系,都屬于二元關系,區別在于使用的時機與生命周期的不同。依賴與關聯的區別在于依賴僅是在行為上會使用到另一個類,而關聯則是需要持有對象,會影響對象的生命周期。 聚合與組合是提出了更明確含義的關聯關系,區別在于聚合的對象,生命周期是各自獨立的,組合的對象,生命周期跟隨整體。
要注意的是,關系是對現實事務的表達,因此關系本身也是有語義的。為了方便理解,我們使用對象聲明周期的影響來區分依賴與關聯,聚合與組合,但是這個只是充分非必要條件,不能狹隘的通過生命周期來反推關系
總結
- UML的類圖是從程序邏輯層面上來表達系統設計的方法
- 類圖是一種靜態圖,描述的是系統的靜態結構
- 依賴關系,表達的是基于對象行為上的關聯
- 關聯關系,表達的是對象間的持有關系,影響對象的生命周期
- 聚合關系表達的是群體和個體的關系,刪除了群體,可能不影響個體的生命周期
- 組合關系表達的是整體和局部的關系,刪除了整體,局部隨之消亡
思考題
- 企業與員工是什么關系?
- 企業與個人是什么關系?
- 工廠類與被生成的類是什么關系?如果是支持緩存的工廠類呢?ML
總結
以上是生活随笔為你收集整理的uml 类图_UML-类图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1964年诞生的第一代电子计算机,世界第
- 下一篇: laravel 任务队列_Laravel