1、系統分析與設計 楊子青 K-1K、物件資料結構塑模類別圖與物件圖n類別n類別圖 執行、實作觀點的類別種類 能見度(Visibility)類別間之關係 相依 一般化 關聯 實現化n物件圖n物件資料結構塑模系統分析與設計 楊子青 K-21.類別(Class)n一群相關物件的定義、描述或樣版n類別具有名稱、屬性與操作,同一類別之物件具有相同屬性與操作n類別封裝了屬性及操作名 稱屬 性操 作系統分析與設計 楊子青 K-3類別與物件的關係n類別(Class):物件的設計藍圖n物件(Object):根據類別所建造出來的實體(Instance)n物件導向程式設計,以 class 表現真實世界的物品class
2、 Customer String User=“Robert”;String Pass=“1234”;function Login(User,Pass);Robert=new CustomerPeter=new CustomerLisa=new Customer物件物件類別類別系統分析與設計 楊子青 K-4類別圖與物件圖n類別是物件導向軟體系統的核心n類別圖(Class Diagram)物件導向的資料結構塑模工具 類似傳統資料庫的ERD,但是ERD是針對資料來做設計,並非以物件導向的觀點來設計 描述軟體系統靜態結構的類別和類別關係n物件圖(Object Diagram)是類別圖的實例(Insta
3、nces),用於描述一系統於某時間點的靜態結構 一棟房子的藍圖就好比是類別;而依據藍圖所蓋出的房子就是實例。由類別所建構出來的實例稱為物件系統分析與設計 楊子青 K-52.類別圖n實例系統分析與設計 楊子青 K-6實例:ATM自動櫃員機系統的類別圖系統分析與設計 楊子青 K-72.1 執行觀點的類別種類n永存類別(Persistent Class)當程式執行後,該物件之資料需被儲存在資料庫者n暫存類別(Transient Class)當程式執行後,該物件之資料不需被儲存在資料庫且該物件會被刪除者系統分析與設計 楊子青 K-82.2 實作觀點的類別種類n實體類別(Entity Class)以企業
4、的領域術語命名,通常表示使用個案完成後仍需儲存在資料庫中的資料(永存類別)。n介面類別(Boundary Class)也稱邊界類別,包含表單、報表、硬體介面以及其他和系統溝通的介面。程式執行完畢後,介面類別之物件都將被刪除(暫存類別)。n控制類別(Control Class)屬於暫存類別,負責協調其他類別的工作,傳送訊息給其他類別,或是將工作指派給其他類別。一個使用個案至少需搭配一個控制類別,藉由控制類別來控制使用個案中各項事件的發生順序。系統分析與設計 楊子青 K-92.3 能見度(Visibility)n物件導向所提供的封裝機制 公共的(Public):所有的物件都可以存取與設定它的值 保
5、護的(Protected):只有子類別可以存取與設定它的值 類別庫(Package):只有相同類別庫之類別可以存取與設定它的值 私有的(Private):只屬於它自己,任何其他的類別都不可以存取它系統分析與設計 楊子青K-102.4 類別間之關係n對於領域中的問題,會藉由許多的物件一起合作以提供解答。因此,塑模類別之間的關係是類別圖很重要的工作。系統分析與設計 楊子青 K-112.4.1 相依關係(Dependency)n是一種使用的關係 表示一個類別會用到其他類別,且被使用之類別的改變可能會影響使用它的類別,但反之則不必然。n以虛線箭頭由使用類別指向被使用類別,如下圖為Class A相依於C
6、lass B系統分析與設計 楊子青K-12相依關係import B;public class A public void method1(B b)/.public void method2()B tempB=new B();/.系統分析與設計 楊子青K-13相依關係實例nWindow(視窗)類別使用Event(事件)類別 Event 類別的更改會影響Window 類別的操作,即Window 類別上的操作行為會依照Event 類別不同的行為而改變。例如滑鼠在Window 類別開啟(Open)或移動(Move)等按鈕點選事件(Event),會使此Window 類別產生不同的操作行為。WindowO
7、pen()Close()Move()Display()HandleEvent()EventDependency系統分析與設計 楊子青K-142.4.2 一般化關係(Generalization)n父類別的所有特徵、性質及操作,都會自動被子類別所繼承。子類別不需再去定義它們,就可以自動擁有n畫法:一條空心三角形的直線,從子類別連接到父類別public class Parent/public class Child extends Parent/系統分析與設計 楊子青K-15一般化關係實例系統分析與設計 楊子青K-162.4.3 關聯關係(Association)n代表建立類別之間彼此互通訊息的管
8、道,物件與物件間才可以互相傳遞訊息,完成所需的工作。n聯關係之表達符號為實線。系統分析與設計 楊子青K-17關聯關係n意謂一類別之物件知道另一類別之物件的存在,或用到另一類別之物件的服務,但不是擁有此服務。例如人扮演車子之駕駛者:一類別之物件(人)知道另一類別之物件(車子)的存在,且(人)使用到(車子)的服務,故人與車子間有關聯關係系統分析與設計 楊子青K-18程式碼看關聯關係n例如:航班跟飛機之間的關聯關係 一架飛機會有它所屬的指定航班,而一個航班也會指派某一架飛機來飛航。它的對應程式碼則為:public class Flightprivate AirPlane assignedPlane;
9、public class AirPlaneprivate Flight assignedFlight;系統分析與設計 楊子青K-19關聯關係的互通性(Navigability)n關聯若沒有箭號,表示雙向關係n若在類別間之關聯加上箭頭便表示具有互通性,即可依箭頭方向找到另一端之資訊。例如一個訂單可有許多訂購項目;給定一個訂單,可以找出訂購項目,但訂購項目不需要知道它是屬於哪個訂單。系統分析與設計 楊子青K-20關聯關係的名稱n關聯關係不一定要命名,但若語意不清,例如人跟車子可以有:人擁有車、人開車、人租車等關係,可加上名稱系統分析與設計 楊子青K-21關聯關係的命名n常用的命名方式有兩種:描述關
10、係的本質:可用動詞或動詞片語表達,如人駕駛車子 描述角色:可用名詞或名詞片語表達,例如 人是車子的駕駛人駕駛駕駛者人車子人車子系統分析與設計 楊子青K-22關聯關係的多重性(Multiplicity)n在一個關聯關係中,常需表達有多少物件參與(參與此關係之物件的數量),此種資訊與ERD的基數(Cardinality)表達相同。名稱表法例子恰好一個1一個系有一個系主任零個或是更多0*教師有零個或是多個行政工作一個或是更多1*學生主修一個或是多個學位零或是一個0 1教師有一個或是零個計畫補助指定範圍2 4職員一年可以享有兩個到四個假期系統分析與設計 楊子青K-23關聯關係的多重性之實例n假設一個學
11、生可以修1到5門課程;一門課程可能沒有人修(0)或是有很多人修(*);老師可教導一門以上的課 程;或是一門課程只有1位老師系統分析與設計 楊子青K-24關聯類別n若兩個類別有關聯關係且其基數為多對多,則該關係可能會有屬性,此屬性以關聯類別表示。系統分析與設計 楊子青K-25聚集(Aggregation)與組合(Composition)n均是關聯關係的一種特定變異。n兩者之相同點:描述整體與其組件之關係 is-part-of;has a;has parts 均表達一個較大類別之物件(整體),是由另一些較小類別之物件(組件)所組成。系統分析與設計 楊子青K-26聚集與組合n組合有較強的限制 例如組
12、合之整體很強地擁有其組件,當整體之物件被複製或刪除,則其所有組件也會被複製或刪除。亦即組合關聯的組件不能單獨存在,而聚集的組件可單獨存在。n表示方式 聚集:以一個空心的菱形表示整體的一方 組合:以一個實心的菱形表示整體的一方系統分析與設計 楊子青K-27聚集與組合實例n一部車子可以有多個輪胎,雖然輪胎屬於車子,但輪胎也可以單獨存在聚集n一張發票擁有多個發票項目,但當該發票被刪除時,其所屬的所有發票項目也須一併刪除,因為若無該發票,則其發票項目就毫無意義組合車子輪胎有*1(聚集)發票發票項目有1(組合)*系統分析與設計 楊子青K-28聚集與組合實例n一個球隊有許多球員構成,球隊如果解散,球員還可
13、以到別的球隊打球聚集n一本書包含有很多章節,如果書沒了,章節也就沒意義了組合public class Teamprivate Player players;public class Player/屬性系統分析與設計 楊子青K-29關係的強弱系統分析與設計 楊子青K-302.4.4實現化關係(Realization)n表達某一類別的行為是由另一介面類別來描述定義。繼承是應用在關係密切(is a)的類別中,例如卡車繼承車子(Truck is a car)。實現化可用在毫無關係的類別中,例如文書處理及資料備份皆會用到存檔功能,只要將存檔的功能定義在存檔介面中,文書處理和資料備份皆遵循存檔介面的定義,
14、即可避免不一致系統分析與設計 楊子青K-31實現化關係n在Java中,它是用implements來表示public class ClassA implements interfaceA/系統分析與設計 楊子青K-323.物件圖(Object Diagram)n以類別圖為基礎,表現系統在某一時間點上,各類別之物件靜態結構與內部資訊之案例(即各物件之合作關係),但不表達物件間之訊息傳遞等其他資訊。名 稱屬 性操 作系統分析與設計 楊子青K-33物件圖實例住址=高雄市信用卡號=XXXX林瑪麗日期=98/07/01付款=T 總價=1,500001日期=98/08/17付款=F 總價=5,500003數
15、量=20符合狀態=Y單價=10d123數量=1符合狀態=Y單價=1,300d456數量=1符合狀態=Y單價=5,500I000產品名稱=DVD光碟機產品名稱=DVD光碟片產品名稱=19液晶螢幕系統分析與設計 楊子青K-344.物件資料結構塑模 n主要活動包括:找出類別(或物件)及其屬性與操作 確認類別間之關係 建構類別圖與物件圖 n這些活動常以某順序反覆地執行。n原則上,一個使用個案須建立一個類別圖 可從使用個案來分析系統所包含之類別(包含名稱、屬性與操作)、類別間之關係等以建構類別圖。系統分析與設計 楊子青K-354.1 找出類別及其屬性與操作n概念的擷取可以從以下幾個方向來尋找:需求分析文
16、件內容、詞彙表 使用個案文件內容、詞彙表 企業表單,報表 領域相關知識 類似的系統 專家已建立之企業模型系統分析與設計 楊子青K-36名詞分析法n從相關需求文件中,找出名詞或名詞片語的概念(Concepts),這些都是可能的候選類別或屬性:Step 1:從事件表和使用個案的描述中,找出所有的名詞和名詞片語 Step 2:直接觀察、請教領域專家,或從現有系統、流程、表單等資料來源找出更多的名詞和名詞片語 Step 3:將名詞和名詞片語區分為概念或屬性,刪除不相關的概念,剩下的概念就是類別 Step 4:針對每一個概念找出重要的屬性系統分析與設計 楊子青K-37尋找類別實例n線上的電影院購票系統,
17、可能有的概念包含:系統分析與設計 楊子青K-38尋找類別實例n線上音樂CD購物系統,可能的概念包含:系統分析與設計 楊子青K-39分辨類別與屬性的原則n如果可以使用單一值的字串或數值來表示,就表示它是屬性,否則可能是類別 例如【管理者】名詞代表姓名和薪水等多種資訊,不可能使用單一值來表示,所以它是概念;而管理者【姓名】是單一值的字串,所以是屬性。n如果找出的概念,可以儲存資訊或提供服務,它多半是類別,而不是屬性 例如【車輛】名詞可以提供開車服務,所以它是類別。n當無法明確區分概念或屬性,或仍有些疑慮時,先將它視為概念,建立成類別。系統分析與設計 楊子青K-40類別與屬性實例nATM自動櫃員機系
18、統【提款】使用案例,可能的概念包含:屬性系統分析與設計 楊子青K-41確認操作n操作是描述類別的主要行為或責任。n若使用個案之情節是以事件條列式描述,採用(主詞)動詞受詞的方式,且條列中之主詞或受詞是類別,則其中的動詞就可能是類別之操作。n原則上,類別圖之操作描述,主要描述系統之行為,盡量避免描述其細部之程式邏輯 因為這些程式邏輯在設計階段經常會再修改,因此類別圖之操作描述其實可以直接從使用個案之描述中摘錄過來。系統分析與設計 楊子青K-424.2 確認類別間之關係系統分析與設計 楊子青K-43確認類別間之關係準則1.某一類別會用到其他類別,且被使用類別的改變可能會影響使用它的類別,則這兩類別
19、間可能有相依關係相依關係2.某一類別(稱子類別)僅具有另一類別(稱父類別)之某些特定性質,例如屬性與操作,則兩類別間可能有一般化關係一般化關係。3.某一類別之物件知道另一類別之物件的存在,或一類別之物件使用到另一類別之物件的服務,但並未擁有此服務或訊息(或彼此間有訊息之溝通),則這兩類別間可能有關聯關係關聯關係。系統分析與設計 楊子青K-44確認類別間之關係準則4.關聯關係中,若某一方由另一方聚集而成,則兩者間可能為聚集聚集或組合組合的關聯關係。5.關聯關係中,若兩類別間的關係為多對多關係則需於關聯上建立關聯類別關聯類別,由兩類別中找出需由兩類別之資料共同唯一決定的屬性作為關聯類別的屬性。6.
20、若某一類別之行為是由另一類別來描述,則這兩類別間可能建立實現化關係實現化關係。系統分析與設計 楊子青K-454.3 繪製類別圖n可分為繪製各使用個案之類別圖、總類別圖兩部分。先以一個使用個案為單位,找出該使用個案之類別、屬性與操作後,建構各使用個案之類別圖 最後再整合各使用個案中類別、屬性和操作以及類別間關係之資訊,建構總類別圖。系統分析與設計 楊子青K-46繪製類別圖n然而一個類別可參與一至多個使用個案,且同一類別在不同使用個案可能有不同的特徵或行為。可採用類別與使用個案對照表將該類別分散在不同使用個案的屬性與操作彙整在一起:系統分析與設計 楊子青K-47實例:新增訂購項目使用個案之類別圖系
21、統分析與設計 楊子青K-48修改訂購項目使用個案之類別圖系統分析與設計 楊子青K-49刪除訂購項目使用個案之類別圖系統分析與設計 楊子青K-50取消訂購項目使用個案之類別圖系統分析與設計 楊子青K-51確認採購訂單使用個案之類別圖系統分析與設計 楊子青K-52便當王公司網路訂購系統之彙總類別圖系統分析與設計 楊子青K-53物件圖繪製系統分析與設計 楊子青K-54結論n物件結構塑模是物件導向系統分析與設計過程中很重要的一環 主要應用類別圖與物件圖來表達一個系統類別間之靜態結構關係及類別內部之屬性與操作。n基本上,進行物件結構塑模時,每個使用個案須建立一個類別圖,當每個使用個案類別圖完成後,需將各類別圖整合成一個完整的彙總類別圖。