UML面向?qū)ο笤O(shè)計(jì)與分析教程(第二版)(微課版)第4章-靜態(tài)分析與類(lèi)圖_第1頁(yè)
UML面向?qū)ο笤O(shè)計(jì)與分析教程(第二版)(微課版)第4章-靜態(tài)分析與類(lèi)圖_第2頁(yè)
UML面向?qū)ο笤O(shè)計(jì)與分析教程(第二版)(微課版)第4章-靜態(tài)分析與類(lèi)圖_第3頁(yè)
UML面向?qū)ο笤O(shè)計(jì)與分析教程(第二版)(微課版)第4章-靜態(tài)分析與類(lèi)圖_第4頁(yè)
UML面向?qū)ο笤O(shè)計(jì)與分析教程(第二版)(微課版)第4章-靜態(tài)分析與類(lèi)圖_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

UML面向?qū)ο笤O(shè)計(jì)與分析教程(第二版)(微課版)第4章靜態(tài)分析與類(lèi)圖本章的學(xué)習(xí)目標(biāo):理解靜態(tài)分析的含義理解類(lèi)圖的必要性和重要性掌握類(lèi)圖的基本概念和組成要素掌握識(shí)別類(lèi)的要點(diǎn)和方法掌握類(lèi)之間的各種關(guān)系理解抽象和多態(tài)的關(guān)系理解領(lǐng)域分析的要點(diǎn)掌握如何使用RationalRose建立類(lèi)圖模型

下一步?需求用例OOA…系統(tǒng)面向?qū)ο蠓治鰹槭裁匆M(jìn)行分析例:“游戲者擊中白球,它以一定的速度前進(jìn),并以特定的角度碰到紅球,于是紅球在某個(gè)特定的方向上前進(jìn)一段距離”除了這些表面現(xiàn)象,還必須了解背后的本質(zhì),那就是和質(zhì)量有關(guān)的運(yùn)動(dòng)定律,速度,動(dòng)量,等等。了解這些規(guī)律將更容易看到軟件可以怎樣建立我們建造應(yīng)用系統(tǒng)的時(shí)候,需要大量的了解和研究,才能接觸到問(wèn)題的本質(zhì)為什么要進(jìn)行分析用例描述的是參與者和系統(tǒng)邊界之間的交互操作——系統(tǒng)本身是一個(gè)黑盒子,帶有外部才能看到的接口;為了使得系統(tǒng)更容易開(kāi)發(fā)和理解,用例細(xì)節(jié)是用自然語(yǔ)言編寫(xiě)的——用例是不嚴(yán)密的;需求階段所得到的模型并不能全面描述系統(tǒng),開(kāi)發(fā)人員僅通過(guò)這些模型也無(wú)法全面理解問(wèn)題。分析是需求和設(shè)計(jì)之間的橋梁,可以把系統(tǒng)必須提供的服務(wù)(模型)轉(zhuǎn)換為對(duì)要處理的對(duì)象的正確的理解(模型)。分析模型分為兩類(lèi):靜態(tài)分析和動(dòng)態(tài)分析面向?qū)ο蠓治龇治鲞^(guò)程概述從需求到分析AnalysisworkflowAnalysisClassOOA目標(biāo)建立分析模型,以描述計(jì)算機(jī)軟件,從而滿足客戶定義的需求:包括兩種圖,描述對(duì)象及其交互類(lèi)圖(classdiagram):描述了構(gòu)成一類(lèi)對(duì)象特征的狀態(tài)和行為(描述軟件架構(gòu))交互圖(interactiondiagram):描述對(duì)象之間的交互行為(演示用例實(shí)現(xiàn))(描述系統(tǒng)行為)分析過(guò)程概述在類(lèi)的抽象層次建模理由:(1)充分性:模型中一個(gè)類(lèi)描述了它的全部對(duì)象實(shí)例(2)必要性:個(gè)別對(duì)象實(shí)例不能代表其他對(duì)象實(shí)例(3)符合人類(lèi)的思維方式:在概念層次上表達(dá)描述事物規(guī)律(4)與OOPL保持良好的對(duì)應(yīng)(5)避免建模概念復(fù)雜化(6)消除抽象層次的混亂

類(lèi)圖(Classdiagram)顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu),而系統(tǒng)的靜態(tài)結(jié)構(gòu)構(gòu)成了系統(tǒng)的概念基礎(chǔ)。類(lèi)圖,就是用于對(duì)系統(tǒng)中的各種概念進(jìn)行建模,并描繪出它們之間關(guān)系的圖。1、類(lèi)圖的含義類(lèi)圖基本概念在類(lèi)圖中,共包含了以下幾種模型元素,分別是:類(lèi)、接口、依賴關(guān)系、泛化關(guān)系、關(guān)聯(lián)關(guān)系以及實(shí)現(xiàn)關(guān)系。類(lèi)圖可以創(chuàng)建約束、注釋和包等。1、類(lèi)圖的含義類(lèi)圖與對(duì)象圖的基本概念類(lèi)圖的作用是對(duì)系統(tǒng)的靜態(tài)視圖進(jìn)行建模。類(lèi)圖的目的在于描述系統(tǒng)的構(gòu)成方式,而不是系統(tǒng)如何協(xié)作運(yùn)行的。3、類(lèi)圖在項(xiàng)目開(kāi)發(fā)中的作用類(lèi)圖與對(duì)象圖的基本概念類(lèi)面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。對(duì)一組具有相同屬性、操作、關(guān)系和語(yǔ)義的對(duì)象的抽象。包括名稱(chēng)(Name)、屬性(Attribute)和操作(Operation)。類(lèi)的名稱(chēng)(Name)類(lèi)的名稱(chēng)是每個(gè)類(lèi)的圖形中所必須擁有的元素,用于同其他類(lèi)進(jìn)行區(qū)分是一個(gè)字符串,并且是名詞按照UML約定,類(lèi)名稱(chēng)首字母大寫(xiě),如果類(lèi)名稱(chēng)由兩個(gè)單詞組成,第二個(gè)單詞首字母也大寫(xiě),而且兩個(gè)詞要合并分為簡(jiǎn)單名稱(chēng)和路徑名稱(chēng)(用類(lèi)所在的包的名稱(chēng)做前綴)類(lèi)的屬性(Attribute)描述了類(lèi)在軟件系統(tǒng)中代表的事物(即對(duì)象)所具備的特性,這些特性是所有對(duì)象所共有的。類(lèi)可以有任意數(shù)目的屬性,也可以沒(méi)有屬性。在UML中,類(lèi)屬性的語(yǔ)法為:類(lèi)的屬性

1.可見(jiàn)性2.屬性名稱(chēng)3.屬性類(lèi)型4.初始值5.屬性字符串(1)可見(jiàn)性屬性的可見(jiàn)性描述了該屬性是否對(duì)于其他類(lèi)能夠可見(jiàn),從而是否可以被其他類(lèi)進(jìn)行引用。公有(Public):允許在類(lèi)的外部使用或查看該屬性私有(Private):只有類(lèi)本身才能訪問(wèn),外部一概訪問(wèn)不到受保護(hù)(Protected):經(jīng)常和繼承關(guān)系一起使用,允許子類(lèi)訪問(wèn)父類(lèi)中受保護(hù)類(lèi)型的屬性(1)可見(jiàn)性可見(jiàn)性Rose圖注UML圖注Public+Protected#Private-屬性是類(lèi)的一部分,每個(gè)屬性都必須有一個(gè)名字以區(qū)別于類(lèi)中的其他屬性。通常情況下,屬性名由描述其所屬類(lèi)的特性的名詞或名詞短語(yǔ)構(gòu)成。按照UML的約定,屬性的名稱(chēng)的第一個(gè)字母小寫(xiě),如果屬性名包含了多個(gè)單詞,這些單詞要合并,并且除了第一個(gè)英文單詞外,其余單詞的首字母要大寫(xiě)。(2)屬性名稱(chēng)

簡(jiǎn)單類(lèi)型:整型布爾型實(shí)型枚舉類(lèi)型系統(tǒng)中的其他類(lèi)

屬性也具有類(lèi)型,用來(lái)指出該屬性的數(shù)據(jù)類(lèi)型。(3)屬性類(lèi)型在程序語(yǔ)言設(shè)計(jì)中,設(shè)定初始值通常有以下兩個(gè)用處:保護(hù)系統(tǒng)的完整性,防止漏掉取值或被非法的值破壞系統(tǒng)的完整性。為用戶提供易用性:設(shè)定初值能夠有效幫助用戶進(jìn)行輸入。(4)初始值屬性字符串是用來(lái)指定關(guān)于屬性的一些附加信息。任何希望添加在屬性定義字符串值但又沒(méi)有合適地方可以加入的規(guī)則,都可以放在屬性字符串里。(5)屬性字符串類(lèi)的操作(Operation)操作是指類(lèi)所能執(zhí)行的動(dòng)作,也是類(lèi)的一個(gè)重要組成部分,描述了在軟件系統(tǒng)中所代表的對(duì)象具備的動(dòng)態(tài)部分的公共特征抽象。一個(gè)類(lèi)可以有任意數(shù)量的操作或者根本沒(méi)有操作,并且每個(gè)操作只能應(yīng)用于該類(lèi)的對(duì)象。屬性是描述類(lèi)的對(duì)象特性的值,而操作用于操縱屬性的值進(jìn)行改變或執(zhí)行其他動(dòng)作。操作有時(shí)稱(chēng)作函數(shù)或者方法。在UML中,類(lèi)操作的語(yǔ)法為:類(lèi)的操作1.可見(jiàn)性2.操作名稱(chēng)3.參數(shù)表4.返回類(lèi)型5.屬性字符串操作的可見(jiàn)性描述了該屬性是否對(duì)于其他類(lèi)能夠可見(jiàn),從而是否可以被其他類(lèi)進(jìn)行掉用。公有(Public):允許在類(lèi)的外部使用或查看該操作私有(Private):該操作只能在類(lèi)中使用,外部類(lèi)訪問(wèn)不到受保護(hù)(Protected):子類(lèi)允許使用父類(lèi)中受保護(hù)類(lèi)型的操作(1)可見(jiàn)性+public#protected-privateRoseUML可見(jiàn)性操作作為類(lèi)的一部分,每個(gè)操作都必須有一個(gè)名稱(chēng)以區(qū)別于類(lèi)中的其他操作。用來(lái)描述所屬類(lèi)的行為的動(dòng)詞或動(dòng)詞短語(yǔ)。單字操作名小寫(xiě),如果操作名包含了多個(gè)單詞,這些單詞要合并,并且除了第一個(gè)單詞外其余單詞的首字母要大寫(xiě)。(2)操作名稱(chēng)參數(shù)表就是由類(lèi)型、標(biāo)識(shí)符對(duì)組成的序列,實(shí)際上是操作或方法被調(diào)用時(shí)接收傳遞過(guò)來(lái)的參數(shù)值的變量。定義方式:“名稱(chēng):類(lèi)型”。若存在多個(gè)參數(shù),將各個(gè)參數(shù)用逗號(hào)隔開(kāi)。若操作沒(méi)有參數(shù),則參數(shù)表為空。(3)參數(shù)表返回類(lèi)型指定了由操作返回的數(shù)據(jù)類(lèi)型。絕大部分編程語(yǔ)言只支持一個(gè)返回值,即返回類(lèi)型至多一個(gè)。具體的編程語(yǔ)言中,一般要加一個(gè)關(guān)鍵字void來(lái)表示無(wú)返回值。(4)返回類(lèi)型屬性字符串用來(lái)附加一些關(guān)于操作的除了預(yù)定義元素之外的信息,從而方便對(duì)操作的一些內(nèi)容進(jìn)行說(shuō)明。(5)屬性字符串接口接口是在沒(méi)有給出對(duì)象的實(shí)現(xiàn)和狀態(tài)的情況下對(duì)對(duì)象行為的描述。接口是一種特殊的類(lèi),所有接口都是有構(gòu)造型<<interface>>的類(lèi)。在UML中,接口使用一個(gè)帶有名稱(chēng)的小圓圈來(lái)進(jìn)行表示,并且可以通過(guò)一條Realize(實(shí)現(xiàn)關(guān)系)線與實(shí)現(xiàn)它的類(lèi)相連接。類(lèi)之間的關(guān)系1依賴關(guān)系(Dependency)2泛化關(guān)系(Generalization)3關(guān)聯(lián)關(guān)系(Association)4實(shí)現(xiàn)關(guān)系(Realization)依賴關(guān)系依賴表示一個(gè)模型元素(客戶方)需要另一個(gè)模型元素(供應(yīng)方)來(lái)達(dá)到某種目的,供應(yīng)方的修改會(huì)影響客戶方的執(zhí)行結(jié)果。依賴關(guān)系暗示著一個(gè)客戶方如果沒(méi)有供應(yīng)方的支持是不完整的。例如,當(dāng)給一個(gè)雇員計(jì)算工資的時(shí)候,需要使用計(jì)算器。UML中,依賴關(guān)系用一個(gè)從使用者指向提供者的虛箭頭表示:泛化關(guān)系泛化(繼承)關(guān)系用來(lái)描述類(lèi)的一般和具體之間的關(guān)系——isakindof。UML中,用一條帶有空心大箭頭的有向?qū)嵕€表示,箭頭指向父類(lèi)關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是一種結(jié)構(gòu)關(guān)系,指出了一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象之間的連接。導(dǎo)航性:若A指向B(導(dǎo)航性)則B為A的成員變量。關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系有兩種非常重要的形式,分別是聚合(Aggregation)關(guān)系和組合(Composition)關(guān)系。聚合關(guān)系示例組合關(guān)系示例關(guān)聯(lián)關(guān)系1名稱(chēng)2角色3多重性(1)名稱(chēng)使用一個(gè)動(dòng)詞或動(dòng)詞短語(yǔ)來(lái)命名關(guān)聯(lián)。清晰而簡(jiǎn)潔地說(shuō)明對(duì)象間關(guān)系。關(guān)聯(lián)的名稱(chēng)并不是必需的??梢郧熬Y或后綴一個(gè)指引閱讀方向的方向指示符,以消除歧義。(2)角色關(guān)聯(lián)關(guān)系中一個(gè)類(lèi)對(duì)另一個(gè)類(lèi)所表現(xiàn)出來(lái)的職責(zé)。角色的名稱(chēng)應(yīng)該是名詞或名詞短語(yǔ),以解釋對(duì)象是如何參與關(guān)系的。(3)多重性指有多少對(duì)象可以參與該關(guān)聯(lián)??梢员磉_(dá)一個(gè)取值范圍、特定值、無(wú)限定的范圍或一組離散值。格式:“minimum..maximum”(均為Int型)。賦給一個(gè)端點(diǎn)的多重性表示該端點(diǎn)可以有多少個(gè)對(duì)象與另一個(gè)端點(diǎn)的一個(gè)對(duì)象關(guān)聯(lián)。實(shí)現(xiàn)關(guān)系大多數(shù)情況下,實(shí)現(xiàn)關(guān)系用來(lái)規(guī)定接口和實(shí)現(xiàn)接口的類(lèi)或者組件之間的關(guān)系。在UML中,實(shí)現(xiàn)關(guān)系的表示形式和泛化關(guān)系的表示符號(hào)很相似,使用一條帶封閉空箭頭的虛線來(lái)表示。實(shí)現(xiàn)關(guān)系還有一種省略的表示法:將接口表示為一個(gè)小圓圈并和實(shí)現(xiàn)它的類(lèi)之間用一條線相連繪制類(lèi)圖研究分析問(wèn)題領(lǐng)域,確定系統(tǒng)需求.確定類(lèi),明確類(lèi)的含義和職責(zé),確定屬性和操作.確定類(lèi)之間的關(guān)系.調(diào)整和細(xì)化類(lèi)及類(lèi)之間的關(guān)系.繪制類(lèi)圖并增加相應(yīng)的說(shuō)明.建立類(lèi)圖的步驟使用Rose創(chuàng)建類(lèi)圖1.創(chuàng)建和刪除類(lèi)圖01右鍵單擊瀏覽器中的UseCaseView(用例視圖)、LogicalView(邏輯視圖)或者位于這兩種視圖下的包。02在彈出的快捷菜單中選擇New|ClassDiagram命令。03輸入新的類(lèi)圖名稱(chēng)。04雙擊打開(kāi)瀏覽器中的類(lèi)圖。2.添加和刪除類(lèi)01在圖形編輯工具欄中單擊按鈕,此時(shí)光標(biāo)變?yōu)椤?”號(hào)。02在類(lèi)圖中單擊任意一個(gè)位置,系統(tǒng)將在該位置創(chuàng)建一個(gè)新類(lèi),系統(tǒng)產(chǎn)生的默認(rèn)名稱(chēng)為NewClass。03在類(lèi)的名稱(chēng)欄中顯示了當(dāng)前所有類(lèi)的名稱(chēng),可以選擇清單中的現(xiàn)有類(lèi),這樣便把在模型中存在的該類(lèi)添加到類(lèi)圖中。如果創(chuàng)建新類(lèi),將NewClass重新命名為新的名稱(chēng)即可,創(chuàng)建的新類(lèi)會(huì)自動(dòng)添加到瀏覽器的視圖中。3.設(shè)置類(lèi)的構(gòu)造型使用類(lèi)的構(gòu)造型可以方便地對(duì)類(lèi)進(jìn)行分類(lèi)。在RationalRose2003中包含一些內(nèi)置構(gòu)造型,如Actor、Boundary、BusinessActor、BusinessDocument、BusinessEntity、BusinessEvent、BusinessGoal、BusinessWorker、Control、Domain、Entity、Interface、Location、PhysicalWorker、Resource、Service、Table、View等,其中Boundary、Control和Entity是比較常用的構(gòu)造型。4.設(shè)置類(lèi)的類(lèi)型設(shè)置類(lèi)的類(lèi)型可以通過(guò)以下步驟進(jìn)行:01選中需要設(shè)置構(gòu)造型的類(lèi),單擊右鍵,在彈出的快捷菜單中選擇OpenSpecification命令,彈出類(lèi)的規(guī)范對(duì)話框。02在類(lèi)的規(guī)范對(duì)話框中打開(kāi)General選項(xiàng)卡,在Type下拉列表中選擇類(lèi)的相關(guān)類(lèi)型。03單擊OK按鈕即可。5.創(chuàng)建類(lèi)與類(lèi)之間的關(guān)系

類(lèi)與類(lèi)之間的關(guān)系通常有4種:依賴關(guān)系、泛化關(guān)系、關(guān)聯(lián)關(guān)系和實(shí)現(xiàn)關(guān)系。如何創(chuàng)建這些關(guān)系?依賴關(guān)系要?jiǎng)?chuàng)建新的依賴關(guān)系,可以通過(guò)以下步驟進(jìn)行:01單擊工具欄中的圖標(biāo),或者選擇Tools|Create|DependencyorInstantiates命令,此時(shí)的光標(biāo)變?yōu)椤啊狈?hào)。02單擊具有依賴關(guān)系的一個(gè)類(lèi)。03將依賴關(guān)系線拖動(dòng)到另一個(gè)類(lèi)中。04雙擊依賴關(guān)系線,彈出設(shè)置依賴關(guān)系規(guī)范的對(duì)話框。05在彈出的對(duì)話框中設(shè)置依賴關(guān)系的名稱(chēng)、構(gòu)造型、可訪問(wèn)性、多重性以及文檔等。泛化關(guān)系要?jiǎng)?chuàng)建新的泛化關(guān)系,可以通過(guò)以下步驟進(jìn)行:01單擊類(lèi)圖工具欄中的圖標(biāo),或者選擇Tools|Create|Generalization命令,此時(shí)的光標(biāo)變?yōu)椤啊狈?hào)。02單擊子類(lèi)。03將泛化關(guān)系線拖動(dòng)到父類(lèi)中。04雙擊泛化關(guān)系線,彈出設(shè)置泛化關(guān)系規(guī)范的對(duì)話框。05在彈出的對(duì)話框中可以設(shè)置泛化關(guān)系的名稱(chēng)、構(gòu)造型、可訪問(wèn)性、文檔等。關(guān)聯(lián)關(guān)系要?jiǎng)?chuàng)建新的關(guān)聯(lián)關(guān)系,可以通過(guò)以下步驟進(jìn)行:01單擊類(lèi)圖工具欄中的圖標(biāo),或者選擇Tools|Create|UnidirectionalAssociation命令,此時(shí)的光標(biāo)變?yōu)椤啊狈?hào)。02單擊要關(guān)聯(lián)的類(lèi)。03將關(guān)聯(lián)關(guān)系線拖動(dòng)到要與之關(guān)聯(lián)的類(lèi)中。04雙擊關(guān)聯(lián)關(guān)系線,彈出設(shè)置關(guān)聯(lián)關(guān)系規(guī)范的對(duì)話框。05在彈出的對(duì)話框中可以設(shè)置關(guān)聯(lián)關(guān)系的名稱(chēng)、構(gòu)造型、角色、可訪問(wèn)性、多重性、導(dǎo)航性和文檔等。聚合與組合聚合和組合關(guān)系是關(guān)聯(lián)關(guān)系的特殊形式,可以通過(guò)擴(kuò)展類(lèi)圖的圖形編輯工具欄,并使用聚合關(guān)系圖標(biāo)來(lái)創(chuàng)建聚合關(guān)系,還可以通過(guò)普通類(lèi)的規(guī)范窗口來(lái)設(shè)置聚合和組合關(guān)系,具體步驟如下:01在關(guān)聯(lián)關(guān)系的規(guī)范對(duì)話框中打開(kāi)RoleADetail或RoleBDetail,如圖所示。02選中Aggregate復(fù)選框,若設(shè)置為組合(Composition)關(guān)系,需要選中ByValue單選按鈕。03單擊OK即可。實(shí)現(xiàn)關(guān)系

創(chuàng)建和刪除實(shí)現(xiàn)關(guān)系與創(chuàng)建和刪除依賴關(guān)系類(lèi)似,實(shí)現(xiàn)關(guān)系的圖標(biāo)是,使用該圖標(biāo)將實(shí)現(xiàn)關(guān)系的兩端連接起來(lái),雙擊實(shí)現(xiàn)關(guān)系的線段可彈出設(shè)置實(shí)現(xiàn)關(guān)系的規(guī)范的對(duì)話框。在對(duì)話框中可以設(shè)置實(shí)現(xiàn)關(guān)系的名稱(chēng)、構(gòu)造型、文檔等。實(shí)例創(chuàng)建系統(tǒng)類(lèi)圖的步驟如下:研究分析問(wèn)題域,確定系統(tǒng)需求。確定類(lèi),明確類(lèi)的含義和職責(zé),確定屬性和操作。確定類(lèi)之間的關(guān)系。調(diào)整和細(xì)化類(lèi)與類(lèi)之間的關(guān)系。繪制類(lèi)圖并增加相應(yīng)的說(shuō)明。實(shí)例——需求描述“個(gè)人圖書(shū)管理系統(tǒng)”的需求如下所述:小王是一個(gè)愛(ài)書(shū)之人,家里各類(lèi)書(shū)籍已過(guò)千冊(cè),而平時(shí)又時(shí)常有朋友外借,因此需要一個(gè)個(gè)人圖書(shū)管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)?shū)籍的基本信息按計(jì)算機(jī)類(lèi)、非計(jì)算機(jī)類(lèi)分別建檔,實(shí)現(xiàn)按書(shū)名、作者、類(lèi)別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書(shū)籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)則生成書(shū)號(hào),可以修改信息,但一經(jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)?shū)籍的外借情況進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望能夠?qū)?shū)籍的購(gòu)買(mǎi)金額、冊(cè)數(shù)按特定時(shí)間周期進(jìn)行統(tǒng)計(jì)。實(shí)例——需求描述根據(jù)上述系統(tǒng)需求,使用面向?qū)ο蠓治龇椒▉?lái)確定系統(tǒng)中的類(lèi)。下面列出一些可以幫助建模者定義類(lèi)的問(wèn)題:有沒(méi)有一定要存儲(chǔ)或分析的信息?如果存在需要存儲(chǔ)、分析或處理的信息,那么這些信息有可能就是類(lèi)。這里講的信息可以是概念(概念總在系統(tǒng)中出現(xiàn))或事件(發(fā)生在某一時(shí)刻)。有沒(méi)有外部系統(tǒng)?如果有,外部系統(tǒng)可以看作類(lèi),可以是本系統(tǒng)包含的類(lèi),也可以是本系統(tǒng)與之交互的類(lèi)。有沒(méi)有模板、類(lèi)庫(kù)、組件?如果手頭上有這些東西,它們通常應(yīng)作為類(lèi)。模板、類(lèi)庫(kù)、組件可以來(lái)自原來(lái)的工程,也可以是別人贈(zèng)送或從廠家購(gòu)買(mǎi)的。系統(tǒng)中有被控制的設(shè)備嗎?凡是與系統(tǒng)相連的任何設(shè)備都要有對(duì)應(yīng)的類(lèi)。通過(guò)這些類(lèi)控制設(shè)備。有無(wú)需要表示的組織機(jī)構(gòu)?在計(jì)算機(jī)系統(tǒng)中通常用類(lèi)表示組織機(jī)構(gòu),特別在構(gòu)建商務(wù)模型時(shí)用得更多。系統(tǒng)中有哪些角色?這些角色也可以看成類(lèi),比如用戶、系統(tǒng)操作、客戶等。實(shí)例——需求描述依照上述問(wèn)題可以幫助建模者找到需要定義的類(lèi)。需要說(shuō)明的是,定義類(lèi)的基礎(chǔ)是系統(tǒng)的需求規(guī)格說(shuō)明文檔,通過(guò)分析需求規(guī)格說(shuō)明文檔,從中找到需要定義的類(lèi)。事實(shí)上,由于類(lèi)一般是名詞,因此也可以使用“名詞動(dòng)詞法”尋找類(lèi)。具體來(lái)說(shuō),首先把系統(tǒng)需求規(guī)格說(shuō)明文檔中的所有名詞標(biāo)注出來(lái),然后在其中進(jìn)行篩選和調(diào)整。類(lèi)圖實(shí)例——發(fā)現(xiàn)類(lèi)小王是一個(gè)愛(ài)書(shū)之人,家里各類(lèi)書(shū)籍已過(guò)千冊(cè),而平時(shí)又時(shí)常有朋友外借,因此需要一個(gè)個(gè)人圖書(shū)管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)?shū)籍的基本信息按計(jì)算機(jī)類(lèi)、非計(jì)算機(jī)類(lèi)分別建檔,實(shí)現(xiàn)按書(shū)名、作者、類(lèi)別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書(shū)籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)則生成書(shū)號(hào),可以修改信息,但一經(jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)?shū)籍的外借情況進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望能夠?qū)?shū)籍的購(gòu)買(mǎi)金額、冊(cè)數(shù)按特定時(shí)間周期進(jìn)行統(tǒng)計(jì)。實(shí)例——篩選備選類(lèi)“小王”、“人”、“家里”很明顯是系統(tǒng)外的概念,無(wú)須對(duì)其建模;而“個(gè)人圖書(shū)管理系統(tǒng)”、“系統(tǒng)”指的就是將要開(kāi)發(fā)的系統(tǒng),即系統(tǒng)本身,也無(wú)須對(duì)其進(jìn)行建模;很明顯“書(shū)籍”是一個(gè)很重要的類(lèi),而“書(shū)名”、“作者”、“類(lèi)別”、“出版社”、“書(shū)號(hào)”則都是用來(lái)描述書(shū)籍的基本信息的,因此應(yīng)該作為“書(shū)籍”類(lèi)的屬性處理,而“規(guī)則”是指書(shū)號(hào)的生成規(guī)則,而書(shū)號(hào)則是書(shū)籍的一個(gè)屬性,因此“規(guī)則”可以作為編寫(xiě)“書(shū)籍”類(lèi)構(gòu)造函數(shù)的指南。實(shí)例——篩選備選類(lèi)“基本信息”則是書(shū)名、作者、類(lèi)別等描述書(shū)籍的基本信息統(tǒng)稱(chēng),“關(guān)鍵字”則是代表其中之一,因此無(wú)需對(duì)其建模;“功能”、“新書(shū)籍”、“信息”、“記錄”都是在描述需求時(shí)使用到的一些相關(guān)詞語(yǔ),并不是問(wèn)題域的本質(zhì),因此先可以將其淘汰掉;實(shí)例——篩選修選類(lèi)“計(jì)算機(jī)類(lèi)”、“非計(jì)算機(jī)類(lèi)”是該系統(tǒng)中圖書(shū)的兩大分類(lèi),因此應(yīng)該對(duì)其建模,并改名為“計(jì)算機(jī)類(lèi)書(shū)籍”和“非計(jì)算機(jī)類(lèi)書(shū)籍”,以減少歧義;“外借情況”則是用來(lái)表示一次借閱行為,應(yīng)該成為一個(gè)候選類(lèi),多個(gè)外借情況將組成“外借情況列表”,而外借情況中一個(gè)很重要的角色是“

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論