類別圖- 維基百科,自由的百科全書
文章推薦指數: 80 %
類別圖是物件導向式的建模。
他們一般都被用於概念建模(conceptual modelling)的系統分類的應用程式,並可將模型建模轉譯成程式碼。
... 為了進一步描述系統的行為,這些類 ...
類別圖
維基百科,自由的百科全書
跳至導覽
跳至搜尋
UML2.0Diagrams
UML圖
UML結構圖
類別圖
組件圖
複合結構圖
部署圖
物件圖
包圖
剖面圖
UML行為圖
活動圖
通信圖(協同運作圖)
互動縱覽圖
時序圖
狀態圖
時間圖
用例圖
閱論編
類別圖是軟體工程的統一建模語言一種靜態結構圖,該圖描述了系統的類別集合,類別的屬性和類別之間的關係。
目次
1概述
2成員
3關係
3.1實例層級的關係
3.1.1外部連結
3.1.2泛化
3.1.3實現
3.1.4依賴
3.1.5關聯
3.1.6聚合
3.1.7組成
3.1.8關聯、組成和聚集之差異
3.2類別層級的關係
3.2.1概括
3.2.2實現
3.3一般關係
3.3.1依賴
3.3.2多重
4參考文獻
5外部連結
概述[編輯]
類別圖是物件導向式的建模。
他們一般都被用於概念建模(conceptualmodelling)的系統分類的應用程式,並可將模型建模轉譯成程式碼。
一個類別有三個區域
最上面是類別名稱
中間部分包含類別的屬性
底部部分包含類別的方法
為了進一步描述系統的行為,這些類圖可以輔之以狀態圖或UML狀態機。
成員[編輯]
UML提供機制,以代表類的成員,如屬性和方法,對他們的其他資訊。
指定一個類成員(即任何屬性或方法)的可見性有下列符號,必須擺在各成員的名字之前:
+公共
-私有
#保護(即對子類可見)
~包(即對包内其他成員可見)
關係[編輯]
實例層級的關係[編輯]
外部連結[編輯]
外部連結(Externallinks)是物件之間的基本關係。
泛化[編輯]
泛化(Generalization),即繼承的反方向,指的是一個類別(稱為父類別、父介面)具有另外的一個(或一些)類別(稱為子類別、子介面)的共有功能。
子類別可視為其父類別的特例,並可以增加新功能。
用帶空心三角形箭頭的實線表示。
實現[編輯]
實現(Realization)指的是一個class類別實現interface介面(可以是多個)的功能;在Java中此類別關係通過關鍵字implements明確標識。
用帶空心三角形箭頭的虛線表示。
依賴[編輯]
依賴關係(Dependency)可以簡單的理解為一個類別A使用到了另一個類別B,"...usesa...",被依賴的物件只是作為一種工具在使用,而並不持有對它的參照。
而這種使用關係是具有偶然性、臨時性的、非常弱的,但是B類別的變化會影響到A;表現在代碼層面,為類別B作為參數被類別A在某個method(方法)中使用。
用帶燕尾箭頭的虛線表示。
表示一個類別依賴於另外一個類別的定義;依賴關係僅僅描述了類別與類別之間的一種使用與被使用的關係。
關聯[編輯]
人與雜誌是一種關聯
一個關聯(Association)代表一個家族的聯繫。
關聯可以命名,可以飾以角色名稱,有權指標,多重性,可視性,以及其他屬性(如相互關聯和有方向的(帶燕尾箭頭的實線表示)關聯)。
在語意上是兩個類別之間、或類別與介面之間一種強依賴關係,是一種長期的穩定的關係,"...hasa..."。
關聯關係使一個類別知道另外一個類別的屬性和方法;通常含有「知道」、「了解」的含義。
某個物件會長期的持有另一個物件的參照,關聯的兩個物件彼此間沒有任何強制性的約束,只要二者同意,可以隨時解除關係或是進行關聯,它們在生命期問題上沒有任何約定。
被關聯的物件還可以再被別的物件關聯,所以關聯是可以共享的。
在代碼層面上,被關聯類別以類別屬性的形式出現在關聯類別中,也可能是關聯類別參照了一個類別型為被關聯類別的全域變數。
目前定義有五種不同類型的關聯。
雙向(Bi-directional)和單向(uni-directional)的關聯是最常見的。
ClassdiagramshowingAggregationbetweentwoclasses
聚合[編輯]
聚合(Aggregate)是表示整體與部分的一類別特殊的關聯關係,是「弱」的包含("...ownsa...")關係,成分類別可以不依靠聚合類別而單獨存在,可以具有各自的生命周期,部分可以屬於多個整體物件,也可以為多個整體物件共享(sharable)。
例如,池塘與(池塘中的)鴨子。
再例如教授與課程就是一種聚合關係。
又例如圖書館包含(ownsa)學生和書籍。
即使沒有圖書館,學生亦可以存在,學生和圖書館之間的關係是聚集。
聚集可能不涉及兩個以上的類別。
圖形以空心的菱形箭尾與實線來表示。
//Aggregation
classPond
{
private:
std::vector
成分類別必須依靠合成類別而存在。
整體與部分是不可分的,整體的生命周期結束也就意味著部分的生命周期結束。
合成類別別完全擁有成分類別別,負責建立、銷毀成分類別別。
例如汽車與化油器,又例如公司與公司部門就是一種組成關係。
圖形以實心的菱形箭尾與實線表示。
//Composition
classCar
{
private:
//Caristheownerofcarburetor.
//CarburetoriscreatedwhenCariscreated,
//itisdestroyedwhenCarisdestroyed.
Carburetorcarb;
};
關聯、組成和聚集之差異[編輯]
當一個類別作為另一個類別某個方法的參數時,為關聯。
[需要較佳來源]
兩者的差別主要描述了子類別的生命周期的不同。
組合關係中,一旦父類別被銷毀子類別也會隨之銷毀;聚合關係中,子類別的生命周期與父類別獨立。
[1]例如,一個大學包含若干個系(如化學系),每個系由若干名教授。
如果大學復原,這些系也就不復存在了,但這些教授仍會繼續存在。
還需注意,一名教授可以在不同系甚至不同學校兼職,而一個系不能屬於兩所大學。
所以,大學與系之間是組成關係,而系與教授是聚合關係。
類別層級的關係[編輯]
概括[編輯]
概括(Generalization),是指類別與類別之間的共通性,通常會具有繼承(inherit)的關係。
圖形以實線和空心箭頭來表示。
實現[編輯]
UML建模時,一個實現(realization)關係是兩個模型元素之間的關係,其中一個模型元素(客戶端)實現的行為,其他模型元素(供應商)指定。
圖形以虛線和空心箭頭來表示。
一般關係[編輯]
依賴[編輯]
"Car"與"Wheel"是一種弱化的依賴
依賴(Dependency)是一種弱化形式的關係,表示一類別依賴於另外的類別,因為類別在某個時間點使用另一個類別。
多重[編輯]
關聯多重性(Multiplicity)是用來定義參與物件數量,每個參與類別都必須指定多重性值,例如classA會有多少個instance與classB的多少個instance關連在一起,在現實生活中,一個汽車駕駛與汽車個數就是多重關係,可以是一對多,或是多對多。
參考文獻[編輯]
^UML基础:类图.[2012-02-20].(原始內容存檔於2016-03-04).
外部連結[編輯]
IntroductiontoUML2ClassDiagrams(頁面存檔備份,存於網際網路檔案館)
UML2ClassDiagramGuidelines(頁面存檔備份,存於網際網路檔案館)
IBMClassdiagramIntroduction(頁面存檔備份,存於網際網路檔案館)
OMGUML2.2specificationdocuments(頁面存檔備份,存於網際網路檔案館)
閱論編統一建模語言(UML)背景機構物件管理組織(OMG) ·UMLPartners(英語:UMLPartners)個人葛來迪·布區 ·伊瓦爾·雅各布森 ·詹姆士·蘭寶概念物件導向物件導向的程式設計結構執行者(英語:Actor(UML)) ·屬性(英語:Attribute(computing)) ·類 ·元件 ·介面 ·物件 ·包行為活動(英語:Activity(UML)) ·事件(英語:Event(UML)) ·訊息 ·方法 ·操作 ·狀態(英語:State(computerscience)) ·用例關係聚合 ·關聯 ·組合 ·相依 ·泛化(繼承)其他概念構造型 ·多重性 ·角色圖結構圖類別圖 ·元件圖 ·組合結構圖 ·部署圖 ·物件圖 ·包圖 ·面圖行為圖活動圖 ·狀態圖 ·用例圖 ·通信圖 ·互動概述圖 ·時序圖 ·時間圖主題關聯式資料庫模型(ERD)比較 ·統一建模語言術語彙表(英語:GlossaryofUnifiedModelingLanguageterms) ·系統建模語言(SysML)工具UML工具 ·統一軟體開發過程
取自「https://zh.wikipedia.org/w/index.php?title=類別圖&oldid=71012277」
分類:統一建模語言圖表隱藏分類:需要查證來源的維基百科條目自2019年5月需要查證來源的維基百科條目
導覽選單
個人工具
沒有登入討論貢獻建立帳號登入
命名空間
條目討論
臺灣正體
不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體
查看
閱讀編輯檢視歷史
更多
搜尋
導航
首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科
說明
說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科
工具
連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目
列印/匯出
下載為PDF可列印版
其他專案
維基共享資源
其他語言
العربيةБългарскиCatalàČeštinaDeutschEnglishEspañolفارسیSuomiFrançaisעבריתहिन्दीHrvatskiMagyarBahasaIndonesiaItaliano日本語한국어LietuviųPolskiPortuguêsРусскийSlovenčinaShqipСрпски/srpskiSvenskaதமிழ்TürkçeУкраїнська
編輯連結
延伸文章資訊
- 1將類別圖表新增至類別設計工具(專案) - Visual Studio (Windows)
若要設計、編輯和重構類別及其他類型,請將類別圖加入至C#、Visual Basic 或C++ 專案。 若要在專案中視覺化程式碼的不同部分,請將多個類別圖加入至 ...
- 2Class Diagram 類別圖筆記 - 奧卡的部落格
類別圖是UML 的一種,他透過一個系統中的物件、物件的屬性、物件擁有的方法和物件與物件之間的關係來描述其結構。 ¶類別圖符號. 類別圖的符號分為兩大類.
- 3UML簡介_Class/Object Diagram - 林偉川
類別圖主要是用來做物件的資料結構塑模用的。 它有點類似傳統的資料庫的實體關係圖(Entity-. Relation Diagram)。但是, ERD圖並不是以物件. 導向的觀點來設計。
- 4簡單理解UML 類別圖 - Medium
Class Diagram. 在物件導向的實作中,UML 類別圖可幫助釐清各類別的描述、擁有的屬性、可使用的方法與各物件間的相互關聯,能清楚表示實作的Design ...
- 5UML類別圖:基本概念篇 - 自學程式誌
為何需要畫類別圖(Class Diagram)?. 之前有提過是否畫類別圖是一個爭議性問題,他主要有以下的問題:. 沒有足夠時間 ...