類圖
靜態檢視說明了物件的結構,其中最常用的就是類圖,類圖可以幫助我們更直觀的了解乙個系統的體系結構,有時侯,描述系統快照的物件圖(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...