版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、GISGIS中面向?qū)ο蠹夹g(shù)中面向?qū)ο蠹夹g(shù) 第五講 2 3 4 5 6 7 8 9 10 11 12 13 噴泉模型噴泉模型 分析分析 設(shè)計(jì)設(shè)計(jì) 實(shí)現(xiàn)實(shí)現(xiàn) 測(cè)試測(cè)試 集成集成 演化演化 14 15 16 17 面向?qū)ο蟮囊c(diǎn):面向?qū)ο蟮囊c(diǎn): 1. 認(rèn)為客觀世界是由各種對(duì)象組成的,任何事認(rèn)為客觀世界是由各種對(duì)象組成的,任何事 物都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì)物都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì) 象以某種方式組合而成。象以某種方式組合而成。 2. 把所有對(duì)象都劃分成各種對(duì)象類,每個(gè)對(duì)象把所有對(duì)象都劃分成各種對(duì)象類,每個(gè)對(duì)象 類都定義了一組數(shù)據(jù)和一組方法。類都定義了一組數(shù)據(jù)和一組方法。
2、3. 按照子類(或稱為派生類)與父類(或稱為按照子類(或稱為派生類)與父類(或稱為 基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次 結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。 4. 對(duì)象彼此之間僅能通過(guò)傳遞消息互相聯(lián)系。對(duì)象彼此之間僅能通過(guò)傳遞消息互相聯(lián)系。 18 面向?qū)ο蟮闹饕獌?yōu)點(diǎn):面向?qū)ο蟮闹饕獌?yōu)點(diǎn): 1. 與人類習(xí)慣的思維一致與人類習(xí)慣的思維一致 2. 穩(wěn)定性好穩(wěn)定性好 可重用性好可重用性好 較易開(kāi)發(fā)出大型軟件產(chǎn)品較易開(kāi)發(fā)出大型軟件產(chǎn)品 可維護(hù)性好可維護(hù)性好 穩(wěn)定性好、易于修改、容易理解、容易測(cè)試和調(diào)試穩(wěn)定性好、易于修改、容易理解、容易測(cè)試
3、和調(diào)試 但,面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn)并不是減少了開(kāi)發(fā)時(shí)間,但,面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn)并不是減少了開(kāi)發(fā)時(shí)間, 相反,初次使用這種技術(shù)開(kāi)發(fā)軟件,可能比用傳統(tǒng)的方相反,初次使用這種技術(shù)開(kāi)發(fā)軟件,可能比用傳統(tǒng)的方 法所需要的實(shí)踐還稍微長(zhǎng)一點(diǎn)。法所需要的實(shí)踐還稍微長(zhǎng)一點(diǎn)。 19 20 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 穩(wěn)定: 較小的需求變化不會(huì)導(dǎo)致系統(tǒng)結(jié)構(gòu) 大的改變 舉例:某公司的銷售處理系統(tǒng) 定單定單 合同合同 出費(fèi)出費(fèi) 21 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 穩(wěn)定:數(shù)據(jù)和功能都打包在一起,從而改善軟件 的再重用性 軟件重用能提高質(zhì)量,減少由于編制新的系統(tǒng)代 碼而產(chǎn)生的成本 File Mgr Macro Editor
4、Math Utilities Text EditorPrint Utilities Format Editor Menus String Utilities SpreadsheetWord Processor Reusable-Component Repository 22 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 面向?qū)ο蟮哪P透淤N切地反映了現(xiàn)實(shí)世界 更加準(zhǔn)確地描述公共數(shù)據(jù)和過(guò)程 易于理解,尤其對(duì)于使用者 現(xiàn)實(shí)世界現(xiàn)實(shí)世界 Laser Printer External Drive Computer 對(duì)象圖對(duì)象圖 23 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 面向?qū)ο蟮姆椒ㄖС执笠?guī)模開(kāi)發(fā) 可以嚴(yán)格定義各個(gè)組件之間
5、的交互 v 減少內(nèi)部的依賴關(guān)系 v 減少集成的問(wèn)題 v 支持并行開(kāi)發(fā) 24 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 幫助開(kāi)發(fā)多層結(jié)構(gòu) Equipment and Customer specific Code Processes and other application code Major abstractions, classes, etc. Mechanisms H/W specific code, O/S specific code general-purpose code 1 2 3 4 5 Application Specific Application Independent Less R
6、euse More Reuse 25 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 幫助開(kāi)發(fā)嵌入式、實(shí)時(shí)系統(tǒng) 具有更高的可靠性和靈活性 26 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì) 對(duì)系統(tǒng)的一部分進(jìn)行再工程,保護(hù)前期軟 件應(yīng)用的投資 Existing Software Reengineered Software 27 對(duì)象技術(shù)的優(yōu)勢(shì)對(duì)象技術(shù)的優(yōu)勢(shì)(總結(jié)總結(jié)) 需求改變時(shí)系統(tǒng)穩(wěn)定 高水準(zhǔn)的軟件重 更準(zhǔn)確的模型,更易于理解 嚴(yán)格定義大規(guī)模開(kāi)發(fā)的交互界限 對(duì)象的封裝有利于 client-server 應(yīng)用的 開(kāi)發(fā) 再工程保護(hù)前期投資 OOD 增加細(xì)節(jié)和設(shè)計(jì)決策增加細(xì)節(jié)和設(shè)計(jì)決策 開(kāi)發(fā)人員的角度開(kāi)發(fā)人員的角度 OOA 開(kāi)發(fā)需求
7、模型開(kāi)發(fā)需求模型 用戶的角度用戶的角度 OOP 實(shí)現(xiàn)和測(cè)試實(shí)現(xiàn)和測(cè)試 28 UML: 設(shè)立對(duì)象建模標(biāo)準(zhǔn)設(shè)立對(duì)象建模標(biāo)準(zhǔn) Unified 0.8 OMT-1 Booch 91 OMT-2 Unified Modeling Language 1.0 Booch 93 OOSE Unified Modeling Language 1.1 29 面向?qū)ο蟾拍蠲嫦驅(qū)ο蟾拍?Object 對(duì)象 Class 類 State 狀態(tài) Behavior 行為 Attribute 屬性 Operation 操作 (Method方法) Inheritance 繼承 vSubclasses 子類 vSuperclass
8、es 父類 Generalization 普遍化 Polymorphism 多態(tài) 30 面向?qū)ο蟾拍蠲嫦驅(qū)ο蟾拍?Abstraction 抽象 Encapsulation 封裝 Association 關(guān)聯(lián) Role 角色 Multiplicity 多重性 Aggregation 聚合 Dependency association 依賴 Package 包 Use Case 使用案例 Scenario 腳本 Actor 作用者 31 32 什么是對(duì)象什么是對(duì)象 一個(gè)對(duì)象代表了一個(gè)現(xiàn)實(shí)的或虛構(gòu)的實(shí)體 v自然實(shí)體 v概念實(shí)體 v軟件實(shí)體 化學(xué)過(guò)程化學(xué)過(guò)程 連接顯示連接顯示 33 對(duì)象的屬性對(duì)象的屬
9、性 對(duì)象是應(yīng)用中具有明顯邊界和含義的概 念、抽象或事物 一個(gè)對(duì)象有三個(gè)重要屬性: v 狀態(tài) v 行為 v 標(biāo)識(shí) 術(shù)語(yǔ)“實(shí)例”是“對(duì)象”的同義詞 34 對(duì)象的狀態(tài)對(duì)象的狀態(tài) 一個(gè)對(duì)象的狀態(tài)是它反映于現(xiàn)實(shí)世界的 一系列屬性: v 參數(shù)的數(shù)值 (也就是,與對(duì)象有關(guān)系的數(shù)據(jù)) v 它與其它對(duì)象的關(guān)系 v 任一時(shí)刻的歷史狀態(tài) 可能的狀態(tài):可能的狀態(tài): 停泊停泊 運(yùn)營(yíng)運(yùn)營(yíng) 著陸著陸 終止終止 班機(jī)班機(jī) 747 747 35 對(duì)象的行為對(duì)象的行為 定義當(dāng)其它對(duì)象發(fā)出請(qǐng)求時(shí),該對(duì)象如何 反應(yīng) 由為對(duì)象定義的一系列操作決定 班機(jī)班機(jī) 747 核對(duì)出發(fā)時(shí)間核對(duì)出發(fā)時(shí)間 (返回返回 9:27) 機(jī)票代理機(jī)票代理 3
10、6 對(duì)象的標(biāo)識(shí)對(duì)象的標(biāo)識(shí) 每一個(gè)對(duì)象都有一個(gè)唯一的標(biāo)識(shí), 即使 其狀態(tài)有可能與其它對(duì)象一樣 班機(jī)班機(jī) 747 on 11/10 班機(jī)班機(jī) 747 on 11/11 班機(jī)班機(jī) 747 on 11/12 37 面向?qū)ο笾械幕靖拍蠲嫦驅(qū)ο笾械幕靖拍?對(duì)象的形象表示對(duì)象的形象表示 狀態(tài)狀態(tài) S 操作操作1,2,3的實(shí)現(xiàn)的實(shí)現(xiàn) 操作操作1 操作操作2 操作操作3 界界 面面 38 面向?qū)ο笾械幕靖拍蠲嫦驅(qū)ο笾械幕靖拍?對(duì)象的特點(diǎn)對(duì)象的特點(diǎn) 以數(shù)據(jù)為中心以數(shù)據(jù)為中心 對(duì)象是主動(dòng)的對(duì)象是主動(dòng)的 實(shí)現(xiàn)了數(shù)據(jù)封裝實(shí)現(xiàn)了數(shù)據(jù)封裝 本質(zhì)上具有并行性本質(zhì)上具有并行性 模塊獨(dú)立性模塊獨(dú)立性 39 40 41 面
11、向?qū)ο竺嫦驅(qū)ο?對(duì)象技術(shù)圍繞對(duì)象的概念來(lái)建立 一個(gè)對(duì)象包含了數(shù)據(jù)和使用這些數(shù)據(jù)的所 有功能 對(duì)象之間通過(guò)消息通信 v 一個(gè)對(duì)象通過(guò)向另一個(gè)對(duì)象發(fā)送消息激活某 一 個(gè)功能 42 什么是類(什么是類(Class) 類是一組具有相同結(jié)構(gòu)和行為的對(duì)象的集 合 v 共同的結(jié)構(gòu)通過(guò)屬性表現(xiàn)出來(lái) (i.e. 數(shù)據(jù)) v 共同的行為通過(guò)操作表現(xiàn)出來(lái) (i.e. 功能) 班機(jī)班機(jī) 747 結(jié)構(gòu)結(jié)構(gòu) 班機(jī)號(hào)班機(jī)號(hào) 日期日期 分配的班分配的班 機(jī)機(jī) 起點(diǎn)起點(diǎn) 終點(diǎn)終點(diǎn) 狀態(tài)狀態(tài) 行為行為 裝載設(shè)備裝載設(shè)備 起飛起飛 延遲延遲 取消取消 終止終止 43 類的示例類的示例 Class Employee Structur
12、e Name Address Position Salary Start Date End Date Behavior Hire Fire Promote Increase Salary Retire 44 類類 具有相同特征和操作的對(duì)象可以放到類中。 在下面這副圖中您看到了什么類? 45 類圖:用來(lái)表達(dá)類類圖:用來(lái)表達(dá)類 類圖是一種主要的圖形化對(duì)象表示法 v 類圖顯示類及類之間的關(guān)系 v 一個(gè)類通過(guò)在類圖標(biāo)中的類名(唯一的)來(lái) 代表 班機(jī)班機(jī) 46 屬性屬性 屬性是類的特征或特性 屬性的值是某一特定對(duì)象的屬性值 在類中屬性名必須是唯一的 每一個(gè)類的實(shí)例都有為這個(gè)類定義的所 有屬性的值 例如:
13、 銀行帳戶類屬性銀行帳戶類屬性 帳號(hào)帳號(hào) 銀行名稱銀行名稱 擁有者擁有者 金額金額 Mary的銀行帳戶屬性值的銀行帳戶屬性值 12345678 First National Bank Mary Smith $1024.48 47 屬性取決于視點(diǎn)屬性取決于視點(diǎn) 從銷售人員的角度 v 型號(hào) v 價(jià)格 v 顏色 v 里程數(shù) 一輛汽車具有的一輛汽車具有的屬性屬性: : 從從維修人員維修人員的角度的角度 v 馬達(dá)類型馬達(dá)類型 v 傳動(dòng)類型傳動(dòng)類型 v 維修記錄維修記錄 48 操作操作 對(duì)象的行為是由為此對(duì)象定義的一系列操 作決定的 操作訪問(wèn)或修改對(duì)象的屬性值 一個(gè)類可能同時(shí)存在多個(gè)實(shí)例,也可能在 某一時(shí)
14、刻沒(méi)有實(shí)例 一個(gè)類的所有實(shí)例都可以使用在這個(gè)類中 定義的操作 49 操作取決于視點(diǎn)操作取決于視點(diǎn) 一輛汽車具有的一輛汽車具有的操作操作: : 從銷售人員的角度 v 處理客戶定單 v 準(zhǔn)備銷售合同 v 加入清單 v 從清單中刪除 從維修人員的角度 v 測(cè)試剎車 v 修理剎車 v 轉(zhuǎn)動(dòng)輪胎 v 檢查馬達(dá)速度 50 屬性和操作的標(biāo)記法屬性和操作的標(biāo)記法 在類的圖標(biāo)中描述屬性和操作 通常只顯示最重要的屬性和操作,避免 圖形混亂 屬性顯示在操作上方,操作的名字后跟 有() 班機(jī)班機(jī) flightNumber date departure time status release( ) takeOff( )
15、 屬性屬性 操作操作 51 類是生成對(duì)象的模板類是生成對(duì)象的模板 類是生成對(duì)象的模板 v類的定義中包含有產(chǎn)生和刪除對(duì)象的操作屬 性顯示在操作上方,操作的名字后跟有() 一個(gè)類定義了使用哪種數(shù)據(jù)表示法來(lái)描述 屬性 v每一個(gè)實(shí)例都采用有屬性值的數(shù)據(jù)表示法 一個(gè)類通過(guò)一系列操作來(lái)定義行為 v這種操作能在每個(gè)實(shí)例中激活 班機(jī)班機(jī) Flight 187 Flight 121 Flight 747 52 類和對(duì)象的關(guān)系類和對(duì)象的關(guān)系 每一個(gè)對(duì)象都是某一個(gè)類的實(shí)例 每一個(gè)類在某一時(shí)刻都有零個(gè)或更多的 實(shí)例 類是靜態(tài)的; 它們的存在、語(yǔ)義和關(guān)系 在程序執(zhí)行前就已經(jīng)定義好了 對(duì)象是動(dòng)態(tài)的; 它們?cè)诔绦驁?zhí)行時(shí)可以
16、 被創(chuàng)建和刪除 53 54 55 56 57 58 什么是消息?什么是消息? 消息,就是要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類中消息,就是要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類中 所定義的某個(gè)操作的規(guī)格說(shuō)明。通常,一個(gè)消息有下述所定義的某個(gè)操作的規(guī)格說(shuō)明。通常,一個(gè)消息有下述 三部分組成:三部分組成: 接受消息的對(duì)象接受消息的對(duì)象 消息選擇符(也稱為消息名)消息選擇符(也稱為消息名) 零個(gè)或多個(gè)變?cè)銈€(gè)或多個(gè)變?cè)?不同于結(jié)構(gòu)化設(shè)計(jì)中的函數(shù)調(diào)用。不同于結(jié)構(gòu)化設(shè)計(jì)中的函數(shù)調(diào)用。 59 60 61 Polygon TriangleQuadrilateral Rectangle 62 63 Polygon ref
17、erencePoint Vertices Draw( ) move( x, y) contains?(aPoint) Quadrilateral referencePoint Vertices Draw( ) move( x, y) contains?(aPoint) Polygon類類Polygon類的子類類的子類 Quadrilateral 64 多態(tài)性(多態(tài)性(PolymorphismPolymorphism) 在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是指子在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是指子 類對(duì)象可以向父類對(duì)象那樣使用,同樣的消息類對(duì)象可以向父類對(duì)象那樣使用,同樣的消息 既可以發(fā)送給父類對(duì)象也
18、可以發(fā)送給子類對(duì)象。既可以發(fā)送給父類對(duì)象也可以發(fā)送給子類對(duì)象。 多態(tài)性機(jī)制不僅增加了面向?qū)ο筌浖刀鄳B(tài)性機(jī)制不僅增加了面向?qū)ο筌浖?統(tǒng)的靈活性,進(jìn)一步減少了信息冗余,而且統(tǒng)的靈活性,進(jìn)一步減少了信息冗余,而且 顯著提高了軟件的可重用性和可擴(kuò)充性。顯著提高了軟件的可重用性和可擴(kuò)充性。 65 重載(重載(Overloading) 有兩種重載:有兩種重載: 函數(shù)重載是指在用以作用域內(nèi)的若干個(gè)參數(shù)函數(shù)重載是指在用以作用域內(nèi)的若干個(gè)參數(shù) 特征不特征不 同的函數(shù)可以使用相同函數(shù)名字同的函數(shù)可以使用相同函數(shù)名字 運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不 同類型的操作數(shù)上
19、面。當(dāng)然,當(dāng)參數(shù)特征不同同類型的操作數(shù)上面。當(dāng)然,當(dāng)參數(shù)特征不同 或被操作數(shù)的類或被操作數(shù)的類 型不同時(shí),實(shí)現(xiàn)函數(shù)的算法或型不同時(shí),實(shí)現(xiàn)函數(shù)的算法或 運(yùn)算符的語(yǔ)義是不相同的。運(yùn)算符的語(yǔ)義是不相同的。 66 抽象抽象 一個(gè)對(duì)象是現(xiàn)實(shí)世界中一個(gè)實(shí)體的抽象 抽象是一種單一化的描述: v 強(qiáng)調(diào)與給出應(yīng)用有關(guān)的特性 v 抑制不相關(guān)的特性 一個(gè)類是一組對(duì)象的抽象 抽象通過(guò)注重主要的、與問(wèn)題有關(guān)的特性, 幫助 我們處理復(fù)雜系統(tǒng) 關(guān)鍵在于找出重要的、有關(guān)的類,以及每 個(gè)類中重要、有關(guān)的操作和屬性 67 利用封裝隱藏信息利用封裝隱藏信息 一個(gè)類分為兩個(gè)部分: 界面和實(shí)現(xiàn) 對(duì)于用戶來(lái)說(shuō),界面是可見(jiàn)的,實(shí)現(xiàn)是不可見(jiàn)
20、的 只有類提供的操作才能修改屬性值 將一個(gè)類實(shí)現(xiàn)的細(xì)節(jié)隱藏起來(lái)叫做封裝 accountNumber nameOfBank nameOfOwner balance withdraw deposit generateStatement getBalance changeOwnerNameAttribute values can be changed only by the operations provided by the object Operations are provided to display attribute values needed by clients The state
21、of the object cannot be modified by clients directly 68 封裝的益處封裝的益處 封裝提供兩種保護(hù): v保護(hù)對(duì)象,防止被用戶誤用 用戶無(wú)權(quán)訪問(wèn)實(shí)現(xiàn)的細(xì)節(jié), 例如屬性值和操作過(guò) 程 v當(dāng)對(duì)象實(shí)現(xiàn)過(guò)程改變時(shí),保護(hù)用戶端代碼 對(duì)象的實(shí)現(xiàn)過(guò)程改變不影響用戶端代碼 69 封裝的益處封裝的益處 實(shí)現(xiàn)過(guò)程可能改變, 例如: v 修正缺陷 v 增進(jìn)性能 v 改變方法 封裝能減小“波紋效應(yīng)”,也就是一個(gè) 操作的修 正會(huì)影響到相應(yīng)客戶端的操作,從而導(dǎo)致 此客戶端的客戶端的改變. 70 關(guān)系的重要性關(guān)系的重要性 所有的系統(tǒng)都包含了大量的類和對(duì)象 對(duì)象通過(guò)與其它對(duì)象
22、的協(xié)作完成系統(tǒng)的 功能行為 協(xié)作通過(guò)關(guān)系來(lái)實(shí)現(xiàn) 幾種重要的關(guān)系類型: v 關(guān)聯(lián) v 聚合 v 依賴 71 關(guān)聯(lián)關(guān)聯(lián) 關(guān)聯(lián)是類之間的連接 在類圖中關(guān)聯(lián)通過(guò)連接類之間的線段來(lái)表示 數(shù)據(jù)可以單向,也可以雙向傳遞 每一個(gè)關(guān)聯(lián)關(guān)系在初始時(shí)都認(rèn)為是雙向的 v可能僅僅是單向 (依設(shè)計(jì)決定) 兩個(gè)類之間可以存在多個(gè)關(guān)聯(lián)關(guān)系 Mainframe Workstation Employer Employee 72 示例示例: : 關(guān)聯(lián)關(guān)聯(lián) 在一個(gè)工資系統(tǒng)中有下面兩個(gè)類: 關(guān)聯(lián)表示了雙向的關(guān)系,例如: v給出一個(gè)Person的實(shí)例, 我們能夠知道他屬 于哪家公司 v給出一個(gè) Company的實(shí)例, 我們能夠知道在 其
23、中工作的所有人 Person Company 73 給關(guān)聯(lián)命名給關(guān)聯(lián)命名 目的:闡明關(guān)聯(lián)的意義 名字像一個(gè)標(biāo)簽, 位于兩個(gè)類圖的中間 通常采用動(dòng)詞或動(dòng)詞短語(yǔ) PersonCompany employs 74 定義角色定義角色 除給關(guān)聯(lián)命名外, 還能指定角色的名字 角色名位于關(guān)聯(lián)線上,靠近所修飾的類 關(guān)聯(lián)的單方或雙方都可指定角色名 使用名詞或名詞短語(yǔ) 避免同時(shí)使用角色名和關(guān)聯(lián)名,選一個(gè) 最能說(shuō)明問(wèn)題的 employee Person employer Company 75 角色的含義角色的含義 關(guān)聯(lián)中類的角色代表類和關(guān)聯(lián)的關(guān)系 在職員系統(tǒng)中,一個(gè)Person對(duì)象可能有以 下角色: v Emplo
24、yee v Manager 每個(gè)角色有不同的行為: v Employee 使用考勤卡,獲得工資 v Manager 分配工作,評(píng)價(jià)職員 76 關(guān)聯(lián)的多重性關(guān)聯(lián)的多重性 多重性是指多個(gè)實(shí)例參與一個(gè)關(guān)聯(lián) 多重性通過(guò)位于關(guān)聯(lián)線某一端的一個(gè)表達(dá) 式或符號(hào)來(lái)表示 對(duì)于每個(gè)關(guān)聯(lián)關(guān)系, 需要做出兩個(gè)多重性 的決定 例如, 在公司和職員的關(guān)聯(lián)中 v 每個(gè)公司可以雇用多個(gè)職員 v 每個(gè)職員只有一個(gè)從屬公司 77 示例:關(guān)聯(lián)的多重性示例:關(guān)聯(lián)的多重性 多重性決定可以揭示建模過(guò)程中隱藏的問(wèn) 題 v 職員會(huì)不會(huì)失業(yè)? v 公司能不能沒(méi)有職員? v 一個(gè)職員能不能有兩份工作? 職員職員 職員職員 雇主雇主 公司公司 1
25、.1.* *1 1 78 關(guān)聯(lián)的多重性關(guān)聯(lián)的多重性 多重性的三個(gè)常用尺度: v One-to-one v One-to-many v Many-to-many 可以用符號(hào)、數(shù)字、字母、公式或任何預(yù) 先設(shè)置的方式來(lái)表示多重性 79 常用的多重性表示法常用的多重性表示法 多重性能解決兩個(gè)問(wèn)題 v 關(guān)聯(lián)是強(qiáng)制的 (不包含零個(gè)) 或隨意的 (包含 零個(gè))? v 一個(gè)實(shí)例可以連接的其它實(shí)例的最大數(shù)目? v 常用的多重性表示法: 1只有一個(gè) 0.* 零或更多 1.* 一個(gè)或更多 0.1 零或一個(gè) *零或更多 3.7 指定的范圍 (3 or 4 or 5 or 6 or 7) 1.3,7結(jié)合使用 (1 or
26、 2 or 3 or 7) 80 自反關(guān)聯(lián)自反關(guān)聯(lián) 自反關(guān)聯(lián)指同一個(gè)類中的對(duì)象的關(guān)系 v表示同一個(gè)類中多個(gè)對(duì)象的協(xié)作 A course may have many pre-requisites A course may be a pre-requisite for many other courses Pre-requisite Course 0.* 0.* 81 聚合(包含)聚合(包含) 聚合是一種特殊的關(guān)聯(lián),體現(xiàn)整體和部分 的關(guān)系 聚合是一種 “has-a” 或包含的關(guān)系 同樣可以使用多重性 Company Department 1.* 1 82 依依 賴賴 依賴表示一個(gè)對(duì)象需要其它對(duì)象為
27、其提供 服務(wù) 又可稱為client-supplier 關(guān)系 v client 使用supplier提供的服務(wù) v supplier 不需要了解 client(s) v 單向關(guān)系 Controller Display Itemcontrol s 83 分析和設(shè)計(jì)中的關(guān)系分析和設(shè)計(jì)中的關(guān)系 分析時(shí), 建立類之間的關(guān)聯(lián) v 由于類的自然屬性使得這種關(guān)系存在, 而不是 由于特殊的實(shí)現(xiàn)過(guò)程 如果可能, 將關(guān)系定義為聚合 建立一個(gè)初始的多重性,揭示隱藏的問(wèn)題 設(shè)計(jì)時(shí): v 修正多重性設(shè)置 v 進(jìn)一步修正關(guān)聯(lián)關(guān)系 v 加入更多的細(xì)節(jié) 84 繼承繼承 繼承表示一個(gè)類從其它類中獲得結(jié)構(gòu)和行 為(子類/父類) 又
28、名普遍化 交通工具是一個(gè)父類 地面交通工具和空中交通工具是子類 Vehicle GroundVehicle AirVehicle The arrow points toward the superclass 85 繼承繼承 繼承表示子類從父類繼承時(shí)抽象的層次 v 單繼承:子類只從一個(gè)父類繼承 v 多繼承:子類從多于一個(gè)的父類繼承 繼承通常被稱為 “is-a” 或“kind-of” v 一個(gè)子類的實(shí)例也 “is a” 父類的實(shí)例 v 一個(gè)子類的實(shí)例是 “kind-of” 父類 86 多層次多層次 A Car is a kind of GroundVehicle which is a kind o
29、f Vehicle Vehicle and AirVehicle are ancestors of Airplane AirVehicle and Airplane are descendants of Vehicle Vehicle GroundVehicleAirVehicle Car TruckAirplane Helicopter 87 繼承的內(nèi)容繼承的內(nèi)容 屬性 操作 關(guān)系 約束 繼承平衡類之間的共同之處 88 繼承屬性繼承屬性 屬性在繼承結(jié)構(gòu)的最高一層定義 所有子類的實(shí)例能夠繼承這些屬性 每個(gè)子類可以增加或重新定義繼承的屬性; 但在修改是要加倍注意 GroundVehicle li
30、censeNumber weight Car Truck tonnage A truck has three attributes: licenseNumber weight tonnage 89 繼承操作繼承操作 屬性在繼承結(jié)構(gòu)的最高一層定義 所有子類的實(shí)例能夠繼承這些操作 每個(gè)子類可以增加或重新定義繼承的屬性 GroundVehicle licenseNumber weight register( ) Car Truck tonnage calculateTax( ) A truck has three attributes: licenseNumber weight tonnage an
31、d two operations: register calculateTax 90 繼承關(guān)系繼承關(guān)系 關(guān)系也可以繼承 每個(gè)子類都可以分享繼承的關(guān)系 GroundVehicle licenseNumber weight register( ) A truck has an owner Car Truck tonnage calculateTax( ) Owner Person 1.* and a car has an owner 1 91 抽象的層次抽象的層次 定義類的層次時(shí), 需要根據(jù)每個(gè)類和其它 類的關(guān)系來(lái)決定抽象的層次 Vehicle GroundVehicleAirVehicle Tr
32、uckAirplane Helicopter Ford class Ford is incorrectly placed at the same level as class Truck 92 普遍性的基準(zhǔn)普遍性的基準(zhǔn) 開(kāi)發(fā)一個(gè)普遍性結(jié)構(gòu)有不同的基準(zhǔn) 地面交通工具的基準(zhǔn)可能是: v 功能 (e.g., car, truck, . . .) v 顏色 (e.g., blue, white, red, . . .) v 制造商 (e.g., Chrysler, Fiat, Ford, . . .) v 國(guó)家 (e.g., U.S., Japan, Germany, . . .) 對(duì)于開(kāi)發(fā)來(lái)說(shuō),最重
33、要的是選擇一個(gè)具有 代表性的基準(zhǔn), 在定義子類時(shí)能保持一致 93 普遍性的基準(zhǔn)普遍性的基準(zhǔn) 利用名字檢驗(yàn)一致性利用名字檢驗(yàn)一致性 GroundVehicle Truck FordHondaFiat class Truck is not defined on the same basis as the remaining subclasses 94 示例:多重繼承示例:多重繼承 一個(gè)兩棲交通工具同時(shí)繼承地面交通工具 和水上交通工具 Vehicle GroundVehicleAirVehicle Car Truck AmphibiousVehicle Sailboat 95 多重繼承多重繼承 在建
34、模中直觀、準(zhǔn)確地反映現(xiàn)實(shí)世界 在實(shí)現(xiàn)中有可能帶來(lái)困難 v 名字沖突: 兩個(gè)或更多的子類定義了同樣的屬 性 和操作 v 重復(fù)繼承: 兩個(gè)或更多的同級(jí)父類有同一個(gè)子 類 每一個(gè)編程語(yǔ)言/環(huán)境都有解決的方法 并不是所有面向?qū)ο缶幊陶Z(yǔ)言都直接支持 多重繼承 僅僅當(dāng)必需時(shí)使用多重繼承僅僅當(dāng)必需時(shí)使用多重繼承 96 繼承的益處繼承的益處 增加軟件重用的機(jī)會(huì) v 降低開(kāi)發(fā)和維護(hù)費(fèi)用 開(kāi)發(fā)一個(gè)更貼近現(xiàn)實(shí)的模型 系統(tǒng)更加靈活 v 所有的子類自動(dòng)繼承父類的改變 v 可以通過(guò)增加一個(gè)子類來(lái)處理需求的改變 保證類之間的一致性 v 父類可以為所有子類定制規(guī)則; (許多OOP 語(yǔ)言必須指定這類規(guī)則) v 繼承界面和實(shí)現(xiàn)過(guò)
35、程 v 支持多態(tài) 97 多態(tài)多態(tài) 多態(tài):利用一個(gè)單一的界面隱藏大量不同 的實(shí)現(xiàn)過(guò)程 客戶端可以調(diào)用一個(gè)對(duì)象的操作,不必了 解其類型 v 如果增加了支持相同操作的對(duì)象, 不需要重新 修改客戶端 允許客戶端操作其共有的父類的對(duì)象 98 繼承和多態(tài)繼承和多態(tài) 多態(tài)是一種更高級(jí)別的繼承 分析時(shí),盡可能多地使用繼承,發(fā)揮重用 和多態(tài)的優(yōu)勢(shì) 在設(shè)計(jì)時(shí)需要修正分析時(shí)定義的繼承結(jié)構(gòu), 以便更好地運(yùn)用多態(tài) 分析時(shí), 應(yīng)針對(duì)問(wèn)題的本質(zhì)定義繼承 99 繼承繼承 vs. 聚合聚合 容易混淆 v 繼承是 “is-a” 或 “kind-of” 的關(guān)系 v 聚合是 “has-a” 的關(guān)系 替代法則:測(cè)試?yán)^承關(guān)系 替代法則替
36、代法則 如果子類如果子類 D 的一個(gè)對(duì)象被替換為父類的一個(gè)對(duì)象被替換為父類 B 的一個(gè)的一個(gè) 對(duì)象對(duì)象, 在類在類 B 中定義的所有程序的行為應(yīng)保持不中定義的所有程序的行為應(yīng)保持不 變。變。 100 大型系統(tǒng),包大型系統(tǒng),包 大的系統(tǒng)模型需要定義很多類 包:類圖中緊密關(guān)聯(lián)的部分的組合, 有助 于更好地理解系統(tǒng) 包是系統(tǒng)中的邏輯“功能塊” 包的名字在整個(gè)系統(tǒng)中必須是唯一的 每個(gè)包完成系統(tǒng)的一個(gè)主要功能 PackageName 101 模型的組織模型的組織 一個(gè)類圖, 可以只包含包,稱作頂層類圖 頂層類圖揭示系統(tǒng)的邏輯結(jié)構(gòu), 也就是系統(tǒng)的層 次和部分 每個(gè)包都可由其它的包、類和關(guān)系組成 GUIWi
37、dgetsRegistration UserInterface Foundation Components global Registration System 102 103 104 類類類的實(shí)例類的實(shí)例類定義示例類定義示例 正方形正方形 邊長(zhǎng)邊長(zhǎng) 位置位置 邊界顏色邊界顏色 內(nèi)部顏色內(nèi)部顏色 畫圖畫圖 擦圖擦圖 移動(dòng)移動(dòng) 105 (0個(gè)或個(gè)或1個(gè))個(gè)) (0個(gè)或多個(gè))個(gè)或多個(gè)) 1+( (1個(gè)或多個(gè))個(gè)或多個(gè)) 1 2,4( (12個(gè)或個(gè)或4個(gè))個(gè)) 106 107 108 109 110 111 112 113 114 115 打打電電話話者者拿拿起起電電話話受受話話器器 電電話話忙忙音
38、音開(kāi)開(kāi)始始 打打電電話話者者撥撥數(shù)數(shù)字字( (8 8) ) 電電話話忙忙音音結(jié)結(jié)束束 打打電電話話者者撥撥數(shù)數(shù)字字( (2 2) ) . . . . . . . . 打打電電話話者者撥撥數(shù)數(shù)字字( (3 3) ) 接接電電話話者者的的電電話話開(kāi)開(kāi)始始振振鈴鈴 鈴鈴聲聲在在打打電電話話者者的的電電話話上上傳傳出出 接接電電話話者者回回答答 接接電電話話者者的的電電話話停停止止振振鈴鈴 鈴鈴聲聲在在打打電電話話者者的的電電話話中中消消失失 通通電電話話 . . . . . . . . . . 116 117 118 119 120 121 什么是用例(什么是用例(use case) 用例是幫助分析
39、員和用戶確定系統(tǒng)使用用例是幫助分析員和用戶確定系統(tǒng)使用 情況的情況的UML組件;組件; 一組用例就是從用戶的角度出發(fā)如何使一組用例就是從用戶的角度出發(fā)如何使 用系統(tǒng)的描述;用系統(tǒng)的描述; 可認(rèn)為用例是系統(tǒng)的一組使用場(chǎng)景;可認(rèn)為用例是系統(tǒng)的一組使用場(chǎng)景; 每個(gè)場(chǎng)景描述了一個(gè)事件的序列;每個(gè)場(chǎng)景描述了一個(gè)事件的序列; 每個(gè)序列是由一個(gè)人、另一個(gè)系統(tǒng)、一每個(gè)序列是由一個(gè)人、另一個(gè)系統(tǒng)、一 個(gè)硬件設(shè)備或某段時(shí)間的流逝所發(fā)起;個(gè)硬件設(shè)備或某段時(shí)間的流逝所發(fā)起; 每個(gè)發(fā)起事件序列的實(shí)體叫做每個(gè)發(fā)起事件序列的實(shí)體叫做參與者參與者 (actor)或或行動(dòng)者行動(dòng)者 122 用例建模 q用例建模是用于描述一個(gè)系統(tǒng)
40、應(yīng)用例建模是用于描述一個(gè)系統(tǒng)應(yīng) 該做什么的建模技術(shù)該做什么的建模技術(shù) q用例建??捎糜谛孪到y(tǒng)的需求獲用例建??捎糜谛孪到y(tǒng)的需求獲 取,也可用于已有系統(tǒng)的升級(jí)取,也可用于已有系統(tǒng)的升級(jí) 123 用例模型(use case model) q一個(gè)用例模型可由若干幅用例圖組成一個(gè)用例模型可由若干幅用例圖組成 q用例描述了用戶和系統(tǒng)之間的交互,其重點(diǎn)是系統(tǒng)為用用例描述了用戶和系統(tǒng)之間的交互,其重點(diǎn)是系統(tǒng)為用 戶做什么戶做什么 q用例模型描述全部的用例模型描述全部的系統(tǒng)功能行為系統(tǒng)功能行為 q一幅用例圖包含的模型元素有:一幅用例圖包含的模型元素有: 用例用例 參與者(行為者、執(zhí)行者)參與者(行為者、執(zhí)行者) 系統(tǒng)系統(tǒng) 124 系統(tǒng)系統(tǒng)被看作提供用例的黑盒子被看作提供用例的黑盒子 一個(gè)一個(gè)用例用例是可以被行為者感受到的一個(gè)是可以被行為者感受到的一個(gè) 完整的功能完整的功能 行為者行為者是和用戶交互
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇科版數(shù)學(xué)七年級(jí)上冊(cè)4.2《一元二次方程的解法》(第6課時(shí))聽(tīng)評(píng)課記錄
- 冀教版數(shù)學(xué)八年級(jí)上冊(cè)《SAS》聽(tīng)評(píng)課記錄5
- 湘教版數(shù)學(xué)七年級(jí)下冊(cè)3.2.2《角的度量》聽(tīng)評(píng)課記錄
- (湘教版)七年級(jí)數(shù)學(xué)下冊(cè):2.1.4《多項(xiàng)式的乘法》聽(tīng)評(píng)課記錄
- 七年級(jí)道德與法治上冊(cè)第三單元 師長(zhǎng)情誼第六課師生之間第2框師生交往聽(tīng)課評(píng)課記錄(新人教版)
- 人教版七年級(jí)數(shù)學(xué)上冊(cè):4.1.2《點(diǎn)、線、面、體》聽(tīng)評(píng)課記錄1
- 湘教版數(shù)學(xué)七年級(jí)上冊(cè)1.4.1《有理數(shù)的加法》聽(tīng)評(píng)課記錄
- 部編版八年級(jí)道德與法治上冊(cè)聽(tīng)課評(píng)課記錄《9.1認(rèn)識(shí)總體國(guó)家安全觀》
- 暑假小學(xué)一年級(jí)學(xué)習(xí)計(jì)劃
- 三年級(jí)下學(xué)期班主任工作計(jì)劃
- 2025中國(guó)移動(dòng)安徽分公司春季社會(huì)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 七年級(jí)英語(yǔ)下學(xué)期開(kāi)學(xué)考試(深圳專用)-2022-2023學(xué)年七年級(jí)英語(yǔ)下冊(cè)單元重難點(diǎn)易錯(cuò)題精練(牛津深圳版)
- 杭州市房地產(chǎn)經(jīng)紀(jì)服務(wù)合同
- 放射科護(hù)理常規(guī)
- 新時(shí)代中小學(xué)教師職業(yè)行為十項(xiàng)準(zhǔn)則
- 人教版八年級(jí)上冊(cè)英語(yǔ)1-4單元測(cè)試卷(含答案)
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 初中數(shù)學(xué)教學(xué)經(jīng)驗(yàn)分享
- 新聞?dòng)浾咦C600道考試題-附標(biāo)準(zhǔn)答案
- 2024年公開(kāi)招聘人員報(bào)名資格審查表
- TSG ZF001-2006《安全閥安全技術(shù)監(jiān)察規(guī)程》
評(píng)論
0/150
提交評(píng)論