物件資料結(jié)構(gòu)塑模課件_第1頁(yè)
物件資料結(jié)構(gòu)塑模課件_第2頁(yè)
物件資料結(jié)構(gòu)塑模課件_第3頁(yè)
物件資料結(jié)構(gòu)塑模課件_第4頁(yè)
物件資料結(jié)構(gòu)塑模課件_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

K、物件資料結(jié)構(gòu)塑模

~類別圖與物件圖類別類別圖執(zhí)行、實(shí)作觀點(diǎn)的類別種類能見度(Visibility)類別間之關(guān)係相依一般化關(guān)聯(lián)實(shí)現(xiàn)化物件圖物件資料結(jié)構(gòu)塑模1K、物件資料結(jié)構(gòu)塑模

~類別圖與物件圖類別11.類別(Class)一群相關(guān)物件的定義、描述或樣版類別具有名稱、屬性與操作,同一類別之物件具有相同屬性與操作類別封裝了屬性及操作21.類別(Class)一群相關(guān)物件的定義、描述或樣版2類別與物件的關(guān)係類別(Class):物件的設(shè)計(jì)藍(lán)圖物件(Object):根據(jù)類別所建造出來的實(shí)體(Instance)物件導(dǎo)向程式設(shè)計(jì),以class表現(xiàn)真實(shí)世界的物品classCustomer{StringUser=“Robert”;StringPass=“1234”;functionLogin(User,Pass){ ……}};Robert=newCustomerPeter=newCustomerLisa=newCustomer物件類別3類別與物件的關(guān)係類別(Class):物件的設(shè)計(jì)藍(lán)圖class類別圖與物件圖類別是物件導(dǎo)向軟體系統(tǒng)的核心類別圖(ClassDiagram)物件導(dǎo)向的資料結(jié)構(gòu)塑模工具類似傳統(tǒng)資料庫(kù)的ERD,但是ERD是針對(duì)資料來做設(shè)計(jì),並非以物件導(dǎo)向的觀點(diǎn)來設(shè)計(jì)描述軟體系統(tǒng)靜態(tài)結(jié)構(gòu)的類別和類別關(guān)係物件圖(ObjectDiagram)是類別圖的實(shí)例(Instances),用於描述一系統(tǒng)於某時(shí)間點(diǎn)的靜態(tài)結(jié)構(gòu)一棟房子的藍(lán)圖就好比是類別;而依據(jù)藍(lán)圖所蓋出的房子就是實(shí)例。由類別所建構(gòu)出來的實(shí)例稱為物件4類別圖與物件圖類別是物件導(dǎo)向軟體系統(tǒng)的核心42.類別圖實(shí)例52.類別圖實(shí)例5實(shí)例:ATM自動(dòng)櫃員機(jī)系統(tǒng)的

類別圖6實(shí)例:ATM自動(dòng)櫃員機(jī)系統(tǒng)的

類別圖62.1執(zhí)行觀點(diǎn)的類別種類永存類別(PersistentClass)─當(dāng)程式執(zhí)行後,該物件之資料需被儲(chǔ)存在資料庫(kù)者暫存類別(TransientClass)─當(dāng)程式執(zhí)行後,該物件之資料不需被儲(chǔ)存在資料庫(kù)且該物件會(huì)被刪除者72.1執(zhí)行觀點(diǎn)的類別種類永存類別(PersistentC2.2實(shí)作觀點(diǎn)的類別種類實(shí)體類別(EntityClass)以企業(yè)的領(lǐng)域術(shù)語(yǔ)命名,通常表示使用個(gè)案完成後仍需儲(chǔ)存在資料庫(kù)中的資料(永存類別)。介面類別(BoundaryClass)也稱邊界類別,包含表單、報(bào)表、硬體介面以及其他和系統(tǒng)溝通的介面。程式執(zhí)行完畢後,介面類別之物件都將被刪除(暫存類別)??刂祁悇e(ControlClass)屬於暫存類別,負(fù)責(zé)協(xié)調(diào)其他類別的工作,傳送訊息給其他類別,或是將工作指派給其他類別。一個(gè)使用個(gè)案至少需搭配一個(gè)控制類別,藉由控制類別來控制使用個(gè)案中各項(xiàng)事件的發(fā)生順序。82.2實(shí)作觀點(diǎn)的類別種類實(shí)體類別(EntityClass2.3能見度(Visibility)物件導(dǎo)向所提供的封裝機(jī)制公共的(Public):所有的物件都可以存取與設(shè)定它的值保護(hù)的(Protected):只有子類別可以存取與設(shè)定它的值類別庫(kù)(Package):只有相同類別庫(kù)之類別可以存取與設(shè)定它的值私有的(Private):只屬於它自己,任何其他的類別都不可以存取它92.3能見度(Visibility)物件導(dǎo)向所提供的封裝機(jī)2.4類別間之關(guān)係對(duì)於領(lǐng)域中的問題,會(huì)藉由許多的物件一起合作以提供解答。因此,塑模類別之間的關(guān)係是類別圖很重要的工作。102.4類別間之關(guān)係對(duì)於領(lǐng)域中的問題,會(huì)藉由許多的物件一起合2.4.1相依關(guān)係(Dependency)是一種「使用」的關(guān)係表示一個(gè)類別會(huì)用到其他類別,且被使用之類別的改變可能會(huì)影響使用它的類別,但反之則不必然。以虛線箭頭由使用類別指向被使用類別,如下圖為ClassA相依於ClassB112.4.1相依關(guān)係(Dependency)是一種「使用」的相依關(guān)係importB;publicclassA{publicvoidmethod1(Bb){//...}publicvoidmethod2(){BtempB=newB();//...}}12相依關(guān)係importB;12相依關(guān)係實(shí)例Window(視窗)類別使用Event(事件)類別Event類別的更改會(huì)影響Window類別的操作,即Window類別上的操作行為會(huì)依照Event類別不同的行為而改變。例如滑鼠在Window類別開啟(Open)或移動(dòng)(Move)等按鈕點(diǎn)選事件(Event),會(huì)使此Window類別產(chǎn)生不同的操作行為。13相依關(guān)係實(shí)例Window(視窗)類別使用Event(事件)類2.4.2一般化關(guān)係(Generalization)父類別的所有特徵、性質(zhì)及操作,都會(huì)自動(dòng)被子類別所繼承。子類別不需再去定義它們,就可以自動(dòng)擁有畫法:一條空心三角形的直線,從子類別連接到父類別publicclassParent{//}publicclassChildextendsParent{//}142.4.2一般化關(guān)係(Generalization)父類別一般化關(guān)係實(shí)例15一般化關(guān)係實(shí)例152.4.3關(guān)聯(lián)關(guān)係(Association)代表建立類別之間彼此互通訊息的管道,物件與物件間才可以互相傳遞訊息,完成所需的工作。聯(lián)關(guān)係之表達(dá)符號(hào)為實(shí)線。162.4.3關(guān)聯(lián)關(guān)係(Association)代表建立類別之關(guān)聯(lián)關(guān)係意謂一類別之物件知道另一類別之物件的存在,或用到另一類別之物件的服務(wù),但不是擁有此服務(wù)。例如人扮演車子之駕駛者:一類別之物件(人)知道另一類別之物件(車子)的存在,且(人)使用到(車子)的服務(wù),故人與車子間有關(guān)聯(lián)關(guān)係17關(guān)聯(lián)關(guān)係意謂一類別之物件知道另一類別之物件的存在,或用到另一程式碼看關(guān)聯(lián)關(guān)係例如:航班跟飛機(jī)之間的關(guān)聯(lián)關(guān)係一架飛機(jī)會(huì)有它所屬的指定航班,而一個(gè)航班也會(huì)指派某一架飛機(jī)來飛航。它的對(duì)應(yīng)程式碼則為:publicclassFlight{privateAirPlaneassignedPlane;}publicclassAirPlane{privateFlightassignedFlight;}18程式碼看關(guān)聯(lián)關(guān)係例如:航班跟飛機(jī)之間的關(guān)聯(lián)關(guān)係public關(guān)聯(lián)關(guān)係的互通性(Navigability)關(guān)聯(lián)若沒有箭號(hào),表示雙向關(guān)係若在類別間之關(guān)聯(lián)加上箭頭便表示具有互通性,即可依箭頭方向找到另一端之資訊。例如一個(gè)訂單可有許多訂購(gòu)項(xiàng)目;給定一個(gè)訂單,可以找出訂購(gòu)項(xiàng)目,但訂購(gòu)項(xiàng)目不需要知道它是屬於哪個(gè)訂單。19關(guān)聯(lián)關(guān)係的互通性(Navigability)關(guān)聯(lián)若沒有箭號(hào),關(guān)聯(lián)關(guān)係的名稱關(guān)聯(lián)關(guān)係不一定要命名,但若語(yǔ)意不清,例如人跟車子可以有:人擁有車、人開車、人租車等關(guān)係,可加上名稱20關(guān)聯(lián)關(guān)係的名稱關(guān)聯(lián)關(guān)係不一定要命名,但若語(yǔ)意不清,例如人跟車關(guān)聯(lián)關(guān)係的命名常用的命名方式有兩種:描述關(guān)係的本質(zhì):可用動(dòng)詞或動(dòng)詞片語(yǔ)表達(dá),如「人」駕駛「車子」描述角色:可用名詞或名詞片語(yǔ)表達(dá),例如「人」是「車子」的駕駛?cè)?1關(guān)聯(lián)關(guān)係的命名常用的命名方式有兩種:21關(guān)聯(lián)關(guān)係的多重性(Multiplicity)在一個(gè)關(guān)聯(lián)關(guān)係中,常需表達(dá)有多少物件參與(參與此關(guān)係之物件的數(shù)量),此種資訊與ERD的基數(shù)(Cardinality)表達(dá)相同。名稱表法例子恰好一個(gè)1一個(gè)系有一個(gè)系主任零個(gè)或是更多0?*教師有零個(gè)或是多個(gè)行政工作一個(gè)或是更多1?*學(xué)生主修一個(gè)或是多個(gè)學(xué)位零或是一個(gè)0?1教師有一個(gè)或是零個(gè)計(jì)畫補(bǔ)助指定範(fàn)圍2?4職員一年可以享有兩個(gè)到四個(gè)假期22關(guān)聯(lián)關(guān)係的多重性(Multiplicity)在一個(gè)關(guān)聯(lián)關(guān)係中關(guān)聯(lián)關(guān)係的多重性之實(shí)例假設(shè)一個(gè)學(xué)生可以修1到5門課程;一門課程可能沒有人修(0)或是有很多人修(*);老師可教導(dǎo)一門以上的課程;或是一門課程只有1位老師23關(guān)聯(lián)關(guān)係的多重性之實(shí)例假設(shè)一個(gè)學(xué)生可以修1到5門課程;一門課關(guān)聯(lián)類別若兩個(gè)類別有關(guān)聯(lián)關(guān)係且其基數(shù)為多對(duì)多,則該關(guān)係可能會(huì)有屬性,此屬性以關(guān)聯(lián)類別表示。24關(guān)聯(lián)類別若兩個(gè)類別有關(guān)聯(lián)關(guān)係且其基數(shù)為多對(duì)多,則該關(guān)係可能會(huì)聚集(Aggregation)

與組合(Composition)均是關(guān)聯(lián)關(guān)係的一種特定變異。兩者之相同點(diǎn):描述整體與其組件之關(guān)係is-part-of;hasa;hasparts…均表達(dá)一個(gè)「較大」類別之物件(整體),是由另一些「較小」類別之物件(組件)所組成。25聚集(Aggregation)

與組合(Compositio聚集與組合組合有較強(qiáng)的限制例如組合之整體很強(qiáng)地?fù)碛衅浣M件,當(dāng)整體之物件被複製或刪除,則其所有組件也會(huì)被複製或刪除。亦即組合關(guān)聯(lián)的組件不能單獨(dú)存在,而聚集的組件可單獨(dú)存在。表示方式聚集:以一個(gè)空心的菱形表示整體的一方組合:以一個(gè)實(shí)心的菱形表示整體的一方26聚集與組合組合有較強(qiáng)的限制26聚集與組合實(shí)例一部車子可以有多個(gè)輪胎,雖然輪胎屬於車子,但輪胎也可以單獨(dú)存在→聚集一張發(fā)票擁有多個(gè)發(fā)票項(xiàng)目,但當(dāng)該發(fā)票被刪除時(shí),其所屬的所有發(fā)票項(xiàng)目也須一併刪除,因?yàn)槿魺o該發(fā)票,則其發(fā)票項(xiàng)目就毫無意義→組合車子輪胎有*1(聚集)發(fā)票發(fā)票項(xiàng)目有1(組合)*27聚集與組合實(shí)例一部車子可以有多個(gè)輪胎,雖然輪胎屬於車子,但輪聚集與組合實(shí)例一個(gè)球隊(duì)有許多球員構(gòu)成,球隊(duì)如果解散,球員還可以到別的球隊(duì)打球→聚集一本書包含有很多章節(jié),如果書沒了,章節(jié)也就沒意義了→組合publicclassTeam{privatePlayer[]players;}publicclassPlayer{//屬性}28聚集與組合實(shí)例一個(gè)球隊(duì)有許多球員構(gòu)成,球隊(duì)如果解散,球員還可關(guān)係的強(qiáng)弱29關(guān)係的強(qiáng)弱292.4.4實(shí)現(xiàn)化關(guān)係(Realization)表達(dá)某一類別的行為是由另一介面類別來描述定義?!咐^承」是應(yīng)用在關(guān)係密切(isa)的類別中,例如「卡車」繼承「車子」(Truckisacar)。「實(shí)現(xiàn)化」可用在毫無關(guān)係的類別中,例如「文書處理」及「資料備份」皆會(huì)用到「存檔」功能,只要將存檔的功能定義在「存檔介面」中,「文書處理」和「資料備份」皆遵循「存檔介面」的定義,即可避免不一致302.4.4實(shí)現(xiàn)化關(guān)係(Realization)表達(dá)某一類別的實(shí)現(xiàn)化關(guān)係在Java中,它是用implements來表示publicclassClassAimplementsinterfaceA{ // }31實(shí)現(xiàn)化關(guān)係在Java中,它是用implements來表示pu3.物件圖(ObjectDiagram)以類別圖為基礎(chǔ),表現(xiàn)系統(tǒng)在某一時(shí)間點(diǎn)上,各類別之物件靜態(tài)結(jié)構(gòu)與內(nèi)部資訊之案例(即各物件之合作關(guān)係),但不表達(dá)物件間之訊息傳遞等其他資訊。323.物件圖(ObjectDiagram)以類別圖為基礎(chǔ),表物件圖實(shí)例33物件圖實(shí)例334.物件資料結(jié)構(gòu)塑模主要活動(dòng)包括:找出類別(或物件)及其屬性與操作確認(rèn)類別間之關(guān)係建構(gòu)類別圖與物件圖這些活動(dòng)常以某順序反覆地執(zhí)行。原則上,一個(gè)使用個(gè)案須建立一個(gè)類別圖可從使用個(gè)案來分析系統(tǒng)所包含之類別(包含名稱、屬性與操作)、類別間之關(guān)係等以建構(gòu)類別圖。344.物件資料結(jié)構(gòu)塑模主要活動(dòng)包括:344.1找出類別及其屬性與操作概念的擷取可以從以下幾個(gè)方向來尋找:需求分析文件內(nèi)容、詞彙表使用個(gè)案文件內(nèi)容、詞彙表企業(yè)表單,報(bào)表領(lǐng)域相關(guān)知識(shí)類似的系統(tǒng)專家已建立之企業(yè)模型354.1找出類別及其屬性與操作概念的擷取可以從以下幾個(gè)方向來名詞分析法從相關(guān)需求文件中,找出名詞或名詞片語(yǔ)的概念(Concepts),這些都是可能的候選類別或?qū)傩裕篠tep1:從事件表和使用個(gè)案的描述中,找出所有的名詞和名詞片語(yǔ)Step2:直接觀察、請(qǐng)教領(lǐng)域?qū)<?,或從現(xiàn)有系統(tǒng)、流程、表單等資料來源找出更多的名詞和名詞片語(yǔ)Step3:將名詞和名詞片語(yǔ)區(qū)分為概念或?qū)傩?,刪除不相關(guān)的概念,剩下的概念就是類別Step4:針對(duì)每一個(gè)概念找出重要的屬性36名詞分析法從相關(guān)需求文件中,找出名詞或名詞片語(yǔ)的概念(Con尋找類別實(shí)例線上的電影院購(gòu)票系統(tǒng),可能有的概念包含:37尋找類別實(shí)例線上的電影院購(gòu)票系統(tǒng),可能有的概念包含:37尋找類別實(shí)例線上音樂CD購(gòu)物系統(tǒng),可能的概念包含:38尋找類別實(shí)例線上音樂CD購(gòu)物系統(tǒng),可能的概念包含:38分辨類別與屬性的原則如果可以使用單一值的字串或數(shù)值來表示,就表示它是屬性,否則可能是類別例如【管理者】名詞代表姓名和薪水等多種資訊,不可能使用單一值來表示,所以它是概念;而管理者【姓名】是單一值的字串,所以是屬性。如果找出的概念,可以儲(chǔ)存資訊或提供服務(wù),它多半是類別,而不是屬性例如【車輛】名詞可以提供開車服務(wù),所以它是類別。當(dāng)無法明確區(qū)分概念或?qū)傩裕蛉杂行┮蓱]時(shí),先將它視為概念,建立成類別。39分辨類別與屬性的原則如果可以使用單一值的字串或數(shù)值來表示,就類別與屬性實(shí)例ATM自動(dòng)櫃員機(jī)系統(tǒng)【提款】使用案例,可能的概念包含:屬性40類別與屬性實(shí)例ATM自動(dòng)櫃員機(jī)系統(tǒng)【提款】使用案例,可能的確認(rèn)操作操作是描述類別的主要行為或責(zé)任。若使用個(gè)案之情節(jié)是以事件條列式描述,採(cǎi)用(主詞)+動(dòng)詞+受詞的方式,且條列中之主詞或受詞是類別,則其中的動(dòng)詞就可能是類別之操作。原則上,類別圖之操作描述,主要描述系統(tǒng)之行為,盡量避免描述其細(xì)部之程式邏輯因?yàn)檫@些程式邏輯在設(shè)計(jì)階段經(jīng)常會(huì)再修改,因此類別圖之操作描述其實(shí)可以直接從使用個(gè)案之描述中摘錄過來。41確認(rèn)操作操作是描述類別的主要行為或責(zé)任。414.2確認(rèn)類別間之關(guān)係424.2確認(rèn)類別間之關(guān)係42確認(rèn)類別間之關(guān)係準(zhǔn)則某一類別會(huì)用到其他類別,且被使用類別的改變可能會(huì)影響使用它的類別,則這兩類別間可能有相依關(guān)係某一類別(稱子類別)僅具有另一類別(稱父類別)之某些特定性質(zhì),例如屬性與操作,則兩類別間可能有一般化關(guān)係。某一類別之物件知道另一類別之物件的存在,或一類別之物件使用到另一類別之物件的服務(wù),但並未擁有此服務(wù)或訊息(或彼此間有訊息之溝通),則這兩類別間可能有關(guān)聯(lián)關(guān)係。43確認(rèn)類別間之關(guān)係準(zhǔn)則某一類別會(huì)用到其他類別,且被使用類別的改確認(rèn)類別間之關(guān)係準(zhǔn)則關(guān)聯(lián)關(guān)係中,若某一方由另一方聚集而成,則兩者間可能為聚集或組合的關(guān)聯(lián)關(guān)係。關(guān)聯(lián)關(guān)係中,若兩類別間的關(guān)係為多對(duì)多關(guān)係則需於關(guān)聯(lián)上建立關(guān)聯(lián)類別,由兩類別中找出需由兩類別之資料共同唯一決定的屬性作為關(guān)聯(lián)類別的屬性。若某一類別之行為是由另一類別來描述,則這兩類別間可能建立實(shí)現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論