本實驗是為后續實驗做準備的。在本書中,各個程序實例都要畫類圖,所以讀者必須掌握用某種UML建模工具來畫類圖,本書選擇 UMLet 作為 UML 的建模工具。
本實驗的主要目的如下。
? 理解類的基本概念,掌握如何從需求分析中抽象出類的方法。
? 理解類之間關系,掌握如何分析具體實例中的類之間的關系。
? 掌握在 UMLet 中繪制類圖的基本操作方法。
UMLet 是一款免費且開源的 UML 建模工具,它可以將原型導出為 bmp、eps、gif、jpg、pdf、png、svg 等格式,還可以集成到 Eclipse 中,作為 Eclipse 的插件在 Windows、Mac OS 和 Linux 等平臺上運行。它可在 UMLet 官網下載安裝。
用 UMLet 建模非常簡單,方法如下:首先打開 UMLet,然后在窗體右上側區域內雙擊想要添加的對象,該對象將被自動添加到面板中;再選中剛剛添加進來的對象,并在右下角的屬性面板中修改該對象的屬性;最后保存創建完成的 UML 模型圖。如果需要還可將結果導出為其他格式的文件,如圖 1 所示。
圖1 UMLet 14.2的運行界面
如果要在 Eclipse 中安裝 UMLet 插件,其方法如下。
① 下載相關版本的 UMLet 插件的壓縮包,然后將解壓的文件 com.umlet.plugin-14.2.jar 復制到 Eclipse 下的 plugins 目錄下。
② 重啟 Eclipse,選擇“文件(F)” — 新建(N) ” — “其他(0)…” —“UMlet Diagram”,建立 UML 模型,如圖 2 所示。
圖2 在Eclipse中安裝UMLet插件
UMLet 在 Eclipse 中的使用方法同前面介紹的一樣。
UML 中定義了用例圖、類圖、對象圖、狀態圖、活動圖、時序圖、協作圖、構件圖、部署圖等 9 種圖形,在“軟件設計模式”中經常用到的是類圖,所以本實驗主要介紹類圖的畫法,以及類與類之間的關系。
類是面向對象系統組織結構的核心,它是對一組具有相同屬性、操作、關系和語義的對象的抽象。在 UML 中,類使用帶有分隔線的矩形來表示,它包括名稱部分(Name)、屬性部分(Attribute)和操作部分(Operation)。
其中,屬性的表示形式是:[可見性]屬性名:類型[=默認值]
操作的表示形式是:[可見性]名稱(參數列表)[:返回類型]
注意:“可見性”包括公有(public)、私有(private)、受保護(protected)和朋友(fiiendly)等 4 種,在類圖中分別用符號+、-、#、~來表示。
圖 3 所示是類的 UML 圖形表示方式。
圖3 類的UML畫法
在軟件系統中,類不是孤立存在的,類與類之間存在各種關系。根據類與類之間的耦合度從弱到強排列,有依賴關系、關聯關系、聚合關系、組合關系、泛化關系和實現關系等 6 種,它們的功能在UML中的類圖及類圖之間的關系一文中已經介紹,下面介紹它們在 UML 中的表示方式。
? 依賴關系(Dependency),使用帶箭頭的虛線來表示,箭頭從使用類指向被依賴的類。
? 關聯關系(Association),分為雙向關聯和單向關聯兩種。其中,雙向關聯可以用帶兩個箭頭或者沒有箭頭的實線來表示,單向關聯用帶一個箭頭的實線來表示,箭頭從使用類指向被關聯的類。還可以在關聯線的兩端標注角色名,補充說明它們的角色。
? 聚合關系(Aggregation),用帶空心菱形的實線來表示,菱形指向整體。
? 組合關系(Composition),用帶實心菱形的實線來表示,菱形指向整體。
? 泛化關系(Generalization),用帶空心三角箭頭的實線來表示,箭頭從子類指向父類。
? 實現關系(Realization),用帶空心三角箭頭的虛線來表示,箭頭從實現類指向接口。
圖 4 所示是類之間的關系在 UML 中的圖形表示方式。
圖4 UML中的類的關系圖
實驗內容
? 通過對“類之間的關系”的學習,在生活中找到相關實例。
? 用 UMLet 對以上實例中的類的關系建模。
所設計的實驗必須滿足以下兩點。
⒈類圖中至少有一個類包含相關屬性和方法,目的是掌握屬性和方法的畫法。
⒉所舉的若干實例要包含前面介紹的 UML 類與類之間的 6 種關系,并正確畫出其相互關系圖。
⒈進行需求分析,從生活中提取出相關實例。
⒉分析以上實例,找到相關類并確定它們之間的關系,然后利用 UMLet 畫出類以及類之間的關系圖,圖 5 以對理學家朱熹的介紹為例介紹類圖的畫法。
圖5 UML中的類之間關系實例圖
⒊整理實驗結果,寫出實驗的心得體會。