面向對象建模_第1頁
面向對象建模_第2頁
面向對象建模_第3頁
面向對象建模_第4頁
面向對象建模_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

面向對象建模第1頁,共70頁,2023年,2月20日,星期二第1節(jié)

面向對象分析復雜總是簡單部分的組合簡單部分又是更簡單部分的組合簡單組成復雜的過程存在層次性每個最小簡單部分獨立負責完成一系列相關任務相比較而言,每個組合內部各部分的關系比其內部與外部的關系都更緊密各個部分通過一致的接口進行組合,即一個部分對其它部分的所知僅僅是接口(1)現實世界的復雜模型第2頁,共70頁,2023年,2月20日,星期二(2)映射現實模型的面向對象思想任何系統都是能夠完成一系列相關目標和任務的對象對象完成一個任務時會請求一系列其他對象幫助其完成一些子目標其他對象為了完成其任務又會請求將子目標更細分為子子目標,并請求其他對象幫助完成子目標的分解和責任分擔一直進行直到最后產生的子部分可以映射到計算實體計算實體:對象層次關系:聚合(組合)、繼承、關聯組合接口:一個對象暴露的接口第3頁,共70頁,2023年,2月20日,星期二(3)面向對象建模面向對象建模:一種用于辨識系統環(huán)境中的對象及這些對象之間關系的技術OMT(JamesRumbaugh)Booch方法(GradyBooch)UMLOOSE(IvarJacobson)Coad-YourdonShlaer-MellorFusion第4頁,共70頁,2023年,2月20日,星期二JacobsonBoochJacobsonRumbaugh(4)UML第5頁,共70頁,2023年,2月20日,星期二UML對象模型ObjectModel(DomainModel)用例模型UseCaseModel行為模型BehaviorModel狀態(tài)機模型對象約束語言OCL第6頁,共70頁,2023年,2月20日,星期二2.1對象模型組成元素

(1)對象對象對象是指在一個應用當中具有明確角色的獨立可確認的實體每個對象都要包含標識唯一的標識自己,引用狀態(tài)對象的特征描述,包括對象的屬性和屬性的取值行為對象在其狀態(tài)發(fā)生改變或者接收到外界消息時所采取的行動第2節(jié)對象模型第7頁,共70頁,2023年,2月20日,星期二常見的事物都可以是對象和系統存在交互的外部實體,例如人、設備、其他的軟件系統等;問題域中存在的事物,例如報表、信息展示、信號等;在系統的上下文環(huán)境中發(fā)生的事件,例如一次外部控制行為、一次資源變化等;人們在與系統的交互之中所扮演的角色,例如系統管理人員、用戶管理人員、普通用戶等;和應用相關的組織單位,例如分公司、部門、團隊、小組等;問題域中問題發(fā)生的地點,例如車間、辦公室等;事物組合的結構關系,例如部分與整體的關系等。第8頁,共70頁,2023年,2月20日,星期二但是也有事物不是對象無法界定的事物純粹的值純粹的行為第9頁,共70頁,2023年,2月20日,星期二一個對象維護其自身的狀態(tài)需要對外公開一些方法,行使其職能也要對外公開一些方法,這些方法組合起來定義了該對象允許外界訪問的方法,或者說限定了外界可以期望的表現,它們是對象需要對外界履行的協議(Protocol)一個對象的整體協議可能會分為多個內聚的邏輯行為組,劃分后的每一個邏輯行為組就描述了對象的一個獨立職責,體現了對象的一個獨立角色

對象職責職責是指對象持有、維護特定知識并基于知識行使固定職能的能力如果一個對象擁有多個行為組,就意味著該對象擁有多個不同的職責,需要扮演多個不同的角色。理想的單一職責對象應該僅僅扮演一個角色第10頁,共70頁,2023年,2月20日,星期二(2)鏈接鏈接對象之間的物理或業(yè)務聯系鏈接通常是單向的,當然也有雙向的鏈接存在如果一個對象a存在指向b的鏈接,那就意味著a擁有對b的假設,關于b的行為和行為效果的假設。也就是說,b需要滿足a的某些行為期望第11頁,共70頁,2023年,2月20日,星期二導航和可見性由a指向b的鏈接除了包含假設和期望因素之外,還意味著a能夠在鏈接的指引下,正確的找到并將消息發(fā)送給b,即a可以導航到b由a指向b的鏈接使得b對a可見,或者說a擁有b的可見性(Visibility)a獲取b的可見性的途徑有以下幾種:b是全局對象,它對系統內的所有其他對象都是可見的;b是a的一部分;b是被a創(chuàng)建的;b的引用被作為消息的一部分傳遞給了a第12頁,共70頁,2023年,2月20日,星期二(3)類類類是共享相同屬性和行為的對象的集合,它為屬于該類的所有對象提供統一的抽象描述和生成模板抽象描述稱為接口(Interface),定義了類所含對象對外的(其他類和對象)的統一協議生成模板稱為實現(Implementation),說明了類所含對象的生成機制和行為模式類的分類類產生的關鍵是進行正確的分類人們認識和處理具體事物時總會有意識或無意識的對它們進行歸類第13頁,共70頁,2023年,2月20日,星期二數據驅動(Data-Driven)將具有相同屬性的對象歸為一類產生自哲學上傳統的經典分類理論(ClassicalCategorizationTheory)所有具有一個給定特性或共同特性集的實體組成一個類職責驅動(Responsibility-Driven)會依據事物的相似性而不是完全的相同性來進行事物的分類產生自哲學上的概念聚類(ConceptualClustering)使用概念描述而不是指定的特征來描述類別和事物,在進行事物分類時它會考慮概念之間的相似性,并將事物歸入和其概念最為相似的類別第14頁,共70頁,2023年,2月20日,星期二抽象抽象是指在事物的眾多特征當中只注意那些和目標密切相關的特征,同時忽略那些不相關的特征,進而找出事物的本質和共性抽象是人們在理解事物時常用的手段對象就是對現實世界事物的抽象結果,它表達了系統所需要的現實世界事物特征,拋棄了那些系統不需要的特征。類則是對象集的抽象結果,它忽略了具體某個對象在特定時間和空間的細節(jié)狀態(tài),從對象集的全局出發(fā),在一個更高的邏輯層次上,描述了對象集的共性封裝封裝是指盡可能隱藏構造單位內部的實現細節(jié),只通過有限的對外接口保持對外聯系的一種軟件構造策略絕不是簡單的將屬性和行為放置在一起第15頁,共70頁,2023年,2月20日,星期二(4)關聯關聯指出了類之間的某種語義聯系關聯是類對其對象實例之間的無數潛在關系的描述第16頁,共70頁,2023年,2月20日,星期二第17頁,共70頁,2023年,2月20日,星期二2.2對象模型重要概念

(1)繼承如果一個類A繼承了對象B,那么A就自然具有B的全部屬性和服務,同時A也會擁有一些自己特有的屬性和服務,這些特有部分是B所不具備的結構繼承和語義繼承第18頁,共70頁,2023年,2月20日,星期二第19頁,共70頁,2023年,2月20日,星期二(2)多態(tài)廣義多態(tài)一個對象在相似情景下表現出多個不同形態(tài),或者多個對象在同一情景中表現出相同形態(tài)的現象一個對象在相似情景下表現出不同的形態(tài)重載(Overloading)依據參數或返回值的不同為協議定義不同的版本,每一個版本都可以表現出自己獨特的行為泛型(Generality)使用同一個通用的實現處理不同的數據類型,然后根據數據類型的不同表現出不同的行為狹義多態(tài)多個對象在同一情景中表現出相同形態(tài)的現象第20頁,共70頁,2023年,2月20日,星期二2.3領域模型類大多是概念類(ConceptClass),是一個能夠代表現實世界事物的概念概念類之間存在指明語義聯系的關聯,這些關聯通常不標記方向,也不標記關聯端的可見性概念類會顯式的描述自己的一些重要屬性,但不是全部的詳細屬性,而且概念類的屬性通常沒有類型的約束概念類不顯式的標記類的行為,即概念類不包含明確的方法第21頁,共70頁,2023年,2月20日,星期二SalesLineItemquantitySaledatetimeStoreaddressnameItemPaymentamountRegisterContained-inStocked-inRecords-sale-ofPaid-byHosuesCaptured-on1..*10..1111*111conceptordomainobjectassociationattributes11第22頁,共70頁,2023年,2月20日,星期二第3節(jié)

用例模型用例模型就是以用例為基本單位建立的一個系統功能展示模型,它是系統所有用例的集合,以統一、圖形化方式展示系統的功能和行為特性用例是獲取和組織用戶需求的手段基本元素用例(UseCase)參與者(Actor)關系(Relationship)系統邊界(SystemBoundary)第23頁,共70頁,2023年,2月20日,星期二SpecialActorSpecialActorActorBaseUseCaseExtendingUseCase<<extend>>SpecializedUseCaseGeneralUseCaseBaseUseCaseIncludedUseCase<<include>>Communication第24頁,共70頁,2023年,2月20日,星期二第25頁,共70頁,2023年,2月20日,星期二用例圖的作用第26頁,共70頁,2023年,2月20日,星期二第4節(jié)

行為模型行為模型交互圖(InteractionDiagram)順序圖(SequenceDiagram)通信圖(CommunicationDiagram)交互概述圖(InteractionOverviewDiagram)時間圖(TimingDiagram)活動圖(ActivityDiagram)狀態(tài)圖(StateDiagram)第27頁,共70頁,2023年,2月20日,星期二(1)交互圖交互圖以一組對象為中心的交互描述技術描述在特定上下文環(huán)境中一組對象的交互行為通常描述的是單個用例的典型場景交互圖中的每一個交互都描述了環(huán)境中的對象為了實現某個目標而執(zhí)行的一系列消息交換順序圖和通信圖是最常用的交互圖交互圖中出現的對象應該在領域模型中有相應的對象存在第28頁,共70頁,2023年,2月20日,星期二順序圖第29頁,共70頁,2023年,2月20日,星期二通信圖消息[sequence-expression:]messagemessage=[attribute=]name[(argument)][:return-value]sequence-expression=label[iteration-expression]iteration-expression=[*[iteration-clause]|[condition-clause]]redisplay()message1:displayPositions(window)1.1*[i:=1..n]:drawSegment(i):Controller:Windowwire:Wire{new}

:Lineleft:Beadright:Bead1.1.1a:r0:=position()1.1.1b:r1:=position()wire?local?linecontents{new}window?self?window?parameter?1.1.2:create(r0,r1)

1.1.3:display(window)1.1.3.1add(self)objectsymbollinksymbolstandardstereotypestandardstereotypestandardstereotypestandardconstraintstandardconstraint第30頁,共70頁,2023年,2月20日,星期二系統順序圖將整個系統看作一個黑箱的對象,強調外部參與者和系統的交互行為,重點展示系統級事件第31頁,共70頁,2023年,2月20日,星期二(2)狀態(tài)圖狀態(tài)圖以狀態(tài)機理論為基礎建立的對系統行為的描述手段狀態(tài)機是以“狀態(tài)”概念為基礎解釋系統行為的一種技術有限狀態(tài)機FSM(FiniteStateMachine)是用于建模的最簡單的狀態(tài)機在FSM技術基礎之上,發(fā)展出了多種分支技術(FSM,STD,Yourdon,SDL,STM,SC),UML的狀態(tài)圖SD(StateDiagram)也是其中之一。主要用于描述重要而且復雜的對象的所有行為這個對象的行為通常要涉及很多(甚至大部分)的用例第32頁,共70頁,2023年,2月20日,星期二狀態(tài)機理論狀態(tài)機理論認為,系統總是處于一定的狀態(tài)之中。而且,在某一時刻,系統只能處于一種狀態(tài)之中。系統在任何一個狀態(tài)中都是穩(wěn)定的,如果沒有外部事件觸發(fā),系統會一直持續(xù)維持該狀態(tài)。如果發(fā)生有效的觸發(fā)事件,系統將會響應事件,從一種狀態(tài)轉移到唯一的另一種狀態(tài)。如果能夠羅列出系統所有可能的狀態(tài),并發(fā)現所有有效的外部事件,那么就能夠從狀態(tài)轉移的角度完整的表達系統的所有行為DefinitionAfiniteautomataisa5-tuple(Q,,,q0,F),whereQisafinitesetcalledthestates,isafinitesetcalledthealphabet(inputs),:Q

Qisthetransitionfunction,

q0Qisthestartstate,andFQisthesetofacceptstates(finalstates).第33頁,共70頁,2023年,2月20日,星期二簡單示例Readystop/ctr:=0Stop[normal]狀態(tài)觸發(fā)行為開始狀態(tài)轉換結束狀態(tài)Done監(jiān)護條件事件第34頁,共70頁,2023年,2月20日,星期二Example:UMLStatechartDiagrams第35頁,共70頁,2023年,2月20日,星期二狀態(tài)圖層次結構Hierarchyand歷史Historysuspend/DiagnosingDiagnostic1Step11Step12Diagnostic2Step21Step22resume/H*第36頁,共70頁,2023年,2月20日,星期二狀態(tài)圖并發(fā)ConcurrencyStaffMemberemployeeChildAdultRetireeageManager狀態(tài)圖UMLSD詳細的見:表14-2、UML的狀態(tài)圖表示法第37頁,共70頁,2023年,2月20日,星期二(3)活動圖活動圖借鑒了多種BPM后建立的行為圖以“流”(控制流和數據流)處理為側重點描述系統的行為通常以組織的整體業(yè)務流程為描述對象的第38頁,共70頁,2023年,2月20日,星期二示例第39頁,共70頁,2023年,2月20日,星期二第5節(jié)對象約束語言OCLOCL并不是UML中單獨的一個模型,而是被應用在其他的模型當中,豐富其他模型的語義OCL是一種無副作用的規(guī)約語言以表達式的方式定義對其他模型元素的約束約束和限制其他模型元素的行為和狀態(tài)變化不會修改任何其他模型元素的表述OCL不是一種編程語言。OCL的首要定位是建模語言,因此它在保證一定表達能力的前提下,注重于語言的簡潔性和抽象性它無法被用來描述程序的控制邏輯和工作流程,它的表達式定義也無法在程序中得到直接的執(zhí)行第40頁,共70頁,2023年,2月20日,星期二41示例FlightAirplaneCargoFlightPassengerFlightPassengerPlaneCargoPlane10..*10..*0..*1flights第41頁,共70頁,2023年,2月20日,星期二42示例{contextFlightinv:type=#cargoimpliesairplane.type=#cargoinv:type=#passengerimpliesairplane.type=#passenger}10..*FlightAirplanetype:enumofcargo,passengertype:enumofcargo,passengerflights第42頁,共70頁,2023年,2月20日,星期二(1)OCLexamplesAcustomergetsagiftof$10ifthenumberoftransactionss/hestartedismorethan30第43頁,共70頁,2023年,2月20日,星期二Solution2contextCustomer::getGift():IntegerpreCustStartTransact:self.bankaccount.costs->size()>30postTenDollarsGift:gift=gift@pre+10andresult=gift構成類型表達式保留關鍵字第44頁,共70頁,2023年,2月20日,星期二主要應用不變量不變量是可以對UML類元施加的約束類元需要保持它的表達式取值在指定的時間范圍內或者指定的條件下始終為“真”最常見的是用來約束類的屬性或者類的方法{contextFlightinv:duration<4}第45頁,共70頁,2023年,2月20日,星期二前置條件和后置條件

前置條件要求類元在執(zhí)行操作之前必須保證前置條件的表達式為真后置條件要求類元在操作執(zhí)行完成之后必須保證后置條件的表達式為真LoyaltyAccountpoints:Integerearn(i:Integer)burn(i:Integer)isEmpty():Boolean{points>=0}<<postcondition>>points=points@pre-iclassinvariantpostconditionforburnoperation<<postcondition>>result=(points=0)<<precondition>>points>=iandi>=0preconditionforburnoperation<<postcondition>>points=points@pre+i<<precondition>>i>=0第46頁,共70頁,2023年,2月20日,星期二監(jiān)護條件

監(jiān)護條件是對狀態(tài)機模型中狀態(tài)轉移施加的約束在狀態(tài)機到達轉移點時,監(jiān)護條件的表達式需要根據實際狀態(tài)進行評估,并只有在表達式實際取值為“真”的情況下才進行轉移第47頁,共70頁,2023年,2月20日,星期二簡潔與自然語言相結合使用工具進行正確性檢查(2)OCL用法第48頁,共70頁,2023年,2月20日,星期二6.1面向對象建模技術路線(1)從用例描述中識別出對象和類;(2)分析用例的描述信息,添加類的屬性和類之間的關聯;(3)從用例描述中識別系統行為;(4)將系統行為分配給類;(5)綜合考慮類的屬性與行為,細化類的職責,建立完全的對象模型。第6節(jié)面向對象建模第49頁,共70頁,2023年,2月20日,星期二6.2領域模型建模建立領域模型發(fā)現對象和類概念類分類列表

名詞分析

行為分析

建立類之間的關聯添加類的重要屬性面向對象分析的結果:建立領域模型建立行為模型第50頁,共70頁,2023年,2月20日,星期二(1)發(fā)現對象和類如果候選對象既維持一定的狀態(tài),又依據狀態(tài)表現一定的行為,那么它就應該是一個獨立存在的對象如果候選對象只有狀態(tài)沒有行為,那么就要分析它的狀態(tài)是否是系統需要的數據。如果系統需要它的狀態(tài)數據,那么該候選對象就應該作為其他對象的屬性出現在最終的領域模型當中。否則,該候選對象應該被擯棄如果候選對象只有行為沒有狀態(tài),那么往往意味著需求信息的遺漏需要注意實體關系建模思想帶來的誤區(qū)第51頁,共70頁,2023年,2月20日,星期二概念類分類列表這種方法事先給出一個概念類的分類列表,從中發(fā)現對象

方式來源Shlaer-Mellor[ShIaer1988]Ross[Ross1987]Coad-Yourdon[Coad1990]分類列表有形的事物角色事件交互功能人地點事物組織:集合體概念事件:需要被記錄結構其他系統設備事件:需要被記錄角色地點組織單位第52頁,共70頁,2023年,2月20日,星期二概念類分類列表示例第53頁,共70頁,2023年,2月20日,星期二名詞分析

從文本描述中識別出有關的名詞和名詞短語,然后從中發(fā)現對象第54頁,共70頁,2023年,2月20日,星期二6.2領域模型建模

——發(fā)現對象和類行為分析從需求描述中搜尋動詞,識別出系統行為,然后從中發(fā)現對象用例描述行為候選對象確定對象概念類主動對象被動對象用戶在第i層按下向上的樓層按鈕按下用戶第i層向上樓層按鈕保留對象:第i層的向上樓層按鈕第i層的向上樓層按鈕燈電梯電梯門計時器到第j層的電梯按鈕到第j層的電梯按鈕燈樓層按鈕電梯按鈕按鈕燈電梯電梯門計時器第i層的向上按鈕燈亮亮第i層的向上樓層按鈕燈電梯到達第i層;到達電梯第i層第i層的向上樓層按鈕燈滅滅第i層的向上樓層按鈕燈電梯門開啟開啟電梯門計時器開始計時計時計時器用戶進入電梯無用戶按下到j層的電梯按鈕按下用戶到第j層的電梯按鈕到第j層的電梯按鈕燈亮亮到第j層的電梯按鈕燈計時時間到,電梯門關閉到時計時器擯棄對象:用戶:系統外對象,既沒有狀態(tài)也沒有行為;第i層、第j層:只有狀態(tài)沒有行為關閉電梯門電梯到達第j層到達到達j層的電梯按鈕燈滅滅到第j層的電梯按鈕燈電梯門開啟開啟電梯門計時器開始計時計時計時器用戶走出電梯門無計時時間到,電梯門關閉到時電梯門關閉計時器第55頁,共70頁,2023年,2月20日,星期二(2)建立類之間的關聯保證類之間協作所必需的可見性適當使用問題域內的關聯,增強領域模型的可理解性要適可而止不要在關聯的識別上花費太多的時間識別概念類比識別關聯更加重要避免顯示冗余和導出的關聯第56頁,共70頁,2023年,2月20日,星期二示例第57頁,共70頁,2023年,2月20日,星期二(3)添加類的重要屬性實現類協作時必要的信息,是協作的條件、輸入、結果或者過程記錄使用用戶的描述方式,不進行類型和約束的嚴格定義第58頁,共70頁,2023年,2月20日,星期二6.3行為模型建模建立行為模型建立系統順序圖在需要時建立詳細的交互圖建立用例的狀態(tài)圖或者重要類的狀態(tài)圖建立活動圖為系統行為添加契約說明第59頁,共70頁,2023年,2月20日,星期二(1)建立交互圖確定交互圖的上下文環(huán)境上下文環(huán)境的前置條件和后置條件應該被分配給交互圖中的相應行為找出參與交互的對象交互圖中的參與對象(和對象之間的關聯)應該和領域模型中的知識保持一致。根據發(fā)現的對象(和關聯)建立交互圖框架添加消息,描述交互行為考慮和系統相關的(系統內的、系統與外部對象之間的)交互行為,忽略那些與系統無關的(外部對象之間的)交互行為。如果建立的是系統順序圖,那么系統內的行為也可以被忽略。進行消息標識、特化圖示等詳細信息的描述,將交互圖的信息補充完整。第60頁,共70頁,2023年,2月20日,星期二第61頁,共70頁,2023年,2月20日,星期二(2)建立狀態(tài)圖確定上下文環(huán)境搞清楚狀態(tài)的主體常見的狀態(tài)主體有:類、用例、多個用例和整個系統識別狀態(tài),標記初始狀態(tài)和結束狀態(tài)可能會不存在確定的初始狀態(tài)和結束狀態(tài)建立狀態(tài)轉換補充詳細信息,完善狀態(tài)圖第62頁,共70頁,2023年,2月20日,星期二授權空閑銷售開始商品信息顯示錯誤提示列表顯示銷售結束授權YY空閑YYYY銷售開始Y商品信息顯示YY錯誤提示Y列表顯示

溫馨提示

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

評論

0/150

提交評論