著作權聲明:轉載時請以超連結形式標明文章原始出處和作者資訊及本聲明
http://jeffrey.blogbus.com/logs/66331.html
第九章 進階類
從第四章到第八章講述的是對基本結構建模的內容,從這一章開始進入了第三部分,對進階結構建模。
類是物件導向系統中最重要的構造塊,但在UML中更一般的構造塊是類元,類僅僅是一種類元。類元包括有:類、介面、資料類型、訊號、構件、節點、用
況和子系統。在第四章講述類的時候只講述了基本特徵(屬性、操作等等),實際描述類元還有很多進階特性(多重性、可見度、特徵標記、多態性和其他特徵)。
①類元(classifier)
一般而言類元是有執行個體、具有結構特徵和行為特徵的建模元素。除了類以外,UML還包含有以下的類元:
⑴介面(interface)
介面用文字描述是類或構件的一個服務的操作集,它和物件導向中的介面是一個概念。
⑵資料類型(datatype)
指其值沒有任何標識的類型,包括簡單的內建類型(如數值和串)以及枚舉類型(如布爾)。
⑶訊號(signal)
對執行個體之間的通訊的非同步激發的描述(不懂)。
⑷構件(component)
它遵循一組介面,並提供了該組介面的實現。
⑸節點(node)
一般用於描述運行時存在的物理元素,如硬體等。
⑹用況(use case)
一組動作序列的描述,系統對它的執行將為特定的參與者產生可觀察的結果值。
⑺子系統(subsystem)
如名字般解釋。
②可見度
對類元的屬性和操作進行詳述的最重要的細節之一就是它的可見度。在第二章說明修飾的時候曾提
到,這裡的可見度是修飾的一種。UML中將可見度分為公有的(public)、受保護的(protected)、私人的(private)三種。這對程式
員而言很容易理解,大多數語言中都有這樣的機制。
③範圍
對類元的屬性和操作進行詳述的另一個重要細節是其擁有者的範圍。在UML中,可以說明兩種範圍:
⑴執行個體(instance)
對一個特徵,類元的每個執行個體均有它自己的值。
⑵類元(classifier)
類元的所有執行個體只有該特徵的一個值。
從程式的角度來描述就是該屬性或方法是否為靜態。
④抽象、根、葉和多態性元素
實際講的是關於抽象類別,以及它的子類對其抽象方法實現的描述。
⑤多重性
並非每一個類元都可以有任意個執行個體,有的時候我們希望一個類只有一個執行個體,這在程式中也很多見,多重性用來描述類元可以擁有執行個體的個數。
⑥屬性
屬性的完整文法形式如下:
[可見度]屬性名稱[多重性][:類型][=初始值][{特性串}]
UML中定義了3種用於屬性的特性:
⑴可變(changeable)
對修改屬性值沒有約束
⑵只增(addonly)
對於多重性大於1的屬性,可以增加附加值,但一旦被建立,九不可對值進行消除或改變。
⑶凍結(frozen)
在初始化對象後,就不允許改變屬性值。在程式中表現為常量。
⑦操作
操作的完整文法形式如下:
[可見度]操作名[(參數表)][:傳回型別][{特性串}]
其中參數的文法形式如下:
[方向]參數名:類型[=預設值](有關"方向"不理解,可能和程式設計語言有關)
有四種用於描述操作的特性:
⑴查詢(isQuery)
執行該操作不會改變系統的狀態。
⑵順序(sequential)
執行該操作要保證在一個對象中一次僅有一個流,在多控制流程下,不能保證對象的語義和完整性。
⑶監護(guarded)
在多控制流程下也保證對象的語義和完整性。
⑷並發(concurrent)
不懂,總之它和上面兩個特性來描述操作的並發特性。
⑧模板類
與JAVA無關,難懂。
⑨標準元素
UML定義了多種用於類的標準構造型:元類、強型別、構造型、公用程式、介面、類型、實作類別、參與者、例外狀況事件、訊號、進程、線程等。實際這應該是屬於UML已經存在的對類使用擴充機制形成的新構造塊。