- UML基礎與Rose建模實用教程(第三版)
- 謝星星 周新國編著
- 3577字
- 2020-11-23 15:05:11
2.3.3 模型元素
可以在圖中使用的基本概念統稱為模型元素。模型元素使用相關的語義、關于元素的正式定義和確定的語句來準確定義。模型元素在圖中用相應的元素符號來表示。模型元素可以劃分為面向對象的事物的描述和對事物關系的描述。利用相關元素符號可以把模型元素形象直觀地表示出來。一個元素符號可以存在于多個不同類型的圖中,但是具體以怎樣的方式出現要依據圖的相關規則來確定。下面按照事物和關系來劃分這些模型元素并加以說明。
1.事物
事物是UML模型中面向對象的基本模塊,它們在模型中屬于靜態部分。事物作為對模型中最具有代表性的成分的抽象,在UML中,定義了四種基本的面向對象的事物,分別是結構事物、行為事物、分組事物和注釋事物。
(1)結構事物(Structural Thing)
結構事物是UML模型中的名詞部分,這些名詞往往構成模型的靜態部分,負責描述靜態概念和客觀元素。在UML規范中,一共定義了七種結構事物。這七種結構事物分別是類、接口、協作、用例、主動類、構件和節點。下面分別對這七種結構事物進行說明。
- 類(Class)。如前面所敘述的一樣,UML中的類完全對應于面向對象分析中的類,它具有自己的屬性和操作。因而在描述的模型元素中,也應當包含類的名稱、類的屬性和類的操作。它和面向對象的類擁有一組相同屬性、相同操作、相同關系和相同語義的抽象描述。一個類可以實現一個或多個接口。類的可視化描述通常如圖2-11所示。
- 接口(Interface)。接口由一組操作的定義組成,但是它不包括對操作的實現進行詳細的描述。接口用于描述一個類或構件的一個服務的操作集。它描述元素的外部可見的操作。一個接口可以描述一個類或構件的全部行為或部分行為。接口很少單獨存在,往往依賴于實現接口的類或構件。接口的圖形表示如圖2-12所示。

圖2-11 類的一般表示方法

圖2-12 接口的一般表示方法
- 協作(Collaboration)。協作用于對一個交互過程的定義,它是由一組共同工作以提供協作行為的角色和其他元素構成的一個整體。通常來說,這些協作行為大于所有元素行為的總合。一個類可以參與到多個協作中,在協作中表現了系統構成模式的實現。在Rational Rose中,沒有給協作提供單獨的符號,在標準的UML符號元素中,它的符號如圖2-13所示。
- 用例(Use case)。用例用于表示系統所提供的服務,它定義了系統是如何被參與者所使用的,它描述的是參與者為了使用系統所提供的某一完整功能而與系統之間發生的一段交互行為。用例是對一組動作序列的抽象描述。系統執行這些動作將產生一個對特定的參與者有價值而且可觀察的結果。用例可結構化系統中的行為事物,從而可視化地概括系統需求。用例的表示如圖2-14所示。

圖2-13 協作的可視化表示方法

圖2-14 用例的表示方法
- 主動類(Active class)。主動類的對象(也稱主動對象)有自動啟動控制的活動,因為主動對象本身至少擁有一個進程或線程,每個主動對象由它自己的事件驅動控制線程來控制與其他主動對象并行執行。被主動對象所調用的對象是被動對象。它們只在被調用時接受控制,而當它們返回時將控制摒棄。被動對象被動地等待其他對象向它發出請求,這些對象所描述的元素的行為與其他元素的行為并發執行。主動類的可視化表示和一般類的表示相似,特殊的地方在于其外框為粗線。在許多UML工具中,主動類的表示和一般類的表示并無區別。在后面有關協作圖的章節中,會對主動對象進行詳細的介紹。
- 構件(Component)。構件是定義良好接口的物理實現單元,它是系統中物理的、可替代的部件。它遵循且提供一組接口的實現,每個構件體現了系統設計中特定類的實現。良好定義的構件不直接依賴于其他構件而依賴于構件所支持的接口。在這種情況下,系統中的一個構件可以被支持正確接口的其他構件所替代。在每個系統中都有不同類型的部署構件,如JavaBean、DLL、Applet和可執行exe文件等。在Rational Rose中,使用如圖2-15所示的形式來表示構件。
- 節點(Node)。節點是系統在運行時切實存在的物理對象,表示某種可計算資源,這些資源往往具有一定的存儲能力和處理能力。一個構件集可以駐留在一個節點內,也可以從一個節點遷移到另一個節點。一個節點可以代表一臺物理機器,或代表一個虛擬機器的節點。在Rational Rose中,包含兩種節點,分別是設備節點和處理節點。這兩種節點的表示方式如圖2-16所示,它們在圖形表示上稍有不同。

圖2-15 構件的表示方法

圖2-16 兩種不同類型的節點表示方法
(2)行為事物(Behavioral Thing)
行為事物是指UML模型的相關動態行為,是UML模型的動態部分,它可以用來描述跨越時間和空間的行為。行為事物在模型中通常使用動詞來表示,例如“上課”“還書”等。可以把行為事物劃分為兩類,分別是交互和狀態機。
- 交互(Interaction)。交互是指在特定的語境(Context)中,一組對象為共同完成一定的任務,而進行的一系列消息交換而組成的動作,以及在消息交換的過程中形成的消息機制。因此,在交互中包括一組對象、連接對象間的消息,以及消息發出的動作形成的有序序列和對象間的普通連接。交互的可視化表示主要通過消息來表示。消息由帶有名字或內容的有向箭頭來表示,如圖2-17所示。
- 狀態機(State Machine)。狀態機是一個類的對象所有可能的生命歷程的模型,因此狀態機可用于描述一個對象或一個交互在其生命周期內所經歷的狀態序列。當對象探測到一個外部事件后,它依照當前的狀態做出反應,這種反應包括執行一個相關動作或轉換到一個新的狀態中去。單個類的狀態變化或多個類之間的協作過程都可以用狀態機來描述。利用狀態機可以精確地描述類對象的行為。狀態的可視化表示如圖2-18所示。

圖2-17 消息的表示方法

圖2-18 狀態的表示方法
(3)分組事物(Grouping Thing)
分組事物是UML對模型中的各種組成部分進行事物分組的一種機制??梢园逊纸M事物當成是一個“盒子”,那么不同的“盒子”就存放不同的模型,從而模型在其中被分解。目前只有一種分組事物,即包(Package)。UML通過包(Package)這種分組事物來實現對整個模型的組織,包括對組成一個完整模型的所有圖形建模元素的組織。
包是一種在概念上對UML模型中各個組成部分進行分組的機制,它只存在于系統的開發階段。在包中可以包含有結構事物、行為事物和分組事物。包的使用比較自由,可以根據自己的需要劃分系統中的各個部分,例如可以按外部Web服務的功能來劃分這些Web服務。包是用來組織UML模型的基本分組事物,它也有變體,如框架、模型和子系統等。包的表示方法如圖2-19所示。

圖2-19 包的表示方法
(4)注釋事物(Annotational Thing)
注釋事物是UML模型的解釋部分,用于進一步說明UML模型中的其他任何組成部分。我們可以用注釋事物來描述、說明和標注整個UML模型中的任何元素。有一種最主要的注釋事物,稱為注釋(Note,或稱為注解)。
注釋是依附于某個元素或一組建模元素之上,對這個或這一組建模元素進行約束或解釋的簡單注釋符號。注釋的一般形式是簡單的文本說明。注釋可以幫助我們更加詳細地解釋要說明的模型元素所代表的內容。注釋的符號表示如圖2-20所示。在方框內,填寫需要注釋的內容。

圖2-20 注釋的符號表示方法
2.關系
在前文提到,UML模型是由各種事物以及這些事物之間的各種關系構成的。關系是指支配、協調各種模型元素存在并相互作用的規則。UML中主要包含四種關系,分別是依賴、關聯、泛化和實現。
(1)依賴(Dependency)關系
依賴關系指的是兩個事物之間的一種語義關系,當其中一個事物(獨立事物)發生變化就會影響另外一個事物(依賴事物)的語義。如圖2-21所示,反映了事物NewClass依賴于事物NewClass2。

圖2-21 依賴關系示例
(2)關聯(Association)關系
關聯關系是一種事物之間的結構關系,用它來描述一組鏈,鏈是對象之間的連接。關聯關系在系統開發中經常會被用到,系統元素之間的關系如果不能明顯地由其他三類關系來表示,都可以被抽象成為關聯關系。關聯關系可以是聚合(Aggregation)或組合(Composition),也可以是沒有方向的普通關聯關系。聚合是一種特殊類型的關聯,它描述了整體和部分間的結構關系。組合也是一種關聯關系,描述了整體和部分間的結構關系,表示部分是不能夠離開整體而獨立存在。如圖2-22所示,反映了職員和經理之間的關聯關系。職員是雇員,經理是雇主,這是對這種關聯關系角色的定義。

圖2-22 關聯關系示例
(3)泛化(Generalization)關系
泛化關系是事物之間的一種特殊/一般關系,特殊元素(子元素)的對象可替代一般元素(父元素)的對象,也就是在面向對象的方法論中常常提起的繼承。通過繼承,子元素具有父元素的全部結構和行為,并允許在此基礎上再擁有自身特定的結構和行為。在系統開發過程中,泛化關系的使用并沒有什么特殊的地方,只要注意能清楚明了地刻畫出系統相關元素之間所存在的繼承關系即可。如圖2-23所示,反映了貨車和運輸工具之間的泛化關系。

圖2-23 泛化關系示例
(4)實現(Realization)關系
實現關系也是UML元素之間的一種語義關系,它描述了一組操作的規約和一組對操作的具體實現之間的語義關系。在系統的開發中,通常在兩個地方需要使用實現關系,一種是用在接口和實現接口的類或構件之間;另一種是用在用例和實現用例的協作之間。當類或構件實現接口時,表示該類或構件履行了在接口中規定的操作。如圖2-24所示,描述的是類對接口的實現。

圖2-24 實現關系示例
- Qt 5 and OpenCV 4 Computer Vision Projects
- aelf區塊鏈應用架構指南
- Hands-On C++ Game Animation Programming
- PLC編程及應用實戰
- 重學Java設計模式
- Learning JavaScript Data Structures and Algorithms
- Java SE實踐教程
- JavaScript動態網頁編程
- Qlik Sense? Cookbook
- Building Dynamics CRM 2015 Dashboards with Power BI
- Applied Deep Learning with Python
- SQL Server實例教程(2008版)
- Blender 3D Cookbook
- Game Programming using Qt 5 Beginner's Guide
- 威脅建模:設計和交付更安全的軟件