版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、江蘇大學(xué)計算機(jī)工程系面向?qū)ο蠹夹g(shù)第第3講講 類與對象關(guān)系建模類與對象關(guān)系建模面面向向?qū)ο笙蠹技夹g(shù)術(shù)內(nèi)容提要概念數(shù)據(jù)建模概述概念數(shù)據(jù)建模概述類圖與對象圖類圖與對象圖類的確定類的確定類間關(guān)系確定類間關(guān)系確定建模方法與實例建模方法與實例面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述在完成用例建模之后,便可以進(jìn)行其他系在完成用例建模之后,便可以進(jìn)行其他系統(tǒng)分析活動,而概念數(shù)據(jù)建模是最重要的統(tǒng)分析活動,而概念數(shù)據(jù)建模是最重要的分析活動之一。分析活動之一。概念數(shù)據(jù)建模是對組織數(shù)據(jù)的描繪,它以概念數(shù)據(jù)建模是對組織數(shù)據(jù)的描繪,它以一種獨立于實現(xiàn)的方式說明了數(shù)據(jù)的結(jié)構(gòu)一種獨立于實現(xiàn)的方式說明了數(shù)據(jù)的結(jié)構(gòu)和數(shù)據(jù)之間的
2、相互關(guān)系,為后續(xù)的分析設(shè)和數(shù)據(jù)之間的相互關(guān)系,為后續(xù)的分析設(shè)計提供了基礎(chǔ)。計提供了基礎(chǔ)。面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述概念數(shù)據(jù)建模的過程概念數(shù)據(jù)建模的過程面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述概念數(shù)據(jù)建模在系統(tǒng)分析中的作用概念數(shù)據(jù)建模在系統(tǒng)分析中的作用面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述如何進(jìn)行概念數(shù)據(jù)建模?如何進(jìn)行概念數(shù)據(jù)建模?n必須包括以數(shù)據(jù)為中心的問題和調(diào)查,而不是必須包括以數(shù)據(jù)為中心的問題和調(diào)查,而不是以過程、邏輯或用戶界面為中心,從對業(yè)務(wù)性以過程、邏輯或用戶界面為中心,從對業(yè)務(wù)性質(zhì)的透徹理解導(dǎo)出數(shù)據(jù)模型,也可以通過審查質(zhì)的透徹理解導(dǎo)出數(shù)據(jù)模型,也可以通過審查系統(tǒng)內(nèi)部處
3、理的特定業(yè)務(wù)文檔系統(tǒng)內(nèi)部處理的特定業(yè)務(wù)文檔計算機(jī)顯示、計算機(jī)顯示、報表和業(yè)務(wù)表單來收集。報表和業(yè)務(wù)表單來收集。n開發(fā)準(zhǔn)確而完整的數(shù)據(jù)模型要考慮的問題開發(fā)準(zhǔn)確而完整的數(shù)據(jù)模型要考慮的問題w類:業(yè)務(wù)的主題類:業(yè)務(wù)的主題/客體是什么?什么類型的人、地客體是什么?什么類型的人、地點、事物和材料被用于這個業(yè)務(wù)或者和這個業(yè)務(wù)交點、事物和材料被用于這個業(yè)務(wù)或者和這個業(yè)務(wù)交互?每個對象可能存在多少實例?互?每個對象可能存在多少實例?面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述如何進(jìn)行概念數(shù)據(jù)建模?如何進(jìn)行概念數(shù)據(jù)建模?n開發(fā)準(zhǔn)確而完整的數(shù)據(jù)模型要考慮的問題(續(xù))開發(fā)準(zhǔn)確而完整的數(shù)據(jù)模型要考慮的問題(續(xù))w屬性:需
4、要維護(hù)關(guān)于對象的什么數(shù)據(jù)?什么特征描述各個對屬性:需要維護(hù)關(guān)于對象的什么數(shù)據(jù)?什么特征描述各個對象?對象在什么基礎(chǔ)上被引用、選擇、限定、整理和分類?象?對象在什么基礎(chǔ)上被引用、選擇、限定、整理和分類?對象的一個特性能有多少個值?對給定的一個對象,特性是對象的一個特性能有多少個值?對給定的一個對象,特性是必須的還是可選的?必須的還是可選的?w標(biāo)識符:什么獨有特性區(qū)分相同類型的各個對象?這個區(qū)別標(biāo)識符:什么獨有特性區(qū)分相同類型的各個對象?這個區(qū)別特性是隨著時間變化還是持久的?即使在我們知道一個對象特性是隨著時間變化還是持久的?即使在我們知道一個對象存在的時候,該對象的這個特性可以缺少嗎?對象可以通
5、過存在的時候,該對象的這個特性可以缺少嗎?對象可以通過一個數(shù)字序列標(biāo)識嗎?一個數(shù)字序列標(biāo)識嗎?w關(guān)聯(lián)、聚合和組合:對象之間存在什么關(guān)系?一個關(guān)系是部關(guān)聯(lián)、聚合和組合:對象之間存在什么關(guān)系?一個關(guān)系是部分整體的那種嗎?如果是,一個對象可以在沒有另一個時存分整體的那種嗎?如果是,一個對象可以在沒有另一個時存在嗎?一個關(guān)系中涉及了多個對象嗎?關(guān)系是同類對象之間在嗎?一個關(guān)系中涉及了多個對象嗎?關(guān)系是同類對象之間的嗎?參與一個關(guān)系的對象的基數(shù)是什么?的嗎?參與一個關(guān)系的對象的基數(shù)是什么?面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述如何進(jìn)行概念數(shù)據(jù)建模?如何進(jìn)行概念數(shù)據(jù)建模?n開發(fā)準(zhǔn)確而完整的數(shù)據(jù)模型要考慮
6、的問題(續(xù))開發(fā)準(zhǔn)確而完整的數(shù)據(jù)模型要考慮的問題(續(xù))w泛化:一個對象是泛化:一個對象是“一種一種”或另一個對象的或另一個對象的“一種一種”嗎?對象形成一個比較一般到比較特殊的層次嗎?嗎?對象形成一個比較一般到比較特殊的層次嗎?面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n加熱器,開關(guān)加熱器,開關(guān)n保溫盤,開關(guān)保溫盤,開關(guān)n保溫盤傳感器保溫盤傳感器n加熱傳感器加熱傳感器n沖煮按鈕沖煮按鈕n減壓閥門減壓閥門面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n基本接口基本接口namespace coffeemaker pub
7、lic enum warmerplatestatus /保溫盤 warmer_empty,pot_empty,pot_not_empty public enum boilerstatus /加熱器 empty,not_empty public enum brewbuttonstatus /沖煮按鈕 pushed,not_pushed public enum warmerstate /保溫 on,off public enum indicatorstate /指示燈 on,off public enum reliefvalvestate /減壓閥 open,closed 面面向向?qū)ο笙蠹技夹g(shù)術(shù)
8、概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n基本接口基本接口namespace coffeemaker public interface coffeemakerapi warmerplatestatus getwarmerplatestatus(); boilerstatus getboilerstatus(); brewbuttonstatus getbrewbuttonstatus(); void setboilerstate(boilerstate s); void setwarmerstate(warmerstate s); void setindicatorstat
9、e(indicatorstate s); void setreliefvalvelstate(reliefvalvelstate s); 面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n類設(shè)計類設(shè)計面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n存在問題存在問題w如何實現(xiàn)這些類,只是一個函數(shù)調(diào)用的轉(zhuǎn)換器,水蒸氣類如何實現(xiàn)這些類,只是一個函數(shù)調(diào)用的轉(zhuǎn)換器,水蒸氣類public class lightpublic void on()coffeemaker.api.setindicatorstate(indicatorsta
10、te.on);public void off()coffeemaker.api.setindicatorstate(indicatorstate.off);面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n存在問題存在問題w虛構(gòu)的抽象虛構(gòu)的抽象public interface heatervoid turnon();void turnoff();public interface sensorint sensor();面面向向?qū)ο笙蠹技夹g(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n如何改進(jìn)如何改進(jìn):根據(jù)功能抽象根據(jù)功能抽象面面向向?qū)ο笙?/p>
11、技技術(shù)術(shù)概念數(shù)據(jù)建模概述mark咖啡機(jī)控制軟件設(shè)計咖啡機(jī)控制軟件設(shè)計n如何改進(jìn)如何改進(jìn):追加用戶界面追加用戶界面面面向向?qū)ο笙蠹技夹g(shù)術(shù)類圖的概念對象是指與應(yīng)用問題有一定關(guān)聯(lián)的某個事對象是指與應(yīng)用問題有一定關(guān)聯(lián)的某個事物,或者說是對某個事物的抽象描述。物,或者說是對某個事物的抽象描述。類是對一類具有相同特性的對象的描述類是對一類具有相同特性的對象的描述,或者說是類屬事物或系統(tǒng)的表示形式。類或者說是類屬事物或系統(tǒng)的表示形式。類可以具有狀態(tài)(通過使用自己的特性數(shù)據(jù)可以具有狀態(tài)(通過使用自己的特性數(shù)據(jù)來描述),并且可以提供功能(通過使用來描述),并且可以提供功能(通過使用其操作或方法來表示)其操作或
12、方法來表示)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類圖的概念類圖描述類、接口、協(xié)作及它們之間關(guān)系類圖描述類、接口、協(xié)作及它們之間關(guān)系的圖。的圖。類圖顯示系統(tǒng)中各個類的靜態(tài)結(jié)構(gòu)。類圖顯示系統(tǒng)中各個類的靜態(tài)結(jié)構(gòu)。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類圖的概念類圖中的圖示元素:類圖中的圖示元素:n類(類(class)n接口(接口(interface)n協(xié)作(協(xié)作(collaboration)n依賴關(guān)系(依賴關(guān)系(dependency)n泛化關(guān)系(泛化關(guān)系(generalization)n關(guān)聯(lián)關(guān)系(關(guān)聯(lián)關(guān)系(association)n實現(xiàn)關(guān)系(實現(xiàn)關(guān)系(realization)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的
13、核心。面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。對一組具有相同屬性、操作、關(guān)系和語義對一組具有相同屬性、操作、關(guān)系和語義的對象的抽象。的對象的抽象。包括名稱部分、屬性部分和操作部分。包括名稱部分、屬性部分和操作部分。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類dialer類類public class dialer private string digits; private int ndigits; public void digit(int n); protected bool recorddigit(int n);面面向向?qū)ο笙蠹技夹g(shù)術(shù)類類的名稱類的名稱n應(yīng)該來自系統(tǒng)的問題域。應(yīng)該來自系統(tǒng)的問題域。 n應(yīng)該是一個名詞
14、,且不應(yīng)該有前綴或后綴。應(yīng)該是一個名詞,且不應(yīng)該有前綴或后綴。 n分為簡單名稱和路徑名稱。分為簡單名稱和路徑名稱。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類屬性屬性n描述了類在軟件系統(tǒng)中代表的事物(即對象)描述了類在軟件系統(tǒng)中代表的事物(即對象)所具備的特性。所具備的特性。 n類可以有任意數(shù)目的屬性,也可以沒有屬性。類可以有任意數(shù)目的屬性,也可以沒有屬性。 n在在uml中,類屬性的語法為:中,類屬性的語法為:可見性可見性 屬性名屬性名 :類型類型 =初始值初始值 屬屬性字符串性字符串面面向向?qū)ο笙蠹技夹g(shù)術(shù)類屬性屬性n可見性可見性w公有(公有(public) “”w私有(私有(private)“”w受保護(hù)(
15、受保護(hù)(protected)“” 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類屬性屬性n屬性名屬性名w每個屬性都必須有一個名字以區(qū)別于類中的其他屬每個屬性都必須有一個名字以區(qū)別于類中的其他屬性。性。 w屬性名由描述所屬類的特性的名詞或名詞短語組成。屬性名由描述所屬類的特性的名詞或名詞短語組成。 w單字屬性名小寫,如果屬性名包含了多個單詞,這單字屬性名小寫,如果屬性名包含了多個單詞,這些單詞要合并,且除了第一個單詞外其余單詞的首些單詞要合并,且除了第一個單詞外其余單詞的首字母要大寫。字母要大寫。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類屬性屬性n類型類型w簡單類型:簡單類型:n整型整型n布爾型布爾型n實型實型n枚舉類型枚舉類型
16、w系統(tǒng)中的其他類系統(tǒng)中的其他類 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類屬性屬性n初始值初始值w目的:目的:n保護(hù)系統(tǒng)的完整性,防止漏掉取值或被非法的值破壞系統(tǒng)保護(hù)系統(tǒng)的完整性,防止漏掉取值或被非法的值破壞系統(tǒng)的完整性。的完整性。n為用戶提供易用性。為用戶提供易用性。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類屬性屬性n屬性字符串屬性字符串w指定關(guān)于屬性的其他信息,往往是約束條件。指定關(guān)于屬性的其他信息,往往是約束條件。w任何希望添加在屬性定義字符串值但又沒有合適地任何希望添加在屬性定義字符串值但又沒有合適地方可以加入的規(guī)則,都可以放在屬性字符串里。方可以加入的規(guī)則,都可以放在屬性字符串里。 n實例實例name:strin
17、g readonly面面向向?qū)ο笙蠹技夹g(shù)術(shù)類操作操作n對類的對象所能做的事務(wù)的抽象。對類的對象所能做的事務(wù)的抽象。n一個類可以有任意數(shù)量的操作或者根本沒有操一個類可以有任意數(shù)量的操作或者根本沒有操作。作。 n返回類型、名稱和參數(shù)一起被稱為操作簽名。返回類型、名稱和參數(shù)一起被稱為操作簽名。 n在在uml中,類操作的語法為:中,類操作的語法為:可見性可見性 操作名操作名 (參數(shù)表參數(shù)表) :返回類型返回類型 屬性字符串屬性字符串面面向向?qū)ο笙蠹技夹g(shù)術(shù)類操作操作n可見性可見性w公有(公有(public) “”w私有(私有(private) “”w受保護(hù)(受保護(hù)(protected) “”w包內(nèi)公
18、有(包內(nèi)公有(package) “”面面向向?qū)ο笙蠹技夹g(shù)術(shù)類操作操作n操作名操作名w用來描述所屬類的行為的動詞或動詞短語。用來描述所屬類的行為的動詞或動詞短語。w單字操作名小寫,如果操作名包含了多個單詞,這單字操作名小寫,如果操作名包含了多個單詞,這些單詞要合并,并且除了第一個單詞外其余單詞的些單詞要合并,并且除了第一個單詞外其余單詞的首字母要大寫。首字母要大寫。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類操作操作n參數(shù)表參數(shù)表w一些按順序排列的屬性定義了操作的輸入。一些按順序排列的屬性定義了操作的輸入。 w是可選的,即操作不一定必須有參數(shù)才行。是可選的,即操作不一定必須有參數(shù)才行。 w定義方式:定義方式:
19、“方向方向 名稱:類型默認(rèn)值名稱:類型默認(rèn)值”。w若存在多個參數(shù),將各個參數(shù)用逗號隔開。若存在多個參數(shù),將各個參數(shù)用逗號隔開。w參數(shù)可以具有默認(rèn)值。參數(shù)可以具有默認(rèn)值。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類操作操作n返回類型返回類型w是可選的,即操作不一定必須有返回類型。是可選的,即操作不一定必須有返回類型。 w絕大部分編程語言只支持一個返回值。絕大部分編程語言只支持一個返回值。 w具體的編程語言一般要加一個關(guān)鍵字具體的編程語言一般要加一個關(guān)鍵字void來表示無來表示無返回值。返回值。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類操作操作n屬性字符串屬性字符串w在操作的定義中加入一些除了預(yù)定義元素之外的信在操作的定義中加入
20、一些除了預(yù)定義元素之外的信息。息。 w往往也是定義約束往往也是定義約束面面向向?qū)ο笙蠹技夹g(shù)術(shù)類職責(zé)職責(zé)n類或其他元素的契約或義務(wù)。類或其他元素的契約或義務(wù)。 n以自由形式的文本形式存在,即非形式化的方以自由形式的文本形式存在,即非形式化的方法來描述。法來描述。 職責(zé)內(nèi)容職責(zé)內(nèi)容面面向向?qū)ο笙蠹技夹g(shù)術(shù)類約束約束n指定了類所要滿足的一個或多個規(guī)則。指定了類所要滿足的一個或多個規(guī)則。 n形式化的方法。形式化的方法。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類注釋注釋 n注釋可以包含圖形也可以包含文本。注釋可以包含圖形也可以包含文本。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類范例范例面面向向?qū)ο笙蠹技夹g(shù)術(shù)接口與抽象類接口接口
21、n在沒有給出對象的實現(xiàn)和狀態(tài)的情況下對對象在沒有給出對象的實現(xiàn)和狀態(tài)的情況下對對象行為的描述。行為的描述。 n包含操作但不包含屬性包含操作但不包含屬性。n一個類可以實現(xiàn)一個或多個接口一個類可以實現(xiàn)一個或多個接口。面面向向?qū)ο笙蠹技夹g(shù)術(shù)接口與抽象類接口類:接口類:面面向向?qū)ο笙蠹技夹g(shù)術(shù)接口與抽象類抽象類抽象類n是一種不能夠被直接實例化的類,也就是說不能夠創(chuàng)是一種不能夠被直接實例化的類,也就是說不能夠創(chuàng)建一個屬于抽象類的對象建一個屬于抽象類的對象面面向向?qū)ο笙蠹技夹g(shù)術(shù)接口與抽象類抽象類抽象類n實例實例面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 依賴關(guān)系依賴關(guān)系泛化關(guān)系泛化關(guān)系關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系實現(xiàn)關(guān)
22、系實現(xiàn)關(guān)系面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 依賴關(guān)系依賴關(guān)系n表示兩個或多個模型元素之間語義上的關(guān)系。表示兩個或多個模型元素之間語義上的關(guān)系。 n客戶以某種形式依賴于提供者??蛻粢阅撤N形式依賴于提供者。 n關(guān)聯(lián)、實現(xiàn)和泛化都是依賴關(guān)系。關(guān)聯(lián)、實現(xiàn)和泛化都是依賴關(guān)系。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 依賴關(guān)系依賴關(guān)系n如果兩個類的對象之間存在著下面的情形,且兩個類如果兩個類的對象之間存在著下面的情形,且兩個類之間不存在結(jié)構(gòu)方面的聯(lián)系(例如:供應(yīng)類以成員變之間不存在結(jié)構(gòu)方面的聯(lián)系(例如:供應(yīng)類以成員變量的形式作為客戶類的一部分),就可以建模成為具量的形式作為客戶類的一部分),就可以建模成
23、為具有依賴關(guān)系,這些情形是:有依賴關(guān)系,這些情形是: (1)客戶類訪問定義在供應(yīng)類內(nèi)部的值)客戶類訪問定義在供應(yīng)類內(nèi)部的值(常量或常量或 變量變量)。 (2)客戶類的操作啟動了定義在供應(yīng)類內(nèi)的操作。)客戶類的操作啟動了定義在供應(yīng)類內(nèi)的操作。 (3)客戶類的返回類或參數(shù)是供應(yīng)類的實例。)客戶類的返回類或參數(shù)是供應(yīng)類的實例。n序列圖中的兩個對象,如果存在著消息的發(fā)送。且它序列圖中的兩個對象,如果存在著消息的發(fā)送。且它們之間又沒有結(jié)構(gòu)方面的連接,就可以在類圖上用依們之間又沒有結(jié)構(gòu)方面的連接,就可以在類圖上用依賴關(guān)系對它們建模。賴關(guān)系對它們建模。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 泛化關(guān)系泛化關(guān)系n
24、存在于一般元素和特殊元素間的分類關(guān)系。存在于一般元素和特殊元素間的分類關(guān)系。 n可以用于類、用例以及其他模型元素??梢杂糜陬?、用例以及其他模型元素。 n描述了一種描述了一種“is a kind of” 的關(guān)系。的關(guān)系。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 泛化關(guān)系泛化關(guān)系n范例范例public class employeepublic class salariedemployee:employee面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 泛化關(guān)系泛化關(guān)系n泛化主要用途:泛化主要用途:w多態(tài)多態(tài) :后代的實例可以用于任何祖先被聲明使用的:后代的實例可以用于任何祖先被聲明使用的地方,從而使多態(tài)操作成為
25、可能,即操作的實現(xiàn)方地方,從而使多態(tài)操作成為可能,即操作的實現(xiàn)方法由實際對象的類來確定法由實際對象的類來確定w繼承繼承 :共享祖先描述,并允許對元素進(jìn)行增量描述:共享祖先描述,并允許對元素進(jìn)行增量描述n單繼承單繼承n多重繼承多重繼承面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 泛化關(guān)系泛化關(guān)系n泛化主要用途:泛化主要用途:面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 泛化關(guān)系泛化關(guān)系n泛化主要用途:泛化主要用途:面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 泛化關(guān)系泛化關(guān)系n泛化主要用途:泛化主要用途:基類shapeoriginmove()resize()display()rectanglecorner : poin
26、tcircleradius : floatpolygonpoints : listdisplay()square泛化關(guān)系葉子類面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n一種結(jié)構(gòu)關(guān)系。一種結(jié)構(gòu)關(guān)系。 n指明事物的對象之間的聯(lián)系。指明事物的對象之間的聯(lián)系。n最普通的關(guān)聯(lián)是二元關(guān)聯(lián)。最普通的關(guān)聯(lián)是二元關(guān)聯(lián)。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n范例范例 public class phoneprivate button itsbuttons15面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n關(guān)聯(lián)關(guān)系并不是僅僅一個抽象的概念,它在實關(guān)聯(lián)關(guān)系并不是僅僅一個抽象的概
27、念,它在實現(xiàn)為程序設(shè)計語言源代碼時,會有對應(yīng)的映射。現(xiàn)為程序設(shè)計語言源代碼時,會有對應(yīng)的映射。n通常,當(dāng)把兩個有關(guān)聯(lián)關(guān)系的類映射為特定的通常,當(dāng)把兩個有關(guān)聯(lián)關(guān)系的類映射為特定的程序設(shè)計語言代碼時,每一個類都會被定義為程序設(shè)計語言代碼時,每一個類都會被定義為一個可以引用對方的類的對象的成員變量,這一個可以引用對方的類的對象的成員變量,這個成員變量視對關(guān)聯(lián)關(guān)系的修飾的不同,可能個成員變量視對關(guān)聯(lián)關(guān)系的修飾的不同,可能會采取不同的形式,如:它可以指向?qū)Ψ降念悤扇〔煌男问剑纾核梢灾赶驅(qū)Ψ降念惖闹羔?,也可能是對方類的對象。的指針,也可能是對方類的對象。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)
28、系關(guān)聯(lián)關(guān)系面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n名稱(名稱(name)n角色(角色(role)n多重性(多重性(multiplicity)n聚合關(guān)系(聚合關(guān)系(aggregation)n組合關(guān)系(組合關(guān)系(composition)n導(dǎo)航性(導(dǎo)航性(navigation)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n名稱(名稱(name)w使用一個動詞或動詞短語來命名關(guān)聯(lián)。使用一個動詞或動詞短語來命名關(guān)聯(lián)。w清晰而簡潔地說明對象間關(guān)系。清晰而簡潔地說明對象間關(guān)系。w關(guān)聯(lián)的名稱并不是必需的。關(guān)聯(lián)的名稱并不是必需的。 w可以前綴或后綴一個指引閱讀方向的方向指示符,可以前綴
29、或后綴一個指引閱讀方向的方向指示符,以消除歧義。以消除歧義。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n角色(角色(role)w關(guān)聯(lián)關(guān)系中一個類對另一個類所表現(xiàn)出來的職責(zé)。關(guān)聯(lián)關(guān)系中一個類對另一個類所表現(xiàn)出來的職責(zé)。 w角色的名稱應(yīng)該是名詞或名詞短語,以解釋對象是角色的名稱應(yīng)該是名詞或名詞短語,以解釋對象是如何參與關(guān)系的。如何參與關(guān)系的。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n多重性(多重性(multiplicity)w指有多少對象可以參與該關(guān)聯(lián)。指有多少對象可以參與該關(guān)聯(lián)。w可以表達(dá)一個取值范圍、特定值、無限定的范圍或可以表達(dá)一個取值范圍、特定值、無限定的范圍或
30、一組離散值。一組離散值。 w格式:格式:“minimum.maximum” (均為(均為int型)。型)。w賦給一個端點的多重性表示該端點可以有多少個對賦給一個端點的多重性表示該端點可以有多少個對象與另一個端點的一個對象關(guān)聯(lián)。象與另一個端點的一個對象關(guān)聯(lián)。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n聚合關(guān)系(聚合關(guān)系(aggregation)w一種特殊類型的關(guān)聯(lián)。一種特殊類型的關(guān)聯(lián)。 w表示整體與部分關(guān)系的關(guān)聯(lián)。表示整體與部分關(guān)系的關(guān)聯(lián)。 w描述了描述了“has a”的關(guān)系。的關(guān)系。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n組合關(guān)系(組合關(guān)系(compositio
31、n)w聚合關(guān)系中的一種特殊情況,是更強(qiáng)形式的聚合,聚合關(guān)系中的一種特殊情況,是更強(qiáng)形式的聚合,又稱強(qiáng)聚合。又稱強(qiáng)聚合。w成員對象的生命周期取決于聚合的生命周期。成員對象的生命周期取決于聚合的生命周期。 w聚合不僅控制著成員對象的行為,而且控制著成員聚合不僅控制著成員對象的行為,而且控制著成員對象的創(chuàng)建和解構(gòu)。對象的創(chuàng)建和解構(gòu)。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n導(dǎo)航性(導(dǎo)航性(navigation)w描述一個對象通過鏈進(jìn)行導(dǎo)航訪問另一個對象。描述一個對象通過鏈進(jìn)行導(dǎo)航訪問另一個對象。w使用導(dǎo)航性可以降低類間的耦合度。使用導(dǎo)航性可以降低類間的耦合度。 w包括:單向關(guān)聯(lián)和雙向
32、關(guān)聯(lián)。包括:單向關(guān)聯(lián)和雙向關(guān)聯(lián)。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系inventorypartproduct0.*110.*flywheelcogafterburnerstickermanufacturerepairassemblerrepairmanfccinventoryclerk2.*11.31maintained bybuilt byrepaired by面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n關(guān)聯(lián)類關(guān)聯(lián)類:在有些問題中,關(guān)聯(lián)關(guān)系不僅需要一個在有些問題中,關(guān)聯(lián)關(guān)系不僅需要一個名稱、需要定義相關(guān)對象的
33、角色及其參與這些名稱、需要定義相關(guān)對象的角色及其參與這些角色的對象數(shù)量(多重性),而且還需要設(shè)置角色的對象數(shù)量(多重性),而且還需要設(shè)置一些屬性、操作以及其它特性,此時一般需要一些屬性、操作以及其它特性,此時一般需要引入關(guān)聯(lián)類。引入關(guān)聯(lián)類。人公司雇用period:datarange*0.1雇主關(guān)聯(lián)類面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系n關(guān)聯(lián)類關(guān)聯(lián)類面面向向?qū)ο笙蠹技夹g(shù)術(shù)類之間的關(guān)系 實現(xiàn)關(guān)系實現(xiàn)關(guān)系n規(guī)格說明和其實現(xiàn)之間的關(guān)系。規(guī)格說明和其實現(xiàn)之間的關(guān)系。 n客戶必須至少支持提供者的所有操作。客戶必須至少支持提供者的所有操作。 n泛化和實現(xiàn)都可以將一般描述與具體描述聯(lián)系泛化
34、和實現(xiàn)都可以將一般描述與具體描述聯(lián)系起來:起來:w泛化將同一語義層上的元素連接起來,并且通常在泛化將同一語義層上的元素連接起來,并且通常在同一模型內(nèi)。同一模型內(nèi)。w實現(xiàn)將不同語義層內(nèi)的元素連接起來,并且通常建實現(xiàn)將不同語義層內(nèi)的元素連接起來,并且通常建立在不同的模型內(nèi)。立在不同的模型內(nèi)。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類類圖實例類圖實例面面向向?qū)ο笙蠹技夹g(shù)術(shù)類類圖說明類圖說明n標(biāo)識符:是一個屬性或?qū)傩越M合,它被選擇用標(biāo)識符:是一個屬性或?qū)傩越M合,它被選擇用作一個類的唯一特征。作一個類的唯一特征。n多值屬性:可以具有多于一個的值,在概念設(shè)多值屬性:可以具有多于一個的值,在概念設(shè)計期間處理多值屬性有兩種
35、方法:多值構(gòu)造型;計期間處理多值屬性有兩種方法:多值構(gòu)造型;為多值屬性創(chuàng)建一個類;為多值屬性創(chuàng)建一個類;n組合屬性:具有多個子屬性的屬性,例如地址組合屬性:具有多個子屬性的屬性,例如地址面面向向?qū)ο笙蠹技夹g(shù)術(shù)類類圖說明類圖說明面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類如何發(fā)現(xiàn)類如何發(fā)現(xiàn)類n類的種類:類的種類:w實體類實體類w邊界類邊界類w控制類控制類n實體類:實體類的判別特征是它的對象持有應(yīng)實體類:實體類的判別特征是它的對象持有應(yīng)用的大部分?jǐn)?shù)據(jù),一般實體類的對象是持久的,用的大部分?jǐn)?shù)據(jù),一般實體類的對象是持久的,也就是說它們的存在超過一個會話的生命期,也就是說它們的存在超過一個會話的生命期,或者有時存在
36、于系統(tǒng)的整個生命期間?;蛘哂袝r存在于系統(tǒng)的整個生命期間。面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類如何發(fā)現(xiàn)類如何發(fā)現(xiàn)類n邊界類:參與者用邊界類的對象與系統(tǒng)交互,邊界類:參與者用邊界類的對象與系統(tǒng)交互,例如表單、對話框、菜單和其他交互屏幕等,例如表單、對話框、菜單和其他交互屏幕等,邊界類還可以用于建立與另一個系統(tǒng)的通信,邊界類還可以用于建立與另一個系統(tǒng)的通信,例如遺留系統(tǒng)。因此邊界類將系統(tǒng)與系統(tǒng)外部例如遺留系統(tǒng)。因此邊界類將系統(tǒng)與系統(tǒng)外部的變化隔離開。的變化隔離開。n控制類:協(xié)調(diào)任務(wù)并捕捉用例中的主要應(yīng)用邏控制類:協(xié)調(diào)任務(wù)并捕捉用例中的主要應(yīng)用邏輯。輯。面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類如何發(fā)現(xiàn)類如何發(fā)現(xiàn)類n通
37、過事件流尋找類(名詞動詞分析法)通過事件流尋找類(名詞動詞分析法)w分析事件流中的名詞,將性質(zhì)相同的歸為一類;分析事件流中的名詞,將性質(zhì)相同的歸為一類;w去除不恰當(dāng)?shù)幕蚝?,去除?yīng)歸為屬性的項目。去除不恰當(dāng)?shù)幕蚝?,去除?yīng)歸為屬性的項目。w命名所獲取的類。命名所獲取的類。面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類如何發(fā)現(xiàn)類如何發(fā)現(xiàn)類n如何確定屬性如何確定屬性w注意需求中的名詞;注意需求中的名詞;w注意用例模型或需求文檔中的名詞,數(shù)據(jù)表。注意用例模型或需求文檔中的名詞,數(shù)據(jù)表。n如何確定方法如何確定方法w實現(xiàn):實現(xiàn)業(yè)務(wù)功能,通過事件流中的動詞分析進(jìn)實現(xiàn):實現(xiàn)業(yè)務(wù)功能,通過事件流中的動詞分析進(jìn)行捕捉;行捕
38、捉;w管理:管理對象的創(chuàng)建或構(gòu)造;管理:管理對象的創(chuàng)建或構(gòu)造;w訪問:查詢或修改每個類的屬性;訪問:查詢或修改每個類的屬性;w幫助:說明類完成任務(wù)所需要的操作。幫助:說明類完成任務(wù)所需要的操作。面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類需求描述需求描述n小王是一個愛書之人,家里各類書籍已過千冊,小王是一個愛書之人,家里各類書籍已過千冊,而平時又時常有朋友外借,因此需要一個個人而平時又時常有朋友外借,因此需要一個個人圖書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)幕緢D書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)幕拘畔从嬎銠C(jī)類、非計算機(jī)類分別建檔,實現(xiàn)信息按計算機(jī)類、非計算機(jī)類分別建檔,實現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字
39、的組合按書名、作者、類別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書籍時系統(tǒng)會查詢功能。在使用該系統(tǒng)錄入新書籍時系統(tǒng)會自動按規(guī)則生成書號,可以修改信息,但一經(jīng)自動按規(guī)則生成書號,可以修改信息,但一經(jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)畡?chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對外借情況列表打印。的外借情況進(jìn)行記錄,可對外借情況列表打印。另外,還希望能夠?qū)馁徺I金額、冊數(shù)按另外,還希望能夠?qū)馁徺I金額、冊數(shù)按特定時間周期進(jìn)行統(tǒng)計特定時間周期進(jìn)行統(tǒng)計 面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類發(fā)現(xiàn)類發(fā)現(xiàn)類小王小王是一個愛書之是一個愛書之人人,家里家里各類各類書籍書籍已過
40、千冊,而平已過千冊,而平時又時常有時又時常有朋友朋友外借,因此需要一個外借,因此需要一個個人圖書管理系個人圖書管理系統(tǒng)統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)?。該系統(tǒng)應(yīng)該能夠?qū)幕拘畔⒒拘畔窗从嬎銠C(jī)類計算機(jī)類、非計算機(jī)類非計算機(jī)類分別建檔,實現(xiàn)按分別建檔,實現(xiàn)按書名書名、作者作者、類別類別、出出版社版社等等關(guān)鍵字關(guān)鍵字的組合查詢的組合查詢功能功能。在使用該系統(tǒng)錄入。在使用該系統(tǒng)錄入新新書籍書籍時時系統(tǒng)系統(tǒng)會自動按會自動按規(guī)則規(guī)則生成生成書號書號,可以修改,可以修改信息信息,但一經(jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)唤?jīng)創(chuàng)建就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行的外借情況進(jìn)行記錄記
41、錄,可對,可對外借情況列表外借情況列表打印。另外,打印。另外,還希望能夠?qū)倪€希望能夠?qū)馁徺I金額購買金額、冊數(shù)冊數(shù)按按特定時間周期特定時間周期進(jìn)行統(tǒng)計進(jìn)行統(tǒng)計 面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類篩選備選類篩選備選類n“小王小王”、“人人”、“家里家里”很明顯是系統(tǒng)外的概念,無須對其很明顯是系統(tǒng)外的概念,無須對其建模;建模;n而而“個人圖書管理系統(tǒng)個人圖書管理系統(tǒng)”、“系統(tǒng)系統(tǒng)”指的就是將要開發(fā)的系統(tǒng),指的就是將要開發(fā)的系統(tǒng),即系統(tǒng)本身,也無須對其進(jìn)行建模;即系統(tǒng)本身,也無須對其進(jìn)行建模;n很明顯很明顯“書籍書籍”是一個很重要的類,而是一個很重要的類,而“書名書名”、“作者作者”、“類別類
42、別”、“出版社出版社”、“書號書號”則都是用來描述書籍的基本信則都是用來描述書籍的基本信息的,因此應(yīng)該作為息的,因此應(yīng)該作為“書籍書籍”類的屬性處理,而類的屬性處理,而“規(guī)則規(guī)則”是指書是指書號的生成規(guī)則,而書號則是書籍的一個屬性,因此號的生成規(guī)則,而書號則是書籍的一個屬性,因此“規(guī)則規(guī)則”可以可以作為編寫作為編寫“書籍書籍”類構(gòu)造函數(shù)的指南。類構(gòu)造函數(shù)的指南。n“基本信息基本信息”則是書名、作者、類別等描述書籍的基本信息統(tǒng)稱,則是書名、作者、類別等描述書籍的基本信息統(tǒng)稱,“關(guān)鍵字關(guān)鍵字”則是代表其中之一,因此無需對其建模;則是代表其中之一,因此無需對其建模;n“功能功能”、“新書籍新書籍”、
43、“信息信息”、“記錄記錄”都是在描述需求時都是在描述需求時使用到的一些相關(guān)詞語,并不是問題域的本質(zhì),因此先可以將其使用到的一些相關(guān)詞語,并不是問題域的本質(zhì),因此先可以將其淘汰掉;淘汰掉;面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類篩選備選類篩選備選類n“計算機(jī)類計算機(jī)類”、“非計算機(jī)類非計算機(jī)類”是該系統(tǒng)中圖書的兩大分類,因是該系統(tǒng)中圖書的兩大分類,因此應(yīng)該對其建模,并改名為此應(yīng)該對其建模,并改名為“計算機(jī)類書籍計算機(jī)類書籍”和和“非計算機(jī)類書非計算機(jī)類書籍籍”,以減少歧義;,以減少歧義;n“外借情況外借情況”則是用來表示一次借閱行為,應(yīng)該成為一個候選類,則是用來表示一次借閱行為,應(yīng)該成為一個候選類,多個外
44、借情況將組成多個外借情況將組成“外借情況列表外借情況列表”,而外借情況中一個很重,而外借情況中一個很重要的角色是要的角色是“朋友朋友”借閱主體。雖然到本系統(tǒng)中并不需要建立借閱主體。雖然到本系統(tǒng)中并不需要建立“朋友朋友”的資料庫,但考慮到可能會需要列出某個朋友的借閱情的資料庫,但考慮到可能會需要列出某個朋友的借閱情況,因此還是將其列為候選類。為了能夠更好地表述,將況,因此還是將其列為候選類。為了能夠更好地表述,將“外借外借情況情況”改名為改名為“借閱記錄借閱記錄”,而將,而將“外借情況列表外借情況列表”改名為改名為“借借閱記錄列表閱記錄列表”;n“購買金額購買金額”、“冊數(shù)冊數(shù)”都是統(tǒng)計的結(jié)果,
45、都是一個數(shù)字,因此都是統(tǒng)計的結(jié)果,都是一個數(shù)字,因此不用將其建模,而不用將其建模,而“特定時限特定時限”則是統(tǒng)計的范圍,也無需將其建則是統(tǒng)計的范圍,也無需將其建模;不過從這里的分析中,我們可以發(fā)現(xiàn),在該需求描述中隱藏模;不過從這里的分析中,我們可以發(fā)現(xiàn),在該需求描述中隱藏著一個關(guān)鍵類著一個關(guān)鍵類書籍列表,也就是執(zhí)行統(tǒng)計的主體。書籍列表,也就是執(zhí)行統(tǒng)計的主體。面面向向?qū)ο笙蠹技夹g(shù)術(shù)分析類得到候選類得到候選類n在使用在使用“名詞動詞法名詞動詞法”尋找類的時候,很多團(tuán)尋找類的時候,很多團(tuán)隊會在此耗費(fèi)大量的時間,特別是對于中大型隊會在此耗費(fèi)大量的時間,特別是對于中大型項目,這樣很容易迷失方向。其實在
46、此主要的項目,這樣很容易迷失方向。其實在此主要的目的是對問題領(lǐng)域建立概要的了解,無需太過目的是對問題領(lǐng)域建立概要的了解,無需太過咬文嚼字咬文嚼字 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法1. 單一職責(zé)原則單一職責(zé)原則 (srp)含義:就一個類而言,應(yīng)該僅有一個引起它變化的原因。含義:就一個類而言,應(yīng)該僅有一個引起它變化的原因。范例說明:范例說明:面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法1. 單一職責(zé)原則單一職責(zé)原則 (srp)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法1. 單一職責(zé)原則單一職責(zé)原則 (srp)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法1. 單一職責(zé)原則單一職責(zé)原則 (srp
47、)總結(jié)總結(jié)srp是所有原則中最簡單的原則之一;是所有原則中最簡單的原則之一;也是最難正確應(yīng)用的原則之一。也是最難正確應(yīng)用的原則之一。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法2. 開放開放封閉原則封閉原則 (ocp)含義:軟件實體應(yīng)該是可以擴(kuò)展的,但是不可修改的;對于含義:軟件實體應(yīng)該是可以擴(kuò)展的,但是不可修改的;對于擴(kuò)展是開放的,對于修改是封閉的。擴(kuò)展是開放的,對于修改是封閉的。范例說明:范例說明:面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法2. 開放開放封閉原則封閉原則 (ocp)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法3. liskov替換原則替換原則 (lsp)含義:子類型必須能夠替換
48、掉它們的基類型。含義:子類型必須能夠替換掉它們的基類型。替換性質(zhì)替換性質(zhì):若對于每個類型:若對于每個類型s s的對象的對象o1o1,都存在一個類型,都存在一個類型t t的對象的對象o2o2,使得在所有針對,使得在所有針對t t編寫的程序編寫的程序p p中,用中,用o2o2替換替換o1o1后,程序后,程序p p行為功能不變,則行為功能不變,則s s是是t t的子類型。的子類型。面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法3. liskov替換原則替換原則 (lsp)范例范例1:不滿足:不滿足lspstruct pointdouble x,y;public enum shapetype square
49、,circle;public class shape private shapetype type; public shape(shapetype t)tpye = t; public static void drawshape(shape s) if (s.type = shapetype.square) (s as square).draw(); else if (s.type = shapetype.circle) (s as circle).draw(); 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法3. liskov替換原則替換原則 (lsp)public class circle:s
50、hape private point center; private double radius; public circle():base(shapetype.circle) public void draw() /*draw the circle*/public class square:shape private point topleft; private double side; public square():base(shapetype.square) public void draw() /*draw the square*/面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法3. li
51、skov替換原則替換原則 (lsp)范例范例2:不滿足:不滿足lsp面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法3. liskov替換原則替換原則 (lsp) 總結(jié)總結(jié)ocp是面向?qū)ο笤O(shè)計的核心原則是面向?qū)ο笤O(shè)計的核心原則lsp是使是使ocp成為可能的主要原則之一成為可能的主要原則之一面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法4. 依賴倒置原則依賴倒置原則 (dip)含義:高層模塊不應(yīng)依賴于低層模塊,二者都應(yīng)該依賴于抽含義:高層模塊不應(yīng)依賴于低層模塊,二者都應(yīng)該依賴于抽象;抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。象;抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。范例說明:范例說明:面面向向?qū)ο笙?/p>
52、技技術(shù)術(shù)類的設(shè)計原則的方法4. 依賴倒置原則依賴倒置原則 (dip)面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法4. 依賴倒置原則依賴倒置原則 (dip)任何變量都不應(yīng)該持有一個指向具體類的引用任何變量都不應(yīng)該持有一個指向具體類的引用任何類都不應(yīng)該從一個具體類派生任何類都不應(yīng)該從一個具體類派生任何方法不應(yīng)該重寫它的任何基類中的已經(jīng)實現(xiàn)了的方任何方法不應(yīng)該重寫它的任何基類中的已經(jīng)實現(xiàn)了的方法法面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法4. 依賴倒置原則依賴倒置原則 (dip)范例范例1:存在問題存在問題面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法4. 依賴倒置原則依賴倒置原則 (dip)范例范例1:
53、存在問題存在問題面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法5. 接口隔離原則接口隔離原則 (dip)含義:不應(yīng)該強(qiáng)迫客戶依賴于它們不用的方法。接口屬于客含義:不應(yīng)該強(qiáng)迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層次結(jié)構(gòu)。戶,不屬于它所在的類層次結(jié)構(gòu)。范例說明:范例說明:面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法5. 接口隔離原則接口隔離原則 (dip)使用委托分離接口面面向向?qū)ο笙蠹技夹g(shù)術(shù)類的設(shè)計原則的方法5. 接口隔離原則接口隔離原則 (dip)使用多重繼承分離接口面面向向?qū)ο笙蠹技夹g(shù)術(shù)對象圖 描述參與一個交互的各個對象在交互過程描述參與一個交互的各個對象在交互過程中某一時
54、刻的狀態(tài)。中某一時刻的狀態(tài)。 可以被看作是類圖在某一時刻的實例??梢员豢醋魇穷悎D在某一時刻的實例。 面面向向?qū)ο笙蠹技夹g(shù)術(shù)類圖和對象圖的區(qū)別 類圖類圖 對象圖對象圖 類具有三個分欄:名稱、屬性和操類具有三個分欄:名稱、屬性和操作作對象只有兩個分欄:名稱和屬性對象只有兩個分欄:名稱和屬性在類的名稱分欄中只有類名在類的名稱分欄中只有類名對象的名稱形式為對象的名稱形式為“對象名:類對象名:類名名”,匿名對象的名稱形式為,匿名對象的名稱形式為“:類名類名”類中列出了操作類中列出了操作對象圖中不包含操作,因為對于屬對象圖中不包含操作,因為對于屬于同一個類的對象而言,其操作是于同一個類的對象而言,其操作
55、是相同的相同的類使用關(guān)聯(lián)連接,關(guān)聯(lián)使用名稱、類使用關(guān)聯(lián)連接,關(guān)聯(lián)使用名稱、角色、多重性以及約束等特征定義。角色、多重性以及約束等特征定義。類代表的是對對象的分類,所以必類代表的是對對象的分類,所以必須說明可以參與關(guān)聯(lián)的對象的數(shù)目須說明可以參與關(guān)聯(lián)的對象的數(shù)目對象使用鏈連接,鏈擁有名稱、角對象使用鏈連接,鏈擁有名稱、角色,但是沒有多重性。對象代表的色,但是沒有多重性。對象代表的是單獨的實體,所有的鏈都是一對是單獨的實體,所有的鏈都是一對一的,因此不涉及到多重性一的,因此不涉及到多重性類的屬性分欄定義了所有屬性的特類的屬性分欄定義了所有屬性的特征征對象則只定義了屬性的當(dāng)前值,以對象則只定義了屬性的
56、當(dāng)前值,以用于測試用例或例子中用于測試用例或例子中面面向向?qū)ο笙蠹技夹g(shù)術(shù)對象圖范例面面向向?qū)ο笙蠹技夹g(shù)術(shù)對象圖范例面面向向?qū)ο笙蠹技夹g(shù)術(shù)對象圖的應(yīng)用論證類模型的設(shè)計:當(dāng)設(shè)計了類模型時,你可以論證類模型的設(shè)計:當(dāng)設(shè)計了類模型時,你可以通過對象圖來模擬出一個運(yùn)行時的狀態(tài),這樣就通過對象圖來模擬出一個運(yùn)行時的狀態(tài),這樣就可以研究在運(yùn)行時設(shè)計的合理性。同時,也可以可以研究在運(yùn)行時設(shè)計的合理性。同時,也可以作為開發(fā)人員討論的一個基礎(chǔ)。作為開發(fā)人員討論的一個基礎(chǔ)。分析和說明源代碼:由于類圖只是展示了程序的分析和說明源代碼:由于類圖只是展示了程序的靜態(tài)類結(jié)構(gòu),因此通過類圖看懂代碼的意圖是很靜態(tài)類結(jié)構(gòu),
57、因此通過類圖看懂代碼的意圖是很困難的。因此在分析源代碼時,可以通過對象圖困難的。因此在分析源代碼時,可以通過對象圖來細(xì)化分析。而對于開發(fā)人員,對于邏輯較復(fù)雜來細(xì)化分析。而對于開發(fā)人員,對于邏輯較復(fù)雜的類交互時,可以考慮畫出一些對象圖來做補(bǔ)充的類交互時,可以考慮畫出一些對象圖來做補(bǔ)充說明說明 面面向向?qū)ο笙蠹技夹g(shù)術(shù)交互的概念一次交互就是指在特定語境中,為了實現(xiàn)一次交互就是指在特定語境中,為了實現(xiàn)某一個目標(biāo),而在一組對象之間進(jìn)行交換某一個目標(biāo),而在一組對象之間進(jìn)行交換的一組消息所表示的行為的一組消息所表示的行為 面面向向?qū)ο笙蠹技夹g(shù)術(shù)如何創(chuàng)建交互圖用例圖僅僅描述了系統(tǒng)的功能,以及功能的執(zhí)行用例
58、圖僅僅描述了系統(tǒng)的功能,以及功能的執(zhí)行流程。它并沒有從實現(xiàn)的層面來描述系統(tǒng)。流程。它并沒有從實現(xiàn)的層面來描述系統(tǒng)。而要對用例進(jìn)行實現(xiàn)描述,則需要描述相互影響而要對用例進(jìn)行實現(xiàn)描述,則需要描述相互影響的對象的集合,這些對象用來支持用例所要求的的對象的集合,這些對象用來支持用例所要求的功能。功能。并且,給出系統(tǒng)用例的實現(xiàn)描述,是并且,給出系統(tǒng)用例的實現(xiàn)描述,是從外部視圖從外部視圖轉(zhuǎn)到內(nèi)部結(jié)構(gòu)的第一步轉(zhuǎn)到內(nèi)部結(jié)構(gòu)的第一步。在在uml中,用例的實現(xiàn)用交互圖來描述,它通過中,用例的實現(xiàn)用交互圖來描述,它通過顯示對象之間的關(guān)系和對象之間處理的消息來對顯示對象之間的關(guān)系和對象之間處理的消息來對系統(tǒng)的動態(tài)特性
59、建模。系統(tǒng)的動態(tài)特性建模。交互圖包括序列圖和協(xié)作圖兩種。交互圖包括序列圖和協(xié)作圖兩種。面面向向?qū)ο笙蠹技夹g(shù)術(shù)如何創(chuàng)建交互圖交互圖用來一步一步地描述用例地實現(xiàn)流交互圖用來一步一步地描述用例地實現(xiàn)流程,包括流中需要什么對象,對象之間發(fā)程,包括流中需要什么對象,對象之間發(fā)送什么,什么角色啟動流、消息按什么順?biāo)褪裁?,什么角色啟動流、消息按什么順序發(fā)送等。序發(fā)送等。交互圖通過從用例建模中得到的用例文檔交互圖通過從用例建模中得到的用例文檔說明、詞匯表和用例圖來創(chuàng)建說明、詞匯表和用例圖來創(chuàng)建。面面向向?qū)ο笙蠹技夹g(shù)術(shù)如何創(chuàng)建交互圖范例范例n以選課系統(tǒng)中的選課用例以選課系統(tǒng)中的選課用例(select cou
60、rse)為例,來獲為例,來獲取對象和角色。取對象和角色。n分析:為了使問題更簡單一些,不考慮學(xué)生的登錄。分析:為了使問題更簡單一些,不考慮學(xué)生的登錄。假設(shè)學(xué)生已經(jīng)成功登錄系統(tǒng),選課的事件流如下:假設(shè)學(xué)生已經(jīng)成功登錄系統(tǒng),選課的事件流如下: (1)學(xué)生進(jìn)入選課主界面。學(xué)生進(jìn)入選課主界面。 (2)學(xué)生點擊選課。學(xué)生點擊選課。 (3)系統(tǒng)顯示所有課程信息。系統(tǒng)顯示所有課程信息。 (4)學(xué)生選擇課程。學(xué)生選擇課程。 (5)系統(tǒng)驗證課程是否可選。系統(tǒng)驗證課程是否可選。 a1:課程不可選:課程不可選 (6)系統(tǒng)提示課程選擇成功,提示學(xué)生交費(fèi)。系統(tǒng)提示課程選擇成功,提示學(xué)生交費(fèi)。 (7)用例結(jié)束。用例結(jié)束。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書法協(xié)定合同協(xié)議
- 移動應(yīng)用開發(fā)合同
- 二零二五年度個人企業(yè)全額承包經(jīng)營項目合同范本2篇
- 2025版銷售人員兼職合同違約金及賠償標(biāo)準(zhǔn)合同2篇
- 2025版洗車房租賃及洗車行業(yè)智能管理合作合同3篇
- 二零二五年度商業(yè)空間裝修施工合同
- 二零二五年度個人職業(yè)規(guī)劃咨詢服務(wù)合同7篇
- 二零二五年度地下停車場開發(fā)與經(jīng)營權(quán)轉(zhuǎn)讓合同3篇
- 二零二五年度環(huán)保熟石灰粉體加工銷售合同3篇
- 二零二五年度行紀(jì)合同書樣本:醫(yī)療器械行紀(jì)合作協(xié)議3篇
- 心理劇在學(xué)校心理健康教育中的應(yīng)用
- 三年級數(shù)學(xué)寒假作業(yè)每日一練30天
- 人美版初中美術(shù)知識點匯總九年級全冊
- 食堂服務(wù)質(zhì)量控制方案與保障措施
- VI設(shè)計輔助圖形設(shè)計(2022版)
- 眼科學(xué)??己喆痤}
- 物料分類帳的應(yīng)用
- 乳房整形知情同意書
- 2022-2023年人教版九年級物理上冊期末考試(真題)
- 根因分析(huangyan)課件
- 編本八年級下全冊古詩詞原文及翻譯
評論
0/150
提交評論