UML 類圖(上):類、繼承和實現 - 閱坊

文章推薦指數: 80 %
投票人數:10人

UML 類圖分爲上下兩篇,上篇是類、繼承和實現三種關係,下面開始。

類的UML 畫法. Java 是一門面向對象語言,那最基礎的就類了。

類(Class)封裝了數據和 ... ✕ Rust 架構 機器學習 Java 大數據 Javascript Go 微服務 DDD Twitter Facebook Feed 服務協議 聯繫我們 面向對象設計 對於一個程序員來說,在工作的開始階段通常都是別人把東西設計好,你來做。

伴隨着個人的成長,這個過程將慢慢變成自己設計一部分功能來實現,自己實現。

如果要自己設計,無論是給自己看,還是給別人看,勢必要輸出一些文檔,清晰地整理出思路。

關於文檔,有些人會用文字,但是再多的文字在絕大多數人看來,都不會有一張圖來得直白,本文就講一講使用UML圖來進行面向對象的設計。

面向對象設計主要就是使用UML的類圖,類圖用於描述系統中所包含的類以及它們之間的相互關係,幫助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。

UML類圖分爲上下兩篇,上篇是類、繼承和實現三種關係,下面開始。

類的UML畫法 Java是一門面向對象語言,那最基礎的就類了。

類(Class)封裝了數據和行爲,是面向對象的重要組成部分,它是具有相同屬性、操作、關係的對象集合的總稱。

在系統中,每個類都具有一定的職責,職責指的是類要完成什麼樣子的功能,要承擔什麼樣子的義務。

一個類可以有多種職責,但是設計得好的類一般只有一種職責。

假如我現在定義了這麼一個類: publicclassPerson { privateStringname="Jack"; publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } protectedvoidplayBasketball() { pass(); } privatevoidpass() { } } 那麼此類對應的UML爲: 看到該圖分爲三層:最頂層的爲類名,中間層的爲屬性,最底層的爲方法。

屬性的表示方式爲:【可見性】【屬性名稱】:【類型】={缺省值,可選} 方法的表示方式爲:【可見性】【方法名稱】(【參數列表】):【類型】  可見性都是一樣的,"-"表示private、"+"表示public、"#"表示protected。

繼承關係 繼承也叫作泛化(Generalization),用於描述父子類之間的關係,父類又稱爲基類或者超類,子類又稱作派生類。

在UML中,泛化關係用帶空心三角形的實線來表示。

假如現在我又定義了一個Student和一個Teacher: publicclassTeacherextendsPerson { privateStringteacherNo; publicvoidteach() { } } 那麼,用UML表示這種關係應當是: 抽象繼承關係 上面的繼承是普通的繼承,在Java中,除了普通的繼承之外,衆所周知的還有一種抽象的繼承關係,因此就再講講抽象繼承關係,作爲上面的繼承的補充。

比方說我想實現一個鏈表(Link),插入(insert)與刪除(remove)動作我想讓子類去實現,鏈表本身只實現統計鏈表中元素個數的動作(count),然後有一個子類單向鏈表(OneWayLink)去實現父類沒有實現的動作,Java代碼爲: publicclassOneWayLinkextendsLink { publicvoidinsert() { } publicvoidremove() { } } 其UML的畫法爲: 在UML中,抽象類無論類名還是抽象方法名,都以斜體的方式表示,因爲這也是一種繼承關係,所以子類與父類通過帶空心三角形的實線來聯繫。

實現關係 很多面向對象的語言中都引入了接口的概念,如Java、C#等,在接口中通常沒有屬性,而且所有的操作都是抽象的,只有操作的聲明沒有操作的實現。

UML中用與類類似的方法表示接口,假設我有一個Animal: 那麼它的UML應當表示爲: 很簡單,注意在方法上應當有<>表示這是一個接口。

接口一般沒有屬性,所以這裏中間層沒有,有屬性要注意也都是常量。

接下來,有一個Dog和一個Cat實現了Animal: publicclassDogimplementsAnimal { publicvoidmove() { } publicvoideat() { } } publicclassCatimplementsAnimal { publicvoidmove() { } publicvoideat() { } } 此時應當使用帶空心三角形的虛線來表示,UML應該是這樣的: 兩個抽象方法,Dog和Cat的實現將不一樣,當然,在Dog和Cat之中,也可以增加Dog和Cat自己的變量和方法。

本文由Readfog進行AMP轉碼,版權歸原作者所有。

來源:https://www.cnblogs.com/xrq730/p/5527115.html 2021年06月21日 #實現 #抽象 #屬性 #接口 #對象 猜你喜歡 UML類圖(下):關聯、聚合、組合、依賴 萬字多圖-UML入門指南 eBPF技術報告(上) 簡單易懂的設計模式(上) HDFS技術原理(上) UMD的包如何導出TS類型 Redis-數據結構詳解(上) 哈囉順風車智能交易體系建設(上) UEFI簡介 打造哈囉自動化增⻓算法閉環(上) 測試策略的實現 一文講透自適應熔斷的原理和實現



請為這篇文章評分?