Please enable JavaScript.
Coggle requires JavaScript to display documents.
何謂物件導向系統分析設計 - Coggle Diagram
何謂物件導向系統分析設計
UML與物件基本原理
何謂UML
結構性圖示Structure diagram(靜態關點static view)
表達系統中個體的結構和其靜態的關係
1.類別圖Class Diagram:將系統所需要的類別(包含類別內的屬性和方法)和類別間的關係以關聯符號表現出來
2.元件圖Component diagram:將系統中的類別分別組成不同元件,並表現出元件間的關係
3.複合結構圖Composite structure diagram:描述類別的內部結構,即是類別內各部分組成的關係
4.部署圖Deployment diagram:硬體與執行環境的描述,並描述系統的個體如何部署在這些硬體之中
5.物件圖Object diagram:在某一個特定時間點,系統內部物件間的關係與狀態的描述
7.輪廓圖Profile diagram:表現出類別的擴增機制,利用慣用模板stereotype 的方式來定義擴增的值或限制。經常用來擴增類別的使用平台platform或領域domain,其實也算是套件的一種
6/套件圖Package diagram:套件由許多類別組成,描述這些套件間的關係
行為式圖示Behavior diagram (動態觀點dynamic view)
表達系統物件間動態的關係(有流程、順序)
1.活動圖Activity diagram:描述企業運作流程,這些流程即是在使用案例內的描述,有時候也可用來表現方法內的程式流程
2.循序圖Sequence diagram:描述一個使用案例中,如何透過物件間訊息的傳遞有次序地完成系統事件
3.溝通圖Communication diagram:和循序圖相同,但更明顯表現出物件間互動溝通的關係
4.交互概述圖Interaction overview diagram:表現程序控制的流程概述
5.時間圖Timing Diagram:描述一組物件間的互動,及經由時間軸狀態的改變
6.行為狀態圖Behavioral state machine diagrams:類別內行為的表現
7.協定狀態圖Protocol state machine diagrams:單一類別內不同介面間的關係
8.使用案例圖Use Case Diagram:表現系統所有使用案例與環境間的關係
UML符號
類別符號
類別:長方形,內部加上類別名稱
類別屬性:加上屬性方格
方法
關聯符號
類別彼此間會透過訊息傳遞完成工作(程式角度:物件間方法的呼叫與參數的傳遞)
使用一條連結線連結有訊息傳遞的類別=關聯association
有時候一個類別的物件只會和另一個類別的物件產生關聯ex. 1 1;
有時候一個類別的物件卻需要和另一個類別的多個物件產生關聯=多重性multiplicity ex. 0..
、1..
封裝
讓我們觀看系統時能以“物件”關為單位來看待,而非“資料”或“程序”為單位
將一群相關的屬性和操作組成一個物件的型態,要存取這個物件屬性的值必須經由這個物件的操作,因而形成一個完整不需外在給予協助的單位,同時符合“單一物件功能完整且獨立,與其他物件的相關程度要降到最低”
繼承
類別所定義的屬性和方法可以被其他的類別所使用(父類別、子類別)
使工作量簡化,讓我們可以用原有的類別,僅增加或修改需要的部分
多型
不同類別中可以存在相同的方法名稱,雖然名稱相同,但其操作的內容可以不同
讓物件的概念更接近實際的情況
覆載override:父類別和子類別中都具有同樣的屬性與方法名稱,雖然子類別繼承了父類別的屬性與方法,但在使用子類別時,以子類別的屬性與方法為主
特殊化與一般化
特殊化specialization:將不同屬性或方法抽離出來形成單獨的類別ex.跑車、休旅車、旅行車
一般化generalization(共通性):將共同屬性與方法抽離出來形成共通的類別ex.汽車
物件導向分析設計工具
領域模型domain model
初步類別圖preliminary class diagram = 領域模型domain model (分析階段)
找出系統所需要的類別及建立關係
系統循序圖與合約
系統事件system event
將使用者文字敘述的需求轉變為系統操作的第一步驟(將使用案例所敘述的步驟轉變成一個個的操作步驟)
=稱為合約contract ,合約的描述可以知道系統事件必須要完成的工作
操作Operation :操作名稱和參數parameter
交互參照Cross Reference :使用案例名稱,操作所發生之地方
前置作業Pre-conditions:操作執行前之系統狀態
後置條件Post-conditions:操作執行後之系統狀態
系統循序圖
將使用案例表現成外部參與者與系統間操作次序(訊息傳遞)的圖形(分析階段用來描述外部參與者可以透過系統事件來操作系統的圖形)
與循序圖不同(循序圖:互動圖的一種,設計階段用來表現某個系統事件由哪些系統內的類別相互傳遞完成工作的圖形)
參與者對系統所要求的動作(即系統事件,又稱操作),動作還需要拆解,由系統內的類別相互傳遞訊息完成,這些訊息傳遞就稱為操作,描繪這些類別和操作就需要由互動圖interaction diagram
互動圖interaction diagram
溝通圖communication diagram :類似網路方式描述物件的互動,物件可以被擺設在圖中的任何位置
循序圖sequence diagram :類似柵欄的方式描述物件的互動,每一個的新物件就加入到圖的右邊
實體箭頭:操作
虛線:回傳訊息
執行規格長條格execution specification bar
使用案例
使用案例use case
描述系統功能需求
簡略brief
僅是一段話或一小節的敘述
中等casual
完整fully dressed
情節scenario
用文字描述參與者actor(與系統互動的人或個體)在與系統互動的過程
互動過程:參與者與系統之間一連串動作的敘述
使用案例圖use case diagram
《include》
《extend》
人形:參與者
沒有箭頭實線:連結,代表參與者與使用案例的關係
橢圓形:使用案例
設計類別圖DCD,design class diagram(設計階段)
類別圖Class Diagram:描述整體系統之個別類別內容和類別之間的圖形,表達整體系統的靜態結構
找出類別操作加入類別圖中,最後修改類別圖形完成了完整的設計類別圖
設計類別圖與類別圖不同之處
類別間的連結線必須增加導覽箭頭(navigability arrow ),用來表示來源物件會呼叫目的物件,同時意味著來源的物件需要宣稱一個屬性,紀錄著目的物件的位址
必須在類別中增加了類別操作
在目的物件的導覽箭頭下加上角色名稱(role name),這個角色名稱其實就是來源的物件所宣稱的屬性變數名稱
在目的物件表現出多重性,省略來源的物件之多重性
去除關聯名稱
物件與物件導向概念
物件
物件與程式間的關係
系統設計:模擬現實世界的作業方式
軟體系統:模擬現實環境所建構而成的模型。由一個一個的程式物件類別所組成。
現實世界的東西對應成程式物件,一堆程式物件組織變成程式碼,一堆程式碼組成軟體系統
類別(物件類別object class):具有相同特性和相同行為的一組物件的集合ex.學生
物件實例(object instance):個別物件ex.甲學生、乙學生、丙學生
JAVA使用物件類別時要宣告ex. Student a1=new Student();
屬性attribute:物件內的邏輯資料
物件行為behavior
物件責任responsibility
物件導向的典範paradigm
設計系統時要把系統看成是由一群物件所組成
決定物件間的交互作用
1.尋找系統所需的物件比設計系統的功能步驟重要
2.決定系統所要處理的事情由哪幾個物件交互作用合作完成
單一物件功能完整且獨立
觀念:決定物件時應盡可能讓單一物件功能完整且獨立,與其他物件的相關程度要降到最低
物件擁有自己的資料屬性,可以獨立完成某件事=高內聚力cohesion
讓物件的再用性大為提高
物件間是透過訊息傳遞來合作,而非干涉另一個物件內部的運作,保持每個物件的獨立性=低耦合力coupling
維護上不會彼此牽連產生連鎖反應
善用物件封裝、繼承、多型的特性將提升軟體的再用性
物件導向分析設計程序
軟體發展程序:結合軟體方法、軟體生命週期模型與技術、工具
物件導向發展程序:使用物件導向方法論、統一程序和物件導向工具的一連串發展軟體的步驟
物件導向分析程序
確認利害關係人stakeholder、利害關係人目標表stakeholder-goal list
建立事件(在特定時間或地點發生,可以描述且值得記住的事情)表並定義使用案例。事件要有對應的案例
描述使用案例並描繪使用案例圖
尋找概念類別並描繪初步類別圖:定義領域模型,由使用案例找出的類別會經過一些修改、合併或增加,或一般化或特殊化,找到概念類別conceptual class
腦力激盪法
名詞片語的方法
一般化、特殊化方法目的是在找出所有類別內是否具有共通類別,找出共通類別建立繼承關係,可以簡化設計或者增加類別的再用性
設計系統循序圖:將使用案例敘述轉換成為操作的方式,需完全參酌使用案例所撰寫的步驟與內容進行
擬定合約contract :將系統事件以前置條件和後置條件的方式詳細地描述
物件導向設計程序
以個別使用案例為主設計出互動圖
互動圖的目的
設計出如何經由類別間的訊息傳遞完成系統事件的工作
這些訊息傳遞的工作就是操作,將這些操作寫入初步類別圖中就完成設計類別圖的工作
描繪設計類別圖
重新調整類別圖
檢視所有類別,以建立繼承關係、調整類別間的關聯性和增加相依關係
明確說明每一方法之標示符號與演算法
合約方法:延續系統事件所採用的合約表現方式
虛擬碼方法:使用設計階段常用的設計語言虛擬碼
定義展現層和資料存取層
在系統內增加一些處理輸入輸出的類別(展現層)和資料存取的類別(資料存取層)