




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件需求分析與建模
-靜態(tài)圖:類圖、對象圖姓名:(
)2024年1月30日1靜態(tài)圖:類圖、對象圖類和對象的基本概念;三個層次的觀點;類圖和對象圖的基本要素;小結(jié)。I類和對象的基本概念引言;對象和類;類和對象的實例;類和對象的表示;三個層次的觀點。引言類圖技術(shù)是OO方法的核心技術(shù),應(yīng)用非常廣泛,其中類、對象以及它們之間的關(guān)系是最基本的建模元素。類模型和對象模型揭示了系統(tǒng)的結(jié)構(gòu)。分類可以有效地使復(fù)雜問題簡化。建立類模型的過程,是把現(xiàn)實世界中與問題有關(guān)的各種對象及其相互關(guān)系進行抽象和分類的過程。對象和類對象是指某個事物,大多對應(yīng)于真實世界中的某個客觀實體;但有些對象在真實世界中沒有直接的對應(yīng)物,是人們對某個事物的一種抽象描述。所有的對象都是有唯一標識的獨立實體。對象之間的區(qū)別是由它們固有的存在性所決定的,而與它們的特征是否相同無關(guān)。對象的基本特征可以歸納為對象的屬性和行為兩類。類是指對一組具有相同特征的對象的抽象描述;任何對象都是某個類的實例。我們采用類的概念來研究系統(tǒng)的構(gòu)成,劃分問題域中涉及到的各種對象。類之間的繼承關(guān)系是OO方法中的一個重要概念。類和對象的實例在一個信息系統(tǒng)中:客戶(Customer)、合同(Agreement)、發(fā)票(Invoice)、債務(wù)(Debt)、資產(chǎn)(Asset)、報價單(Quotation)在一個技術(shù)系統(tǒng)中:感應(yīng)器(Sensor)、顯示器(Display)、輸入輸出卡(I/OCard)、按鍵(Button)在軟件系統(tǒng)中:文件(File)、執(zhí)行程序(Executableprogram)、設(shè)備(Device)、圖標(Icon)、窗口(Window)、滾動條(Scrollbar)...在人類社會中:社團、俱樂部、大學(xué)、公司、商店、企業(yè)...例:客戶類的表示
類和對象的表示:類圖和對象圖類圖描述系統(tǒng)中的類及其相互之間的各種關(guān)系,反映了系統(tǒng)中包含的各種對象的類型以及對象間的各種靜態(tài)關(guān)系,主要是:關(guān)聯(lián)和子類型。類圖也可描述類的屬性和行為以及對模型中各種成分的約束。對象圖是類圖的實例,描述系統(tǒng)中各種對象(類的實例)以及對象之間的各種靜態(tài)關(guān)系。類圖(和對象圖)中各個區(qū)間的文法:獨立于實現(xiàn)時所使用的程序設(shè)計語言,也可以選用某種語言的文法規(guī)則,如C++,Java,…。類中的一個操作可以有多種不同的實現(xiàn),每一個實現(xiàn)稱作一個方法。類和對象的表示(續(xù))
:類圖和對象圖類名(ClassName)類名屬性(Attributes)類名屬性(Attributes)操作
(Operations)類的表示對象名(ObjectName)對象名屬性值(AValues)對象名屬性值(AValues)方法
(Methods)對象的表示三個層次的觀點畫類圖和理解類圖時都應(yīng)采用三個層次的觀點。這些觀點也適用于其它模型。三個層次的觀點不是UML的組成部分,但對建造模型或評價模型都非常有用,且都可應(yīng)用于UML。三個層次:概念層說明層實現(xiàn)層概念層描述應(yīng)用域中的概念,是對現(xiàn)實世界的直接描述,與實現(xiàn)它們的類有關(guān),但與實現(xiàn)方案和實現(xiàn)語言無關(guān)。說明層描述軟件的接口,而不是軟件的實現(xiàn)。一個類型描述一個接口,但可能有多種實現(xiàn)。實現(xiàn)層從實現(xiàn)的角度定義類及其實現(xiàn),揭示了軟件實現(xiàn)體的構(gòu)成情況。
II類圖和對象圖的基本要素關(guān)聯(lián);屬性;操作;泛化;授權(quán);約束規(guī)則。II.1
關(guān)聯(lián)一個典型的類圖;基本概念;角色及其命名;角色的多元性;三個層次中的關(guān)聯(lián);導(dǎo)航特性。
一個典型的類圖多重性:限制性的1*0..1雇員銷售代表多重性:選擇關(guān)聯(lián)訂單客戶nameaddress泛化類團體客戶個人客戶多重性:多值產(chǎn)品1
項*角色名稱1訂單項關(guān)聯(lián)**個人客戶信用卡號數(shù)量:Integer價格:Money確認:Boolean定貨單收到日期預(yù)付款數(shù)量價格發(fā)貨()結(jié)束()客戶姓名地址信用等級():String集團客戶聯(lián)系人姓名信用等級信用限額余額()月帳單(Integer){信用等級()=="低"}定單欄目雇員產(chǎn)品*1***110..1采購員{if定貨單.客戶.信用等級=="低"then定貨單.預(yù)付款必須是"真"}欄目
關(guān)聯(lián)的表示關(guān)聯(lián)的表示:用一條無向線段表示,是一種雙向關(guān)系。例如客戶和訂單的關(guān)聯(lián):從客戶看,訂單是他提交的;從訂單看,它有一個客戶。用一條有向線段表示,是一種單向關(guān)系關(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)聯(lián)中的角色,可以為角色命名。例如從訂單到訂單項方向上的角色可以命名為項。如果在關(guān)聯(lián)上沒有標出角色名,則隱含地用該角色的目標類的名稱作為它的名稱。例如,從訂單到客戶的角色應(yīng)叫做客戶。角色的多元性角色可具有多元性(一個角色可以有多個對象來扮演)。例如,每個客戶對象可以有零或多個訂單對象。多元性的表示。1表示1..1;*代表零到無窮;0..1是選擇符,表示沒有或僅有1個;一個數(shù);一個范圍;數(shù)字和范圍不連續(xù)的組合。
*
B
A表示A和零個、一個或多個B關(guān)聯(lián)。0..1
B
A表示A和零個或一個B關(guān)聯(lián)1..*
A
A表示A和一個或多個B關(guān)聯(lián)1
B
A表示A和一個B關(guān)聯(lián)(1)關(guān)聯(lián)的名稱(2)端點(3)多重性(4)有序(5)多元關(guān)聯(lián)三個層面中,關(guān)聯(lián)性意味著什么?概念層:在應(yīng)用域中兩類對象之間存在的某種關(guān)系說明層:表示一種職責(zé)(Responsibility),一方向另一方請求或發(fā)送某種消息或服務(wù),但并不涉及實現(xiàn)這種服務(wù)的具體方法(methods)例,定單的一個職責(zé)是記住和報告它的所有者是誰實現(xiàn)層:意味著(用指針來)建立某種關(guān)聯(lián)性。實現(xiàn)層中的關(guān)聯(lián)(續(xù))對雙向關(guān)聯(lián):相關(guān)聯(lián)的兩個類中都有指向?qū)Ψ降闹羔槨@纾唵斡幸粋€指針集指向訂單項,有一個指針指向客戶。ClassOrder{privateCustomer_customer;privateVector_orderLines;...}ClassCustomer{privateVector_orders;...}導(dǎo)航特性1導(dǎo)航訂單*收到日期預(yù)付款數(shù)量價格發(fā)貨()結(jié)束()客戶姓名地址信用等級():String產(chǎn)品1*1
項*訂單項數(shù)量:Integer價格:Money確認:Boolean導(dǎo)航特性(續(xù))箭頭表示導(dǎo)航特性。如果只在一個方向上有導(dǎo)航表示,稱作單向關(guān)聯(lián)。如果在兩個方向上都有導(dǎo)航表示,稱作雙向關(guān)聯(lián)。如果不帶箭頭,表示未知或尚未確定。單向關(guān)聯(lián)時,說明模型中的訂單指出它是由哪個客戶發(fā)出的;實現(xiàn)模型中的訂單包含一個指向客戶的指針。對雙向關(guān)聯(lián)的限制是兩個角色必須互逆。II.2
屬性在三個層面中的屬性;屬性的語法;補充說明。在三個層面中的屬性在概念層,描述類具有的一些屬性(客戶對象的名字屬性表示客戶有名字)。在說明層,規(guī)定類對象屬性的值并給出設(shè)定這些值的方法(表示客戶對象的名字并有一些設(shè)置名字的方法)。在實現(xiàn)層,設(shè)置一個物理存儲區(qū)來保存屬性的值(也可稱做一個實例變量或一個數(shù)據(jù)成員)。屬性的語法UML規(guī)定其語法為:可見性名稱[多重性]:類型=缺省值{約束特性}可見性:表示該屬性對類外的元素是否可見。常用的有公有、受保護和私有三種。名稱:屬性的名稱,是一個字符串。多重性:任選項,用多值表達式表示,表達格式為“低值..高值。(低值、高值、0..*、1..1)類型:定義屬性的種類(基本數(shù)據(jù)類型或用戶自定義的類型)。缺省值:屬性的初始值。約束特性:描述對屬性的約束。補充說明客戶屬性的名稱可以定義為一個單獨的類:定義名字的屬性及其相關(guān)的操作;然后在客戶類和該屬性名稱類之間建立關(guān)聯(lián)。對于任何一個對象,其每個屬性都具有一個確定的值。而且,一般來講,屬性總是單值的。目前只須將屬性看成是一個小而簡單的類,諸如字符串、日期、資金對象以及非對象的值(例如整型和實型)。類的派生屬性人姓名年齡人姓名生日/年齡{年齡=今天-生日}personName:Char*BirthDay:Date-age:IntegerAge():IntegerII.3
操作在三個層面中的操作;操作的語法;補充說明。在三個層面中的操作
在概念層,操作不是定義類的接口,而是指出類的主要職責(zé),描述類的動態(tài)行為。在說明層,主要給出重要的公有操作;然而有可能需要指明哪些屬性是只讀的或是不可修改的。在實現(xiàn)層,給出操作的不同實現(xiàn)方法,有可能會顯示一些私有的和受保護的操作。操作是施于對象的過程調(diào)用,而方法是過程體,是操作的一個具體實現(xiàn)。操作的語法可見性名稱(參數(shù)表):返回類型表達式{約束特性}可見性:“+”表示公有操作,“#”表示受保護的操作,“-”表示私有操作。名稱:操作的名稱,是一個字符串。參數(shù)表:其語法與屬性的參數(shù)相同,參數(shù)個數(shù)是任意的。返回類型表達式(可選項):依賴于語言的描述。約束特性:用以描述對此操作的約束。補充說明兩類操作:不改變類(對象)的可見狀態(tài)的查詢操作;例如,查詢操作僅從類中取值,但不改變其可見狀態(tài)。改變類(對象)的可見狀態(tài)的操作稱為修改操作。查詢操作可以按任意的順序執(zhí)行,但修改操作的順序是重要的,如果不按照預(yù)定的順序執(zhí)行修改操作,有可能得到不同的結(jié)果。為了保證這兩類操作相互獨立,應(yīng)避免從修改操作中返回值。XIV可見性+(Public):公有成員在程序的任何位置都是可見的,系統(tǒng)中的任何對象都可以使用它。-(Private):私有成員僅可以由定義它的類使用。#(Protected):受保護的成員僅可以由定義它的類和該類的子類中的對象使用。
對“Public”、“Private”和“Protected”等三個可見性標識符的含義,各種語言都有它自己的規(guī)定。UML的定義是:操作(Operations)與方法(methods)操作(Operations):界面可見性名稱(參數(shù)表):返回類型表達式{約束特性}例:+Age(DateToday):Integer方法(methods):操作的一個具體的實現(xiàn)classPerson{ StringName; DateBirthday;
publicIntegerAge(DateToday){return(Year(Today)-Year(this.Birthday));}}II.4
泛化泛化的定義;在三個層面中的泛化;繼承與泛化。泛化的定義泛化關(guān)系(繼承關(guān)系)定義類和包之間的一般元素和特殊元素之間的分類關(guān)系。例如,個人客戶和團體客戶都是客戶,可以把他們的相似之處放到客戶類(超類型)中,用個人客戶和團體客戶作為它的子類型。客戶nameaddress泛化超類型團體客戶個人客戶超類型例如,前面會議管理系統(tǒng)中存在以下的泛化關(guān)系。在三個層面中的泛化在概念層,如果團體客戶的所有實例都是客戶的實例,那么團體客戶類型是客戶類型的一個子類型。在說明層,泛化意味著子類型的接口必須包括超類型的接口中的每個元素,即兩者必須保持一致。在實現(xiàn)層,子類繼承超類的所有屬性和方法,并可覆蓋繼承來的方法。例如,凡適用于客戶的代碼,只要將將客戶替換成團體客戶,都適用于團體客戶。泛化(Generalization)泛化(Generalization):抽象化特化(Specialization):實例化繼承(Inheritance):泛化關(guān)系的一種實現(xiàn)機制并非所有的泛化關(guān)系都適合用繼承關(guān)系實現(xiàn)繼承與泛化繼承是實現(xiàn)泛化的一種機制。在這種機制中,超類的任何一個子類都須具有其超類的所有行為:不僅要求其操作界面在文法上一致,而且要求其行為在語義上一致。當(dāng)子類中的一個操作重載其超類中相應(yīng)的操作時,必須確保它提供與超類中的操作相同的服務(wù)(內(nèi)容可以更多或更具體)。如沒有證明子類的行為是否與父類相同,就試圖用繼承來實現(xiàn)新類中的行為,當(dāng)兩者不一致時,會導(dǎo)致難以預(yù)測的錯誤。靜態(tài)方法和數(shù)據(jù)類的靜態(tài)方法不僅可以用于整個類的本身,而且還可用于該類的對象中,而類靜態(tài)數(shù)據(jù)只能在多個對象之間實現(xiàn)共享,不能被復(fù)制。C++中類靜態(tài)方法和數(shù)據(jù)是依靠關(guān)鍵字static來說明的,類的靜態(tài)數(shù)據(jù)還必須在聲明進行初始化,否則就會出錯。Java使用與C++相同的關(guān)鍵字static來定義靜態(tài)方法和數(shù)據(jù)的。由于全局函數(shù)的存在,使得靜態(tài)方法變得非常常用。靜態(tài)數(shù)據(jù)能直接在類的聲明中直接初始化。聚合和組合(1)聚合聚合也是表示類和類之間的“整體-部分”關(guān)系,用空心菱形表示。(2)組合組合是聚合的一種特殊情形,用實心菱形表示。II.5
授權(quán)利用繼承實現(xiàn)棧;授權(quán)的定義;利用隊列實現(xiàn)棧。利用繼承實現(xiàn)棧棧是隊列的特例,其元素的加入和刪除只能在棧頂進行。棧和隊列之間存在泛化關(guān)系。但若采用繼承機制來實現(xiàn)這種泛化關(guān)系,則存在兩個問題:如重載隊列類中的插入和刪除操作,則名稱與習(xí)慣用法不一致;如增加push和pop操作,則子類Stack繼承了超類List中的操作add和remove,這可能破壞棧的結(jié)構(gòu)。如子類Stack繼承超類List中的first和last操作,同樣可能破壞棧的結(jié)構(gòu)。授權(quán)的定義授權(quán):把原來屬于類A的部分責(zé)任或任務(wù)轉(zhuǎn)交給(授權(quán))類B來完成。這時,類B應(yīng)看作是類A的不可分割的一個組成部分。目前常用的OOPL(如C++或Java)所提供的繼承機制,難以直接實現(xiàn)多元繼承和動態(tài)繼承等泛化關(guān)系,而授權(quán)技術(shù)是一種非常有效的實現(xiàn)技術(shù)。
利用隊列實現(xiàn)棧不推薦addremovefirstlastListStackpushpop推薦-Body:ListStackPushpopaddremovefirstlastListII.6
約束規(guī)則約束規(guī)則的語法;約束規(guī)則實例。約束規(guī)則的語法在畫類圖的過程中,關(guān)聯(lián)、屬性和操作等基本要素都要為模型加注約束條件。約束規(guī)則的語法:將約束條件放在括號{}中,用自然語言或其他常見的設(shè)計語言來描述,其描述要簡潔準確。在理想的情況下,在所使用的程序設(shè)計語言中,規(guī)則應(yīng)該作為斷言來實現(xiàn),并在調(diào)試代碼時調(diào)用它。約束規(guī)則實例{if
定貨單、客戶、信用等級==“低”
then
定貨單、預(yù)付款必須是“真”}1*
項訂單項數(shù)量:Integer價格:Money確認:Boolean訂單收到日期預(yù)付款數(shù)量價格發(fā)貨()結(jié)束()使用類圖的幾點建議1.在項目初始階段,不要使用所有的符號,應(yīng)從簡單的概念開始。2.不同的開發(fā)階段應(yīng)用不同的觀點畫類圖:分析階段用概念層類圖;設(shè)計階段用說明層類圖;實現(xiàn)階段用實現(xiàn)層類圖。3.不要為每個事物都畫一個模型,應(yīng)把精力放在關(guān)鍵的領(lǐng)域,畫幾張較為關(guān)鍵的圖,經(jīng)常使用,不斷更新。4.使用類圖的最大危險是過早地陷入實現(xiàn)的細節(jié),應(yīng)將重點放在概念層和說明層。類圖和對象圖小結(jié)1.類和對象的表示法(1)名稱;(2)屬性;(3)行為;2.類之間的各種關(guān)系(1)繼承:子類繼承了超類的所有屬性和行為;(2)關(guān)聯(lián):兩個不同類之間關(guān)聯(lián),可以單向或雙向;(3)聚合:強關(guān)聯(lián)關(guān)系,整體與部分的生命周期分開;
(4)組合:強聚合,整體與部分的生命周期相同;3.三個概念層次(1)概念層;(2)說明層;(3)實現(xiàn)層類圖的建模分析步驟 (1)尋找出需求中的名詞(候選對象)。(2)合并含義相同的名詞,排除范圍以外的名詞,并尋找隱含的名詞。(3)去掉只能作為類屬性的名詞。(4)剩下的名詞就是要找的分析類(候選類)。(5)根據(jù)常識、問題域、系統(tǒng)責(zé)任確定該類有那些屬性。(6)補充該類動態(tài)屬性,如狀態(tài)、對象間聯(lián)系(如聚合、關(guān)聯(lián))等屬性。(7)從需求中的動詞、功能或系統(tǒng)責(zé)任中尋找類的操作(候選操作)。(8)從狀態(tài)轉(zhuǎn)換,流程跟蹤、系統(tǒng)管理等方面補充類的操作。(9)對所尋找的操作進行合并、篩選。(10)對所尋找的操作在類間進行合理分配(職責(zé)分配),形成每個類候選操作。(11)補充每個類的的分析文檔,為類的進一步設(shè)計打下基礎(chǔ)。會議管理系統(tǒng)類圖中的分析過程-(1)主要分析類 (1)主要分析類每一系統(tǒng)都有一個或幾個主要分析類,并且有一些其他類圍繞在這個類的周圍,輔助主要分析類完成它的生命周期。例如,對于會議管理子系統(tǒng)來講,顯然會議是主要的分析類,主要分析類是在需求采集階段就要確定的類,在畫類圖時只畫主要分析類呢?當(dāng)然不是,一個孤零零的類什么作用都沒有,只有類和類之間發(fā)生關(guān)系才能形成業(yè)務(wù),所以第一步是要找到其他的支持類,從哪兒找呢?回答原始需求文檔。(2)輔助類 首先我們從原始需求文檔中找到名詞和隱含的名詞,在軟件開發(fā)以后,這些名詞可以演化為類或類的屬性,對于會議管理系統(tǒng)來講,前半部分文檔所包含的名詞有:會議、行政管理、手段、會議類別、會議室、會議申請、會議通知、會議紀要、基礎(chǔ)、信息、會議性質(zhì)名稱、備注、會議室名稱、容納人數(shù)、會議室資源、說明、使用情況、會議申請人、會議安排、會議性質(zhì)、會議議題、預(yù)算、會議附件、主持人、記錄人員、參加人員、會議地點、會議室、會議開始時間、會議結(jié)束時間、會議內(nèi)容、審批人。其次要合并含義相同的名詞,如把備注和說明合并為說明、把會議性質(zhì)和會議性質(zhì)名稱
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 母乳喂養(yǎng)的相關(guān)知識及技巧
- 連體餐盒采購方案范本
- 愛樂貓迷你四驅(qū)車課程
- 工廠聲屏障的施工方案
- 上海中醫(yī)藥大學(xué)《控制科學(xué)與工程專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海閔行職業(yè)技術(shù)學(xué)院《專業(yè)方向與實踐(養(yǎng)生)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西水利職業(yè)技術(shù)學(xué)院《Hadoop大數(shù)據(jù)存儲與計算》2023-2024學(xué)年第二學(xué)期期末試卷
- 洞室化灌止水施工方案
- 凍煤破碎施工方案
- 長春工業(yè)大學(xué)《廣告文案》2023-2024學(xué)年第一學(xué)期期末試卷
- 圖書管理員的崗位技能要求與試題及答案
- 自體輸血管理制度與技術(shù)規(guī)范
- 2025年鄉(xiāng)村醫(yī)生考試題庫:農(nóng)村醫(yī)療衛(wèi)生服務(wù)體系建設(shè)核心知識試題
- 2025年鄭州鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- XX鄉(xiāng)鎮(zhèn)履職事項清單表(1356項)
- 2025年高考作文備考:武漢市二調(diào)10篇范文+深圳一模4篇范文匯編
- 2025年共青團入團考試測試題庫及答案
- 2025年宣傳崗筆試題庫及答案
- 2024年漳州市醫(yī)院招聘考試真題
- 售后技術(shù)服務(wù)年終總結(jié)
- 磷酸鐵及磷酸鐵鋰異物防控管理
評論
0/150
提交評論