本實驗是為后續(xù)實驗做準備的。在本書中,各個程序?qū)嵗家嬵悎D,所以讀者必須掌握用某種UML建模工具來畫類圖,本書選擇 UMLet 作為 UML 的建模工具。
本實驗的主要目的如下。
? 理解類的基本概念,掌握如何從需求分析中抽象出類的方法。
? 理解類之間關(guān)系,掌握如何分析具體實例中的類之間的關(guān)系。
? 掌握在 UMLet 中繪制類圖的基本操作方法。
UMLet 是一款免費且開源的 UML 建模工具,它可以將原型導出為 bmp、eps、gif、jpg、pdf、png、svg 等格式,還可以集成到 Eclipse 中,作為 Eclipse 的插件在 Windows、Mac OS 和 Linux 等平臺上運行。它可在 UMLet 官網(wǎng)下載安裝。
用 UMLet 建模非常簡單,方法如下:首先打開 UMLet,然后在窗體右上側(cè)區(qū)域內(nèi)雙擊想要添加的對象,該對象將被自動添加到面板中;再選中剛剛添加進來的對象,并在右下角的屬性面板中修改該對象的屬性;最后保存創(chuàng)建完成的 UML 模型圖。如果需要還可將結(jié)果導出為其他格式的文件,如圖 1 所示。

圖1 UMLet 14.2的運行界面
如果要在 Eclipse 中安裝 UMLet 插件,其方法如下。
① 下載相關(guān)版本的 UMLet 插件的壓縮包,然后將解壓的文件 com.umlet.plugin-14.2.jar 復制到 Eclipse 下的 plugins 目錄下。
② 重啟 Eclipse,選擇“文件(F)” — 新建(N) ” — “其他(0)…” —“UMlet Diagram”,建立 UML 模型,如圖 2 所示。

圖2 在Eclipse中安裝UMLet插件
UMLet 在 Eclipse 中的使用方法同前面介紹的一樣。
UML 中定義了用例圖、類圖、對象圖、狀態(tài)圖、活動圖、時序圖、協(xié)作圖、構(gòu)件圖、部署圖等 9 種圖形,在“軟件設計模式”中經(jīng)常用到的是類圖,所以本實驗主要介紹類圖的畫法,以及類與類之間的關(guān)系。
類是面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心,它是對一組具有相同屬性、操作、關(guān)系和語義的對象的抽象。在 UML 中,類使用帶有分隔線的矩形來表示,它包括名稱部分(Name)、屬性部分(Attribute)和操作部分(Operation)。
其中,屬性的表示形式是:[可見性]屬性名:類型[=默認值]
操作的表示形式是:[可見性]名稱(參數(shù)列表)[:返回類型]
注意:“可見性”包括公有(public)、私有(private)、受保護(protected)和朋友(fiiendly)等 4 種,在類圖中分別用符號+、-、#、~來表示。
圖 3 所示是類的 UML 圖形表示方式。

圖3 類的UML畫法
在軟件系統(tǒng)中,類不是孤立存在的,類與類之間存在各種關(guān)系。根據(jù)類與類之間的耦合度從弱到強排列,有依賴關(guān)系、關(guān)聯(lián)關(guān)系、聚合關(guān)系、組合關(guān)系、泛化關(guān)系和實現(xiàn)關(guān)系等 6 種,它們的功能在UML中的類圖及類圖之間的關(guān)系一文中已經(jīng)介紹,下面介紹它們在 UML 中的表示方式。
? 依賴關(guān)系(Dependency),使用帶箭頭的虛線來表示,箭頭從使用類指向被依賴的類。
? 關(guān)聯(lián)關(guān)系(Association),分為雙向關(guān)聯(lián)和單向關(guān)聯(lián)兩種。其中,雙向關(guān)聯(lián)可以用帶兩個箭頭或者沒有箭頭的實線來表示,單向關(guān)聯(lián)用帶一個箭頭的實線來表示,箭頭從使用類指向被關(guān)聯(lián)的類。還可以在關(guān)聯(lián)線的兩端標注角色名,補充說明它們的角色。
? 聚合關(guān)系(Aggregation),用帶空心菱形的實線來表示,菱形指向整體。
? 組合關(guān)系(Composition),用帶實心菱形的實線來表示,菱形指向整體。
? 泛化關(guān)系(Generalization),用帶空心三角箭頭的實線來表示,箭頭從子類指向父類。
? 實現(xiàn)關(guān)系(Realization),用帶空心三角箭頭的虛線來表示,箭頭從實現(xiàn)類指向接口。
圖 4 所示是類之間的關(guān)系在 UML 中的圖形表示方式。

圖4 UML中的類的關(guān)系圖
實驗內(nèi)容
? 通過對“類之間的關(guān)系”的學習,在生活中找到相關(guān)實例。
? 用 UMLet 對以上實例中的類的關(guān)系建模。
所設計的實驗必須滿足以下兩點。
⒈類圖中至少有一個類包含相關(guān)屬性和方法,目的是掌握屬性和方法的畫法。
⒉所舉的若干實例要包含前面介紹的 UML 類與類之間的 6 種關(guān)系,并正確畫出其相互關(guān)系圖。
⒈進行需求分析,從生活中提取出相關(guān)實例。
⒉分析以上實例,找到相關(guān)類并確定它們之間的關(guān)系,然后利用 UMLet 畫出類以及類之間的關(guān)系圖,圖 5 以對理學家朱熹的介紹為例介紹類圖的畫法。

圖5 UML中的類之間關(guān)系實例圖
⒊整理實驗結(jié)果,寫出實驗的心得體會。