C 程式設計雜談之漫談UML

2021-05-22 10:41:09 字數 1417 閱讀 4072

類圖

靜態檢視說明了物件的結構,其中最常用的就是類圖,類圖可以幫助我們更直觀的了解乙個系統的體系結構,有時侯,描述系統快照的物件圖(object diagram)也是很有用的。在這裡,我們主要介紹類圖,下面的圖就是乙個簡單的類圖:

在類圖中,類由矩形框來表示,如上圖中,定義了4個類,分別為base、a、b、c,類之間的關係通過各種線條和其他符號來表示,在上圖中,空心的三角表示繼承關係,在uml的術語中,這種關係被稱為泛化(generalization),所以上面的類用等價**表示為:

class base;

class a:public base;

class b:public base;

class c:public base;

我們再看下一幅圖:

這幅圖與上幅幾乎沒有什麼區別,唯一的不同就是base類中增加了成員,乙個私有的integer _x(uml術語為property)和乙個公有的fun()的函式(method),是否需要這些類的內部細節uml本身並沒有限制,完全取決於你自己如何使用,uml的用處在於幫助你了解系統,所以只要你自己覺得足夠清楚,那麼夠了,不要再複雜了。

接著看第三幅圖:

上面圖中的箭頭表示一種關係,箭頭另一邊有乙個菱形(空心)表示聚合(aggregation),聚合的意義表示has-a關係,其等價**如下:

class a;

class b;

聚合是一種相對鬆散的關係,聚合類b不需要對被聚合的類a負責。

下面的圖:

這幅圖與上面的唯一區別是菱形為實心的,它代表了一種更為堅固的關係——組合(composition)。組合表示的關係也是has-a,不過在這裡,a的生命期受b控制,通常情況,等價**如下:

class a;

class b;

即a會隨著b的建立而建立,隨b的消亡而消亡。

下圖:這裡b與a的關係只是一種依賴關係,這種關係表明,如果類a被修改,那麼類b會受到影響,乙個簡單的例子就是:

class a;

class b;

常用的關係就是我們上面用的這些,通過這些關係和類表示的類圖,我們可以用圖形化的方式描述乙個系統的設計部分,當你習慣使用uml後,你會發現,這往往比你告訴同伴某某類從某某類派生,派生類又和某某類具有什麼關係容易的多。

順序圖:

uml中另外乙個常用的圖形就是互動檢視中的順序圖,在以往的過程化語言中,我們通常使用流程圖來描述乙個函式(系統)是如何工作的,而在物件導向的系統中,這顯然是不可行的,而順序圖正是來解決這個問題的。

假設有如下的偽**:

class circle

;void draw();};

《design patterns explained》alan shalloway, james r. trott

addison-wesley pub 2001

C 程式設計雜談之漫談UML

靜態檢視說明了物件的結構,其中最常用的就是類圖,類圖可以幫助我們更直觀的了解乙個系統的體系結構,有時侯,描述系統快照的物件圖 object diagram 也是很有用的。在這裡,我們主要介紹類圖,下面的圖就是乙個簡單的類圖 順序圖 uml中另外乙個常用的圖形就是互動檢視中的順序圖,在以往的過程化語言...

C 程式設計雜談之四 漫談UML

uml對很多人來說應該不是乙個陌生的概念,這一兩年來,uml被大家越來越多的討論著。本來uml跟我這個主題似乎並不能扯上多大的關係 它是語言無關的,甚至可以說其本身就是一種語言 用於交流的 我在此談到它有兩個目的 1 uml是針對物件導向軟體開發的,而c 正是這樣的一種語言 類圖 靜態檢視說明了物件...

網路程式設計雜談之TCP協議

tcp協議屬於網路分層中的傳輸層,傳輸層作用的就是建立埠與埠的通訊,而其下一層網路層的主要作用是建立 主機到主機 的通訊,所以在我們日常進行網路程式設計時只要確定主機和埠,就能實現程式之間的資料交流,在unix系統中就把主機 埠,叫做 套接字 socket 所以一般網路程式設計都是基於對於socke...