UML中的四種關係

来源:http://www.cnblogs.com/shouce/archive/2016/04/28/5441241.html
-Advertisement-
Play Games

一、Association關聯關係 說明:Assocition(關聯):描述了兩個或多個類之間的結構性關係。 (1)普通關聯: 1)Association name名稱:用以描述該關係的性質。 2)Role角色:當一個類處於關聯的某一端時,該類就在這個關係中扮演了一個特定的角色;角色是關聯中靠近它的 ...


一、Association關聯關係

說明:Assocition(關聯):描述了兩個或多個類之間的結構性關係。

(1)普通關聯:

1)Association name名稱:用以描述該關係的性質。

2)Role角色:當一個類處於關聯的某一端時,該類就在這個關係中扮演了一個特定的角色;角色是關聯中靠近它的一端的類對另外一端的類呈現的職責。

3)Multiplicity多重性:關聯角色的多重性是說明一個關聯的實例中有多少個相互連接的對象。

例如():

 

複製代碼
Public Class Person

Private employer As Company

End Class



Public Class Company

Private employee As Person

'……

End Class
複製代碼

 

 

例如:

複製代碼
Public Class CatalogEntry

Private name As String

Private number As Integer

Private cost As Double

Public Function getCost() As Double

Return cost

End Function

End Class
複製代碼 複製代碼
Public Class Part

Private entry As CatalogEntry

Public Function Cost() As Double

Return entry.getCost

End Function

End Class



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim screw As New CatalogEntry("screw", 28834, 0.02)

Dim screw1 As New Part(screw)

screw1.Cost()

'……

End Sub
複製代碼

 

上面的兩個例子,第一個是一個雙向的普通關聯,第二個例子是一個單向關聯。同理,兩個類之間可以有多種關聯,一個類也可以和多個類關聯,類也可以自身關聯。

(2)聚合aggregation

說明:聚合表示一種弱的“擁有”關係,體現的是A對象可以包含B對象,但B對象不是A對象的一部分。

例:

複製代碼
Public Class GooseGroup

Private arrayWildGoose As New WildGoose()

'……

End Class
複製代碼

 

(3)組合composition

說明:一種強的“擁有”關係,體現了嚴格的部分和整體的生命周期一樣。

例如:

複製代碼
Public Class Bird

Private wing As Wing

Public Sub New()

wing = New Wing() '在鳥bird類中,初始化時,實例化翅膀Wing,它們之間同時生成

End Sub

End Class
複製代碼

 

二、Generalization泛化關係

說明:是一種特殊/一般關係,特殊元素(子元素)的對象可替代一般元素(父元素)的對象。用這種方法,子元素共用了父元素的結構和行為。

表示方法:

Public Class Dog : Inherits Animal

'……

End Class

 

說明:VB.net中如果說明某個類不再被繼承,可以使用notInheritable

三、Dependency依賴關係

依賴關係:

例如:

說明:動物有幾大特征,比如有新陳代謝,能繁殖。而動物要有生命力,需要氧氣、水以及食物等。也就是說,動物依賴氧氣和水。他們之間是依賴關係(dependency),用虛線箭頭來表示

例如:

複製代碼
Public Class Professor

Public Function Teach(ByVal c As Course)

'……

End Function

End Class
複製代碼

 

說明:如果兩個類有結構關係(關聯關係),那麼就不用依賴關係(兩個事物一般都有這個關係)

 

四、Realization實現

說明:實現是類元之間的語義關係,在該關係中一個類元描述了另一個類元保證實現的契約。

表示方法:

複製代碼
Public Interface IShape

Function Draw()

End Interface



Public Class Circle : Implements IShape

Public Function Draw() Implements IShape.Draw

End Function

End Class
複製代碼

 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安裝: 1. UnixBench from version 5.1 on has both system and graphics tests. If you want to use the graphic tests, edit the Makefile and make sure that th ...
  • 安裝samba完後會生成samba目錄 > /etc/samba http://blog.csdn.net/xt_xiaotian/article/details/4216408 允許的IP地址段,將自己的IP地址段加入即可(註意IP的最後一段沒有,但後邊有個點) 重啟機器時,smb服務並不會自動啟 ...
  • LNMT在網站架構中的實現過程: Client --> http --> Nginx --> reverse_proxy (http) --> tomcat (http connector) --> mysql 但是當nginx有大量的併發請求時,nginx會反代大量的併發請求至tomcat,這時為 ...
  • 介紹 本篇主要介紹Linux定時任務命令crontab的用法,crontab是定時任務的命令,而crond則是定時任務的啟動服務。crontab的定時任務分為系統任務和用戶任務,其實二者沒有太大的區別。 啟動 在Centos中crond服務預設是自動啟動的,如果沒有啟動可以手動啟動,具體方法如下。 ...
  • 情形: 1.主機(host):ubuntu 2.虛擬機里安裝的操作系統版本(guest):windows 7專業版 3.simplify3d破解版版本:3.0.2(破解需要的工具均在下文的百度雲地址里) 所需文件下載地址:http://pan.baidu.com/s/1slUoEZz,密碼:57cs ...
  • 在測試前,理應瞭解本機所具備的特點,比如CPU頻率、記憶體頻率、記憶體大小,等等信息。 查看CPU用如下命令(多少個核,頻率,特性等): cat /proc/cpuinfo 查看記憶體用如下命令:(只有當前記憶體大小,已用空間等等,不能看到記憶體頻率) cat /proc/meminfo 要查看記憶體型號和頻率 ...
  • 寫在前面 最近在重溫asp.net,找了一本相關的書籍。本書在第一章就講了,在不使用瀏覽器的情況下生成一個web請求,獲取伺服器返回的內容。於是在網上搜索關於Http請求相關的資料,發現了很多資料都是講述基於HttpGet和HttpPost請求伺服器的資源,然根據Get和Post的單詞意思就大概知道 ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...