對象模型中類與類間的關系

類與類之間通常有關聯、聚集、泛化(繼承)、依賴和細化4種關系

1.關聯
? ? ? 關聯表示兩個類的對象之間存在某種語義上的聯系。
(1) 普通關聯
? ? ? ?只要在類與類之間存在連接關系就可以用普通關聯表示。普通關聯的圖示符號是連接兩個類之間的直線,如下圖所示。
關聯是雙向的,可在每一個方向上為關聯起一個名字(也可不起名字)。為避免混淆,在名字前面(或后面)加一個表示關聯方向的黑三角。在表示關聯的直線兩端可以寫上重數(multiplicity),它表示該類有多少個對象與對方的一個對象連接。

2.聚集

聚集也稱為聚合,是關聯的特例。聚集表示類與類之間的關系是整體與部分的關系。使用的“包含”、“組成”、“分為……部分”等字句,意味著存在聚集關系。有共享聚集和組合聚集兩種特殊的聚集關系。
(1) 共享聚集
? ? 如果在聚集關系中處于部分方的對象可同時參與多個處于整體方對象的構成,則該聚集稱為共享聚集。下圖中,一個課題組包含許多成員,每個成員又可以是另一個課題組的成員,則課題組和成員之間是共享聚集關系。一般聚集和共享聚集的關聯關系用空心菱形表示。

(2) 組合聚集
? ? 如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱為組合聚集(簡稱為組成)。

3.泛化

UML中的泛化關系就是通常所說的繼承關系,它是通用元素和具體元素之間的一種分類關系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。
在UML中,用一端為空心三角形的連線表示泛化關系,三角形的頂角緊挨著通用元素。
泛化關系指出在類與類之間存在“一般--特殊”關系。泛化可進一步劃分成普通泛化和受限泛化。
(1) 普通泛化

? ??沒有具體對象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時,在類名下

附加一個標記值{abstract}。

與抽象類相反的類是具體類,具體類有自己的對象,并且該類的操作都有具體的實現方法。

(2) 受限泛化

給泛化關系附加約束條件,以進一步說明該泛化關系的使用方法或擴充方法,這樣的泛化關系稱為受限泛化。預定義的約束有4種:多重、不相交、完全和不完全。這些約束都是語義約束。

多重繼承指的是,一個子類可以同時多次繼承同一個上層基類,右圖中的水陸兩用類繼承了兩次交通工具類。與多重繼承相反的是不相交繼承,即一個子類不能多次繼承同一個基類(這樣的基類相當于C++語言中的虛基類)。如果圖中沒有指定{多重}約束,則是不相交繼承,一般的繼承都是不相交繼承。
完全繼承指的是父類的所有子類都已在類圖中窮舉出來了,圖示符號是指定{完全}約束。

不完全繼承與完全繼承恰好相反,父類的子類并沒有都窮舉出來,隨著對問題理解的深入,可不斷補充和維護,這為日后系統的擴充和維護帶來很大方便。不完全繼承是一般情況下默認的繼承關系。

4.依賴和細化

(1) 依賴關系

? ? 依賴關系描述兩個模型元素(類、用例等)之間的語義連接關系: 其中一個模型元素是獨立的,另一個模型元素不是獨立的,它依賴于獨立的模型元素,如果獨立的模型元素改變了,將影響依賴于它的模型元素。
? ? 在UML的類圖中,用帶箭頭的虛線連接有依賴關系的兩個類,箭頭指向獨立的類。在虛線上可以帶一個版類標簽,具體說明依賴的種類。

(2) 細化關系

? ? 當對同一個事物在不同抽象層次上描述時,這些描述之間具有細化關系。
? ? 假設兩個模型元素A和B描述同一個事物,它們的區別是抽象層次不同,如果B是在A的基礎上的更詳細的描述,則稱B細化了A,或稱A細化成了B。細化的圖示符號為由元素B指向元素A的、一端為空心三角形的虛線(注意,不是實線),如下圖所示。細化用來協調不同階段模型之間的關系,表示各個開發階段不同抽象層次的模型之間的相關性,常常用于跟蹤模型的演變。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452213.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452213.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452213.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記憶講師石偉華微信公眾號2017所有文章匯總(待更新)

17-10-24-不勝光榮的記憶 17-10-26-每日一個超長英文單詞(2) 17-10-27-每日一個超長英文單詞(3) 17-10-28-每日一個超長英文單詞(4) 轉載于:https://www.cnblogs.com/bakblog/p/9228096.html

Log4J日志配置詳解

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、Log4j簡介 Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layouts(布局)。這里可簡單理解為日…

中文編碼雜談

編碼問題的例子 在windows自帶的notepad(記事本)程序中輸入“聯通”兩個字,保存后再次打開,會發現“聯通”不見了,代之以“”的亂碼。這是windows平臺上典型的中文編碼問題。即文件保存的時候是按照ANSI編碼&#xff…

Java NIO (十四)NIO 和 IO 的區別和適用場景分析

在研究Java NIO和IO API時,很快就會想到一個問題: 什么時候應該使用IO,什么時候應該使用NIO? 在本文中,我將嘗試闡明Java NIO和IO之間的區別,它們的用例以及它們如何影響代碼的設計。 ###Java NIO和IO之間的…

面向對象三種模型之間的關系

功能模型指明了系統應該“做什么”;動態模型明確規定了什么時候(即在何種狀態下接受了什么事件的觸發)做;對象模型則定義了做事情的實體。在面向對象方法學中,對象模型是最基本最重要的,它為其他兩種模型奠定了基礎,人…

android node

pkg install nodejs-current轉載于:https://www.cnblogs.com/insight0912/p/9231342.html

springmvc 中@Controller和@RestController的區別

1.Controller, RestController的共同點 都是用來表示Spring某個類的是否可以接收HTTP請求 2.Controller, RestController的不同點 Controller標識一個Spring類是Spring MVC controller處理器 RestController: a convenience annotation that does nothing more …

easyUI 日期控件修改...

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 個人覺得easyUI挺好用的。 它的中文文檔地址: http://www.zi-han.net/case/easyui/ 日期本來效果是這樣的: 改…

面向對象分析的三個模型與5個層次

在面向對象分析中,主要由對象模型、動態模型和功能模型組成。對象模型是最基本、最重要、最核心的。 面向對象建模得到的模型包含系統的3個要素,即靜態結構(對象模型)、交互次序(動態模型)和數據變換(功能模型)。解決的問題不同,這3個子模型…

學成在線--15.課程計劃查詢

文章目錄一.需求分析二.頁面原型1.tree組件介紹2.webstorm配置jsx三.API接口1.數據模型2.自定義模型類3.接口定義四.sql語句五.服務器端1.Dao1)Mapper接口2)Mapper映射文件2.Service3.Controller4.測試六.前端1.Api方法2.Api調用1)定義查詢課…

團隊作業-項目答辯

1. 王書磊 1600802063 http://www.cnblogs.com/wsl-1117/ 劉令斌 1600802017 http://www.cnblogs.com/liulingbin/ 許浩然 1600802066 https://www.cnblogs.com/xuhaoran1/ 成明龍 1600802038 http://www.cnblogs.com/CMLCML/ 2這是我們的效果圖. 3.(1)修…

Java構造和解析Json數據的兩種方法詳解一

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 在www.json.org上公布了很多JAVA下的json構造和解析工具,其中org.json和json-lib比較簡單,兩者使用上差不多但還是…

面向對象方法開發的方法

面向對象分析首要的工作,是建立問題域的對象模型。 這個模型描述了現實世界中的“類與對象”以及它們之間的關系,表示了目標系統的靜態數據結構。靜態數據結構對應用細節依賴較少,比較容易確定。因此,用面向對象方法開發絕大多數…

程序員編程需要多少個小時?

Michael Arrington曾發表一篇博文說,創業者必須加倍的努力工作,甚至不惜趴在辦公桌上睡覺,這樣才能成功。對此,我并不贊同其觀點,我看了很多評論都是關于這樣工作會適得其反,不但沒有獲得成功,相…

事務以及@Transcational注解

文章目錄1.事務的概念2.事務的四個特性3.關于Transcational注解的理解4.使用場景5.舉例6.編程式事務管理7.相關知識1.事務的概念 事務,是指作為單個邏輯工作單元執行的一系列操作,結果只有成功和失敗兩種,要么全部成功(全部提交)&#xff0c…

提高代碼復用率

由于現在的互聯網企業業務比較繁忙,導致產品狗不停地提需求,還總是改來改去,最后留給程序猿的時間少之又少。程序猿也不是吃素的,干脆直接copy一下代碼隨便搞一下實現功能就行,也談不上所謂的精心設計了。這樣的確是縮…

java 對 redis 的基本操作

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、server端安裝 1、下載https://github.com/MSOpenTech/redis 可看到當前可下載版本:redis2.6 2、安裝 1)解壓…

JsRender 前端渲染模板常用API學習

JsRender 常用API 1. $.templates() $.templates()方法是用來注冊或編譯模板的,使用的情況有以下幾種。 把html字符串編譯編譯成模板獲取使用script標簽聲明的模板,并返回一個模板對象把html字符串或者在script標簽中聲明的模板注冊成命名模板獲取之前就…

狀態圖

狀態圖(Statechart Diagram)是描述一個實體基于事件反應的動態行為,顯示了該實體如何根據當前所處的狀態對不同的事件做出反應。通常我們創建一個UML狀態圖是為了以下的研究目的:研究類、角色、子系統、或組件的復雜行為。

我身邊的手機應用開發者

手機應用火了,我身邊的一位朋友(A君)也投身到開發者行列,不過他還算聰明并沒有辭掉工作專做手機應用軟件開發。 其原因在于他們領導打算做一款自己的應用軟件,正當A君愁到底是做IOS平臺還是Android平臺的時候,領導說:…