UML(統一的建模語言)


1、軟件開發與軟件工程

任何事情都必須想清楚了,才能去做!這樣才不會出現很多不必要的麻煩,軟件開發亦是如此。

寫代碼前要想好:想要做什么?做成什么樣?如何去做?

軟件設計就是把軟件開發想清楚的過程;

軟件工程就是對軟件開發進行建模和管理;

所謂模型,就是對現實進行簡化,幫助人們能更好的了解所要研究事物的本質,例如地圖。

建模就是對現實系統進行適當的過濾,用一種適當的表現規則描繪出簡潔的模型,其是一種深入解決問題的方法。

建模的原則有:1)正確的模型

       2)使用者的身份和使用場合是評價建模的好壞的關鍵

       3)適當的簡潔,而又不掩藏事物的重要的細節。

       4)模型不能孤立

建模的作用:將現實世界的問題映射成計算機世界所能理解並解決的問題。

建模的過程:根據需求,用模型表達設計過程,然后映射成軟件實現。

2、UML

UML(United modeling language)是一種基於面向對象的可視化的建模語言,它采用一種形象化的圖形符號作為語言,通過建立的圖形之間的關系來描繪模型。

3、UML的圖和關系

UML共有10種圖:1)靜態模型圖:用來描述系統的靜態結構

          類圖、對象圖、包圖、組件圖、部署圖

         2)動態模型圖:用來描述系統行為的各方面

          用例圖、時序圖、狀態圖、活動圖、協作圖

UML的關系有四種:關聯關系、依賴關系、泛化(相當於C++中的繼承)、實現關系;

(一)用例圖(用戶模型圖)

它是從客戶的角度來描述系統功能。

有三個基本組件:參與者(Actor)、用例(Use Case)、關系;

其中參與者,表示使用該系統的人或者事物,在UML中,用人形表示,用例代表系統某項完整的功能,用橢圓表示;關系:表示用例之間的關系

 

用例之間的關系有泛化關系、擴展關系、包含關系

泛化關系:表示同一業務目的的不同技術實現;

擴展關系:在完成一個功能時,再執行另外的功能;

包含關系:一個用例可以包含其他用例具體的行為。

 

 

(二)類圖

主要是用來顯示系統中的類,接口以及它們之間的關系,其中關系有泛化關系、關聯關系、依賴關系、實現關系。

類是類圖的主要組件,由三部分組成:類名,屬性和方法(函數),其中+號表示公有屬性,-號表示私有屬性,#表示保護屬性;

接口包含方法,不包含屬性。通過一條實線與它的模型元素相連。

泛化關系:表示類與類之間、接口與接口之間的繼承關系。

實現關系:用來表示類與接口之間的實現關系

依賴關系:簡單的理解就是,假設我開車去上班,但是我沒有車,需要借別人的車才能去上班,我跟這個車之間的關系就是依賴關系,對應代碼實現---》就是一個類作為另一個類的函數參數或者函數返回值;

關聯關系:我的理解是,我牛逼了!我自己有車了,不需要借車去上班了,使用自己的車去上班,這時我跟這個車之間的關系就是關聯關系,對應代碼實現---》就是一個類是另一個類的成員變量

 1 #include<iostream>
 2 using namespace std;
 3 //依賴(虛線):一個類作為另一個類的函數參數或者函數返回值
 4 
 5 class Car;
 6 class Lin {
 7 public:
 8     //依賴關系(
 9     void work(Car *p)
10     {
11 
12     }
13     Car* fix()
14     {
15 
16     }
17 protected:
18 private:
19 };
20 
21 class Car {
22 public:
23 protected:
24 private:
25 };
26 //關聯(實現)
27 class AdvLin {
28 public:
29     void work()
30     {
31         //m_car01->(使用方式)
32     }
33 protected:
34 private:
35     //Car *m_car01;
36     Car m_car02;
37 };
38 
39 void main()
40 {
41     cout << "Hello World!" << endl;
42     system("pause");
43     return;
44 }

 

 

 

關聯關系中的角色:角色就是關聯關系中一個類對另一個類所表現的職責。例如車是我的,那么我就是車的主人。

關聯關系的多重性是指有多少對象可以參與該關聯, 多重性可以用來表達一個取值范圍, 特定值, 無限定的范圍。例如我又牛逼了,我可以同時擁有多輛車,這就是關聯關系的多重性。

在C++、Java中關聯關系可以是單向的、也可以是雙向的,它們之間是通過成員變量實現的。

-------------------------------------------------------------------------------------------------------------------華麗的分割線------------------------------------------------------------------------------------------------------------------------

ps:繼上次總結UML已經過去半年多了,現在來補上之前停下來的部分.(2018/11/17)

關聯關系中還有聚合和組合兩種關系:

聚合關系:聚合關系是更強的關聯關系,聚合是整體與部分之間的關系,關聯關系涉及的類處於同一個層次上,而聚合關系,兩個類處於不同的層次,一個整體一個部分。(例如,車與引擎、車輪之間的關系)

組合關系:又稱為強聚合,比聚合更強的關聯關系,代表着整體的對象負責代表部分對象的生命周期。(例如,公司和部門的關系)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM