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