日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uml 类图_UML-类图

發布時間:2024/7/23 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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-类图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。