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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uml 类图_UML-类图

發(fā)布時間:2024/7/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uml 类图_UML-类图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概念

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.

類圖是用于描述類、接口這一層次的圖形,他表達(dá)了類、接口的功能、約束以及他們之間的關(guān)系。

使用場景

類圖是適用于面向?qū)ο筮M(jìn)行建模的場景,通過類圖,我們能夠知道我們對系統(tǒng)被抽象成了哪些類,以及他們之間的關(guān)系。因此,類圖適用于使用面向?qū)ο蟮姆椒ㄟM(jìn)行設(shè)計的系統(tǒng)、應(yīng)用。

對于后端來說,一般類圖常用于單一的系統(tǒng)內(nèi),對于微服務(wù)這類分布式架構(gòu)的表達(dá),更適用于組件圖或者部署圖。 對于前端來說,由于 js 的語言特性,以及react、vue 這類組件化框架大行其道,簡單的業(yè)務(wù)場景就不需要使用到類圖了,基于面向?qū)ο蠼7炊沁^度設(shè)計,此時用組件圖表達(dá)即可。但是當(dāng)業(yè)務(wù)復(fù)雜到到一定程度,不得不使用面向?qū)ο髮I(yè)務(wù)層進(jìn)行建模時,類圖就有意義了。

類圖元素

類(class)

類是面向?qū)ο蟮母拍?#xff0c;是描述一系列對象共有的功能和約束 對于類來說,功能即類的屬性以及方法,約束即屬性及方法的可見性。

接口(interface)

接口描述的是功能的合集,一般我們會對功能進(jìn)行分類,同一類別的功能統(tǒng)一放在一個接口里,用接口來描述功能的抽象,以此來增強(qiáng)接口的可復(fù)用性。 比如 cloneable 接口,表述實現(xiàn)了這個接口的類是支持 clone 相關(guān)的行為的。接口和類最大的不同在于接口只描述行為,表達(dá)的是能力,比如 cloneable 接口,表達(dá)的是 clone 的能力,具體怎么 clone (如何實現(xiàn))是在類的范疇,因此接口的抽象程度更高。

因為接口是一個高度的抽象,因此接口需要有實際的載體,也就是類,所以接口是需要配合類來一起表達(dá)才能有實際的含義,因此聲明了接口后,還需要表明誰來實現(xiàn),或者相關(guān)的依賴。

類圖關(guān)系

類的基本元素比較簡單,難點在于關(guān)系的表達(dá)。業(yè)務(wù)之所以復(fù)雜,不是因為業(yè)務(wù)中可以抽象出多個類,而是類之間的關(guān)系,每個類的變動都可能牽扯到其他部分,業(yè)務(wù)行為正是通過這些”牽扯“組成的。因此我們使用面向?qū)ο蠼?#xff0c;核心的目的在于讓關(guān)系變得簡單,簡單意味著可控,業(yè)務(wù)行為便可預(yù)測。

本章節(jié)不會把所有的關(guān)系全部說清楚,只會講到平時開發(fā)過程中常見的 5 種關(guān)系線,他們的含義以及用法。

依賴(dependency)

兩個對象間最弱的關(guān)系,表示一個類的某些行為與另一個類有相關(guān)性。 敲黑板!依賴關(guān)系是行為之間產(chǎn)生關(guān)聯(lián)

A 依賴 B 的三種場景:

class A {function fn(B b) { }function fn2() {B b = new B()}function fn3() {return new B()} }

泛化(generalization)

通常指一個類(或接口)繼承另一個類(或接口),并可以增加它自己的新功能的能力。

A 繼承類 B 實現(xiàn) IC 接口:

class A extends B implements IC { }

關(guān)聯(lián)(association)

二元關(guān)系,表示對象與對象之間有持有關(guān)系

單向關(guān)聯(lián)關(guān)系,A 關(guān)聯(lián) B :

class A {B b } class B { }

雙向關(guān)聯(lián)關(guān)系,A 與 B 互相關(guān)聯(lián):

class A {B b } class B {A a }

聚合(aggression)

含義更明確的單向關(guān)聯(lián)關(guān)系,表示群體與個體的關(guān)系。群體解散了,個體可能還會存活。 聚合關(guān)系強(qiáng)調(diào)了對象間生命周期的關(guān)系,聚合的對象是有各自獨立的生命周期的。

class A {B bconstructor(B _b) {this.b = _b}setB(B b) {this.b = b} }

組合(composition)

和聚合關(guān)系類似,屬于更明確的關(guān)聯(lián)關(guān)系,表示全體和局部的關(guān)系。全體不存在了,局部也不存在了(或沒有意義了),和聚合的區(qū)別在于聲明周期的不同。

class A {B bconstructor() {this.b = new B()} }

小結(jié)

我們講的 5 種關(guān)系,都屬于二元關(guān)系,區(qū)別在于使用的時機(jī)與生命周期的不同。依賴與關(guān)聯(lián)的區(qū)別在于依賴僅是在行為上會使用到另一個類,而關(guān)聯(lián)則是需要持有對象,會影響對象的生命周期。 聚合與組合是提出了更明確含義的關(guān)聯(lián)關(guān)系,區(qū)別在于聚合的對象,生命周期是各自獨立的,組合的對象,生命周期跟隨整體。

要注意的是,關(guān)系是對現(xiàn)實事務(wù)的表達(dá),因此關(guān)系本身也是有語義的。為了方便理解,我們使用對象聲明周期的影響來區(qū)分依賴與關(guān)聯(lián),聚合與組合,但是這個只是充分非必要條件,不能狹隘的通過生命周期來反推關(guān)系

總結(jié)

  • UML的類圖是從程序邏輯層面上來表達(dá)系統(tǒng)設(shè)計的方法
  • 類圖是一種靜態(tài)圖,描述的是系統(tǒng)的靜態(tài)結(jié)構(gòu)
  • 依賴關(guān)系,表達(dá)的是基于對象行為上的關(guān)聯(lián)
  • 關(guān)聯(lián)關(guān)系,表達(dá)的是對象間的持有關(guān)系,影響對象的生命周期
  • 聚合關(guān)系表達(dá)的是群體和個體的關(guān)系,刪除了群體,可能不影響個體的生命周期
  • 組合關(guān)系表達(dá)的是整體和局部的關(guān)系,刪除了整體,局部隨之消亡

思考題

  • 企業(yè)與員工是什么關(guān)系?
  • 企業(yè)與個人是什么關(guān)系?
  • 工廠類與被生成的類是什么關(guān)系?如果是支持緩存的工廠類呢?ML

總結(jié)

以上是生活随笔為你收集整理的uml 类图_UML-类图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。