Chapter7用例建模-review29-04-2015_第1頁
Chapter7用例建模-review29-04-2015_第2頁
Chapter7用例建模-review29-04-2015_第3頁
Chapter7用例建模-review29-04-2015_第4頁
Chapter7用例建模-review29-04-2015_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、n7.1 面向?qū)ο蠓椒ǜ攀雒嫦驅(qū)ο蠓椒ǜ攀鰊7.2 用例建模用例建模第第7章章 用例分析用例分析7.1 面向?qū)ο蠓椒ǜ攀雒嫦驅(qū)ο蠓椒ǜ攀鰊面向?qū)ο蟮能浖こ堂嫦驅(qū)ο蟮能浖こ蘮面向?qū)ο蟮姆治?,簡稱:面向?qū)ο蟮姆治觯喎Q:OOAn面向?qū)ο蟮脑O(shè)計,簡稱:面向?qū)ο蟮脑O(shè)計,簡稱:OODn面向?qū)ο蟪绦蛟O(shè)計,簡稱:面向?qū)ο蟪绦蛟O(shè)計,簡稱:OOPn面向?qū)ο蟮臏y試,簡稱:面向?qū)ο蟮臏y試,簡稱:OOTn面向?qū)ο髷?shù)據(jù)庫系統(tǒng),簡稱:面向?qū)ο髷?shù)據(jù)庫系統(tǒng),簡稱:OODBMSn面向?qū)ο笥嬎銠C軟件輔助工程,簡稱:面向?qū)ο笥嬎銠C軟件輔助工程,簡稱:OOCASEn面向?qū)ο蟮恼Z言面向?qū)ο蟮恼Z言n1 程序設(shè)計技術(shù)的發(fā)展程序設(shè)計技術(shù)

2、的發(fā)展 n 1.1 面向機器的語言面向機器的語言n 機器語言機器語言是硬件邏輯設(shè)計所實現(xiàn)的機器指令的集合,也就是硬件邏輯設(shè)計所實現(xiàn)的機器指令的集合,也就是由硬件所能實現(xiàn)的語義序列集合。其表現(xiàn)形式為能被機器直是由硬件所能實現(xiàn)的語義序列集合。其表現(xiàn)形式為能被機器直接接收的二進制代碼序列。接接收的二進制代碼序列。n 匯編語言匯編語言是機器語言的直接符號映射。它用人類能夠理解是機器語言的直接符號映射。它用人類能夠理解的助記符號來表示機器指令、寄存器、存儲器地址等物理概念的助記符號來表示機器指令、寄存器、存儲器地址等物理概念,以提高程序的可讀性。,以提高程序的可讀性。程序設(shè)計語言的發(fā)展程序設(shè)計語言的發(fā)展

3、機器語言與匯編語言機器語言與匯編語言n由計算機硬件系統(tǒng)可以識別的二進制指令由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言稱為機器語言。組成的語言稱為機器語言。計算機發(fā)展的初期,軟件工程師們只能用機器計算機發(fā)展的初期,軟件工程師們只能用機器語言來編寫程序。這一階段,在人類的自然語言和語言來編寫程序。這一階段,在人類的自然語言和計算機編程語言之間存在著巨大的鴻溝。計算機編程語言之間存在著巨大的鴻溝。n匯編語言將機器指令映射為一些可以被人匯編語言將機器指令映射為一些可以被人讀懂的助記符,如讀懂的助記符,如ADDADD、SUBSUB等。等。此時編程語言與人類自然語言間的鴻溝略有縮此時編程語言與人類自然

4、語言間的鴻溝略有縮小,但仍與人類的思維相差甚遠。因為它的抽象層小,但仍與人類的思維相差甚遠。因為它的抽象層次太低,程序員需要考慮大量的機器細節(jié)。次太低,程序員需要考慮大量的機器細節(jié)。n計算機語言的發(fā)展高級語言高級語言高級語言屏蔽了機器的細節(jié),提高了語高級語言屏蔽了機器的細節(jié),提高了語言的抽象層次,程序中可以采用具有一定涵言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。這使義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。這使得在書寫程序時可以聯(lián)系到程序所描述的具得在書寫程序時可以聯(lián)系到程序所描述的具體事物。體事物。n計算機語言的發(fā)展面向?qū)ο蟮恼Z言面向?qū)ο蟮恼Z言n出發(fā)點:出發(fā)點:n更直接

5、地描述客觀世界中存在的事物更直接地描述客觀世界中存在的事物( (對象對象) )以及它們之間的關(guān)系。以及它們之間的關(guān)系。n特點:特點:n是高級語言。是高級語言。n將客觀事物看作具有屬性和行為的對象。將客觀事物看作具有屬性和行為的對象。n通過抽象找出同一類對象的共同屬性和行為通過抽象找出同一類對象的共同屬性和行為,形成類。,形成類。n通過類的繼承與多態(tài)實現(xiàn)代碼重用通過類的繼承與多態(tài)實現(xiàn)代碼重用n計算機語言的發(fā)展面向?qū)ο蟮恼Z言面向?qū)ο蟮恼Z言n優(yōu)點:優(yōu)點:使程序能夠比較直接地反映問題域的使程序能夠比較直接地反映問題域的本來面目,軟件開發(fā)人員能夠利用人類認本來面目,軟件開發(fā)人員能夠利用人類認識事物所采用

6、的一般思維方法來進行軟件識事物所采用的一般思維方法來進行軟件開發(fā)。開發(fā)。n計算機語言的發(fā)展 早期的計算機應(yīng)用以問題求解為主要目標(biāo),算早期的計算機應(yīng)用以問題求解為主要目標(biāo),算法的設(shè)計和實現(xiàn)是程序設(shè)計活動的焦點。注重追求法的設(shè)計和實現(xiàn)是程序設(shè)計活動的焦點。注重追求算法的效率,并不特別注意算法與數(shù)據(jù)結(jié)構(gòu)的依賴算法的效率,并不特別注意算法與數(shù)據(jù)結(jié)構(gòu)的依賴關(guān)系,算法和數(shù)據(jù)處于相對獨立的狀態(tài)。關(guān)系,算法和數(shù)據(jù)處于相對獨立的狀態(tài)。n1.2 面向問題的語言面向問題的語言nFORTRAN語言語言 引入了程序設(shè)計語言中程序控制程序控制結(jié)構(gòu)、符號命名機制結(jié)構(gòu)、符號命名機制等一些最重要的基本概念。例如:命命名子程序、

7、變量作為存儲單元的抽象以及數(shù)組的概念等。名子程序、變量作為存儲單元的抽象以及數(shù)組的概念等。n隨著編譯技術(shù)的突破產(chǎn)生的隨著編譯技術(shù)的突破產(chǎn)生的高級語言高級語言用接近人用接近人類習(xí)慣的自然語言或數(shù)學(xué)語言表達問題、編制程序。類習(xí)慣的自然語言或數(shù)學(xué)語言表達問題、編制程序。n高級語言通過引入一些抽象概念,屏蔽機器底層高級語言通過引入一些抽象概念,屏蔽機器底層的差異,使它獨立于機器,不但有效地提高了程序設(shè)計的差異,使它獨立于機器,不但有效地提高了程序設(shè)計的效率,也帶來了程序的可移植性。的效率,也帶來了程序的可移植性。n 由于算法總是以過程(子程序)的形式由于算法總是以過程(子程序)的形式出現(xiàn),面向問題的程

8、序也叫做過程化程序出現(xiàn),面向問題的程序也叫做過程化程序設(shè)計。設(shè)計。n模塊化程序設(shè)計模塊化程序設(shè)計n FORTRAN語言還引入了語言還引入了獨立編譯的模塊獨立編譯的模塊和和可重用可重用子程序庫子程序庫的概念,這種技術(shù)后來被稱為的概念,這種技術(shù)后來被稱為模塊化程序設(shè)計。模塊化程序設(shè)計。n模塊化的思想是將應(yīng)用程序劃分若干個模塊化的思想是將應(yīng)用程序劃分若干個規(guī)模適度的模塊,每個模塊獨立命名、獨立規(guī)模適度的模塊,每個模塊獨立命名、獨立編譯,最后通過連接程序形成可招待的應(yīng)用編譯,最后通過連接程序形成可招待的應(yīng)用程序。程序。 n模塊化程序設(shè)計帶來了以下一些重要概念:模塊化程序設(shè)計帶來了以下一些重要概念:n模

9、塊內(nèi)信息隱藏,模塊內(nèi)信息隱藏,一個模塊中的變量可以與其它模塊一個模塊中的變量可以與其它模塊中的變量同名而不至于產(chǎn)生混淆;中的變量同名而不至于產(chǎn)生混淆;n模塊間通過全局環(huán)境共享數(shù)據(jù);模塊間通過全局環(huán)境共享數(shù)據(jù);n模塊間通過外部變量、公共變量實現(xiàn)通信。模塊間通過外部變量、公共變量實現(xiàn)通信。n 模塊化程序設(shè)計倡導(dǎo)的這些概念被證明是程序組織和模塊化程序設(shè)計倡導(dǎo)的這些概念被證明是程序組織和管理有效的基本手段,在以后程序設(shè)計技術(shù)發(fā)展的各個階段管理有效的基本手段,在以后程序設(shè)計技術(shù)發(fā)展的各個階段得以延續(xù)和發(fā)展得以延續(xù)和發(fā)展。n1.3 面向數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計面向數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計n研究證明,僅用研究證明,僅用

10、順序,分支,循環(huán)三種順序,分支,循環(huán)三種基本控制結(jié)構(gòu)基本控制結(jié)構(gòu)即能構(gòu)造出任何單入口、單出即能構(gòu)造出任何單入口、單出口的程序塊??诘某绦驂K。n這些研究結(jié)果與模塊化的概念相結(jié)合,這些研究結(jié)果與模塊化的概念相結(jié)合,形成了采用形成了采用自頂向下、逐步求精自頂向下、逐步求精的設(shè)計步驟的設(shè)計步驟和和單入口單出口單入口單出口基本控制結(jié)構(gòu)的基本控制結(jié)構(gòu)的結(jié)構(gòu)化程序結(jié)構(gòu)化程序設(shè)計設(shè)計方法。方法。nPascal語言和語言和C語言都是結(jié)構(gòu)化程序語言都是結(jié)構(gòu)化程序設(shè)計語言。同時它們也是過程化程序設(shè)計設(shè)計語言。同時它們也是過程化程序設(shè)計語言。語言。n Pascal語言用過程來組織程序。語言用過程來組織程序。nC語言用

11、函數(shù)來組織程序。語言用函數(shù)來組織程序。n 過程過程(Procedure)和函數(shù)和函數(shù)(Function)是子是子程序程序(Subroutine)的兩種具體形式。的兩種具體形式。過程沒有返過程沒有返回值。函數(shù)函數(shù)有且只有一個返回值?;刂?。函數(shù)函數(shù)有且只有一個返回值。 結(jié)構(gòu)化程序設(shè)計的研究中有一個重要的結(jié)論,結(jié)構(gòu)化程序設(shè)計的研究中有一個重要的結(jié)論,表示為公式:表示為公式:程序程序=算法算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu),強調(diào)算法對數(shù),強調(diào)算法對數(shù)據(jù)結(jié)構(gòu)的依賴性,體現(xiàn)了一種數(shù)據(jù)結(jié)構(gòu)為中心的觀據(jù)結(jié)構(gòu)的依賴性,體現(xiàn)了一種數(shù)據(jù)結(jié)構(gòu)為中心的觀念。念。 大多數(shù)結(jié)構(gòu)化語言都具有大多數(shù)結(jié)構(gòu)化語言都具有定義新的數(shù)據(jù)類型定義新的

12、數(shù)據(jù)類型的的功能,如功能,如C語言中枚舉語言中枚舉(enum) 、結(jié)構(gòu)、結(jié)構(gòu)(struct)類型類型等。這有利于比較準確地描述待求解問題中的實體等。這有利于比較準確地描述待求解問題中的實體,并保證數(shù)據(jù)的一致性。,并保證數(shù)據(jù)的一致性。 數(shù)據(jù)庫技術(shù)和數(shù)據(jù)庫管理語言也體現(xiàn)了程序設(shè)數(shù)據(jù)庫技術(shù)和數(shù)據(jù)庫管理語言也體現(xiàn)了程序設(shè)計以數(shù)據(jù)結(jié)構(gòu)為中心的鮮明特色。計以數(shù)據(jù)結(jié)構(gòu)為中心的鮮明特色。n以數(shù)據(jù)結(jié)構(gòu)為中心的蔽端:以數(shù)據(jù)結(jié)構(gòu)為中心的蔽端:n整個程序中許多重要的過程和函數(shù)的實現(xiàn)依整個程序中許多重要的過程和函數(shù)的實現(xiàn)依賴于一個或幾個關(guān)鍵數(shù)據(jù)結(jié)構(gòu),如果關(guān)鍵數(shù)據(jù)結(jié)構(gòu)賴于一個或幾個關(guān)鍵數(shù)據(jù)結(jié)構(gòu),如果關(guān)鍵數(shù)據(jù)結(jié)構(gòu)中的一個或

13、幾個數(shù)據(jù)有所改變,則會波及到整個系中的一個或幾個數(shù)據(jù)有所改變,則會波及到整個系統(tǒng),許多過程和函數(shù)必須重寫。這是不利于程序的統(tǒng),許多過程和函數(shù)必須重寫。這是不利于程序的維護和擴展的。維護和擴展的。n 1.4 面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計n 面向?qū)ο蟮某绦蛟O(shè)計方法繼承了結(jié)構(gòu)化、過程化、模塊化等方法的所有積極成分,創(chuàng)造性地引入了“對象”這一構(gòu)建程序的基本構(gòu)件。n對象對象是由是由數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)和對數(shù)據(jù)和對數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)的操作或運算操作或運算封裝而成的一封裝而成的一個整體。個整體。n封裝使得算法和數(shù)據(jù)結(jié)構(gòu)的關(guān)系由算法對數(shù)由算法對數(shù)據(jù)結(jié)構(gòu)單方面的依賴變成了相互依存據(jù)結(jié)構(gòu)單方面的依賴變成了相互依存

14、的關(guān)系。n面向?qū)ο蠓椒ú捎脭?shù)據(jù)抽象與隱藏、面向?qū)ο蠓椒ú捎脭?shù)據(jù)抽象與隱藏、層次結(jié)構(gòu)體系,動態(tài)綁定等概念和措施,層次結(jié)構(gòu)體系,動態(tài)綁定等概念和措施,提供一種提供一種模擬人類認知方式的軟件系統(tǒng)建模擬人類認知方式的軟件系統(tǒng)建模方法模方法,帶來了系統(tǒng)的安全性、可擴充性,帶來了系統(tǒng)的安全性、可擴充性、代碼重用、易維護等人們期待的特性。、代碼重用、易維護等人們期待的特性。 nOOPL的來源與發(fā)展的來源與發(fā)展nOOPL(Object Oriented Programming Language 面向?qū)ο蟪绦蛟O(shè)計語言)面向?qū)ο蟪绦蛟O(shè)計語言)n20世紀世紀60年代年代, 由挪威計算中心由挪威計算中心Ole Dah

15、l和和Krysten Nygaard.主持開發(fā)的主持開發(fā)的Simula 67 被公認為是面被公認為是面向?qū)ο笳Z言的先驅(qū)。向?qū)ο笳Z言的先驅(qū)。n20世紀世紀70年代,由美國國防部資助開發(fā)的年代,由美國國防部資助開發(fā)的Ada語言語言,以它對抽象數(shù)據(jù)類型的支持,而在面向?qū)ο笳Z言發(fā)展中占,以它對抽象數(shù)據(jù)類型的支持,而在面向?qū)ο笳Z言發(fā)展中占有重要地位。有重要地位。n Simula 67 和和Ada被看作是被看作是OOPL的兩個直接的兩個直接的的“祖先祖先”,一個引入,一個引入“模擬模擬”,一個引入,一個引入“抽抽象象”。nn20世紀世紀70年代到年代到80年代年代, 美國美國Xerox公司,公司,Palo

16、 Alto研究中心(研究中心(PARC)的)的Alan Kay, Adale Goldberg和和Dan Ingans等人主持開發(fā)的等人主持開發(fā)的Smalltalk語言正式使用了語言正式使用了“面向?qū)ο竺嫦驅(qū)ο蟆边@個術(shù)語。它的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計方這個術(shù)語。它的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計方法的正式形成。法的正式形成。nn1981年推出的年推出的Smalltalk-80是是Smalltalk語言最完語言最完善的版本。它是第一個能夠?qū)嶋H應(yīng)用的純的面向?qū)ο笳Z言。善的版本。它是第一個能夠?qū)嶋H應(yīng)用的純的面向?qū)ο笳Z言。在在Smalltalk_80中類和對象不僅僅是語言成分,而且是交中類和對象不僅僅是

17、語言成分,而且是交互式程序設(shè)計環(huán)境的組成部分?;ナ匠绦蛟O(shè)計環(huán)境的組成部分。n80年代中期,年代中期,Simular 67、Smalltalk_80等語言的影響僅僅等語言的影響僅僅局限在學(xué)術(shù)界。面向?qū)ο笳Z言對計算平臺的特殊要求使這些語言難于被局限在學(xué)術(shù)界。面向?qū)ο笳Z言對計算平臺的特殊要求使這些語言難于被軟件開發(fā)商和程序員接受。軟件開發(fā)商和程序員接受。n貝爾實驗室的貝爾實驗室的Bjarne Stroustrup 及其研究小組在及其研究小組在當(dāng)時最受歡迎的當(dāng)時最受歡迎的C語言基礎(chǔ)上開發(fā)的語言基礎(chǔ)上開發(fā)的C+語言,引入了對面語言,引入了對面向?qū)ο蟾拍畹闹С帧O驅(qū)ο蟾拍畹闹С?。nC+語言以其與語言以其與

18、C語言兼容、高運行效率等優(yōu)良特性,語言兼容、高運行效率等優(yōu)良特性,使面向?qū)ο蟪绦蛟O(shè)計技術(shù)受到軟件工業(yè)界的廣泛關(guān)注,使之使面向?qū)ο蟪绦蛟O(shè)計技術(shù)受到軟件工業(yè)界的廣泛關(guān)注,使之進入一個全面發(fā)展的時期。盡管進入一個全面發(fā)展的時期。盡管C+只能算作一種混合式只能算作一種混合式面向?qū)ο笳Z言面向?qū)ο笳Z言。但是正是由于大量。但是正是由于大量C程序員通過程序員通過C+的幫助的幫助才迅速掌握了面向?qū)ο蟮母拍詈头椒?,全面促進了面向?qū)ο蟛叛杆僬莆樟嗣嫦驅(qū)ο蟮母拍詈头椒?,全面促進了面向?qū)ο蠹夹g(shù)的應(yīng)用,從而使技術(shù)的應(yīng)用,從而使C+成為最有影響的面向?qū)ο笳Z言,成為最有影響的面向?qū)ο笳Z言,甚至許多人把甚至許多人把C+當(dāng)作當(dāng)作

19、面向?qū)ο蟮拇~。面向?qū)ο蟮拇~。n面向?qū)ο蠹夹g(shù)的流行進一步促進了面向?qū)ο笳Z言的繁榮。面向?qū)ο蠹夹g(shù)的流行進一步促進了面向?qū)ο笳Z言的繁榮。90年年代涌現(xiàn)出了一大批實用的面向?qū)ο笳Z言,如代涌現(xiàn)出了一大批實用的面向?qū)ο笳Z言,如Object Pascal、Eiffel、Java等等。等等。nJava語言是由語言是由Sun Microsystem公司推出的一種公司推出的一種純面向?qū)ο蠹兠嫦驅(qū)ο笳Z言語言。Java從從C+語言中繼承了大量的語言成分,拋棄了語言中繼承了大量的語言成分,拋棄了C+語言中語言中冗余的和容易引起問題的功能,它將面向?qū)ο?、平臺無關(guān)性、穩(wěn)定性、冗余的和容易引起問題的功能,它將面向?qū)ο?/p>

20、、平臺無關(guān)性、穩(wěn)定性、安全性等集于一身,提供了一個良好的程序設(shè)計環(huán)境,因而成為適合于安全性等集于一身,提供了一個良好的程序設(shè)計環(huán)境,因而成為適合于分布式計算的程序設(shè)計語言。分布式計算的程序設(shè)計語言。nnJava語言于語言于90年代中期的迅速流行與它定位于當(dāng)時迅速發(fā)展的年代中期的迅速流行與它定位于當(dāng)時迅速發(fā)展的Internet的的WWW應(yīng)用開發(fā)有關(guān)。展示了面向?qū)ο蠹夹g(shù)與分布式計算應(yīng)用開發(fā)有關(guān)。展示了面向?qū)ο蠹夹g(shù)與分布式計算結(jié)合的重大前景。結(jié)合的重大前景。n程序設(shè)計語言程序設(shè)計語言: C+, Javan腳本語言腳本語言: Java Script , VBScriptn標(biāo)記語言標(biāo)記語言: SGML,

21、 HTML, XMLn樣式語言樣式語言: CSS, XSLn建模語言建模語言: UMLn2 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?n 2.1 面向?qū)ο蟮哪繕?biāo)面向?qū)ο蟮哪繕?biāo) n n建立一個既能在計算機系統(tǒng)中自然地表示客觀世界的建立一個既能在計算機系統(tǒng)中自然地表示客觀世界的問題、又能夠超越程序復(fù)雜性障礙的程序設(shè)計模型。問題、又能夠超越程序復(fù)雜性障礙的程序設(shè)計模型。 n面向?qū)ο蠓椒ㄍㄟ^對客觀世界和問題世界的直接模擬,面向?qū)ο蠓椒ㄍㄟ^對客觀世界和問題世界的直接模擬,建立較為準確、自然的程序設(shè)計模型,從而獲得信息處建立較為準確、自然的程序設(shè)計模型,從而獲得信息處理的更高性能。理的更高性能。n計算機世界n

22、(程序空間)n主觀世界n(問題空間)n客觀世界n(真實空間)n圖 1 客觀世界、主觀世界和計算機世界n n從計算機軟件設(shè)計的角度,引入類和對象的概念,將客觀世界和主觀世界中的實體和問題直接映射到計算機世界的程序空間。這就是面向?qū)ο蠓椒ǖ幕境霭l(fā)點。對象具有的特征對象具有的特征n萬物皆為對象萬物皆為對象n每個對象都有自己的惟一標(biāo)識每個對象都有自己的惟一標(biāo)識n對象具有屬性和行為對象具有屬性和行為n對象具有狀態(tài)對象具有狀態(tài)n對象之間依靠消息實現(xiàn)通信對象之間依靠消息實現(xiàn)通信n分類:從大量相似的實體中歸納、抽象出相同特征,為辨識新的個體形成參照模式。n 對象和類的概念是面向?qū)ο蠹夹g(shù)中最重要的概念。對象和

23、類分別對應(yīng)認識論中實體和對實體的分類。n實體:客觀世界或問題世界中可直接或間接觀察的個體。n物理實體:一本書,一輛汽車n觀念實體:一筆帳,2008北京奧運會n抽象是對具體事物簡化描述的過程,它強調(diào)了系統(tǒng)的某些主要特性面而忽略了其它特性。 n一個分類至少應(yīng)抽象出兩個方面的特征,一是數(shù)據(jù)特征,一是行為特征。nn比如人類,有年齡、性別、身高、體重,健康狀態(tài)、所屬工作單位等特征,這些特征可以用一些具體的數(shù)值來描述,屬于數(shù)據(jù)特征。數(shù)據(jù)特征又稱屬性或狀態(tài),是區(qū)分不同個體的依據(jù)。nn人類還有行為特征,如吃飯、走路、學(xué)習(xí)、成長等。行為特征是同一個類的所有個體共有的。 n 2.2 面向?qū)ο笳Z言中的類和對象面向?qū)?/p>

24、象語言中的類和對象n 在面向?qū)ο笳Z言中通常以下面描述的方式來定義類在面向?qū)ο笳Z言中通常以下面描述的方式來定義類:類定義:類定義: 類名類名1 私有數(shù)據(jù):私有數(shù)據(jù): 數(shù)據(jù)類型數(shù)據(jù)類型1: 屬性數(shù)據(jù)屬性數(shù)據(jù)1; 數(shù)據(jù)類型數(shù)據(jù)類型2: 屬性數(shù)據(jù)屬性數(shù)據(jù)2; 數(shù)據(jù)類型數(shù)據(jù)類型3: 屬性數(shù)據(jù)屬性數(shù)據(jù)3; 公有方法:公有方法: 方法(行為)方法(行為)1; 方法(行為)方法(行為)2; ;類類是一個形體形體定義,它對一個數(shù)據(jù)特性和方法特性的封裝體進行說明。類定義中包含兩類成員:數(shù)據(jù)成員和方法成員。類的定義為該類的對象提供了創(chuàng)建的模式。n 根據(jù)已定義的類,可以按下述方式創(chuàng)建對象:根據(jù)已定義的類,可以按下述方

25、式創(chuàng)建對象:類名類名1:對象名:對象名1,對象名,對象名2;類名類名2:對象名:對象名3;對象對象是類的實例實例。對象是按照類提供的模板進行的實體定義,它將為對象在內(nèi)存中分配實際的存儲空間。在程序中對象間相互通信和作用,共同完成程序功能。 類與對象的關(guān)系就是數(shù)據(jù)類型和該類型變量的關(guān)系。如: int x. y; float f1, f2; clock t1, t2; Complex c1, c2, c3;n 數(shù)據(jù)類型數(shù)據(jù)類型是不同形式的信息在內(nèi)存中分配方式的基本約是不同形式的信息在內(nèi)存中分配方式的基本約定,是構(gòu)造程序的基礎(chǔ)。定,是構(gòu)造程序的基礎(chǔ)。n 每種程序設(shè)計語言中都定義了自己的基本數(shù)據(jù)類型集

26、合每種程序設(shè)計語言中都定義了自己的基本數(shù)據(jù)類型集合和利用基本數(shù)據(jù)類型定義的擴展數(shù)據(jù)類型。和利用基本數(shù)據(jù)類型定義的擴展數(shù)據(jù)類型。n 常量、變量甚至函數(shù)都有自己的數(shù)據(jù)類型。常量、變量甚至函數(shù)都有自己的數(shù)據(jù)類型。n C語言等結(jié)構(gòu)化程序設(shè)計語言還為用戶提供了自定義數(shù)語言等結(jié)構(gòu)化程序設(shè)計語言還為用戶提供了自定義數(shù)據(jù)類型的手段。據(jù)類型的手段。n從抽象數(shù)據(jù)類型的觀點看類和對象從抽象數(shù)據(jù)類型的觀點看類和對象n 一個數(shù)據(jù)類型的定義包括一個值集和一個作用于該值集的操作集。n 如C語言中的int型(整型),n 其值集為A= n| nN, -32768n+32767 , n 其操作集是加、減、乘、整除、取模等等。n

27、面向?qū)ο笳Z言中的類是一種新的用戶自定義數(shù)據(jù)類型面向?qū)ο笳Z言中的類是一種新的用戶自定義數(shù)據(jù)類型“類類”類型。類型。n 類的所有數(shù)據(jù)成員形成類類型的值集,類的所有方法類的所有數(shù)據(jù)成員形成類類型的值集,類的所有方法成員形成類類型的操作集。成員形成類類型的操作集。n 以這個觀點來看,對象就是“類類型”的一個實例,通常以變量的形式出現(xiàn)。如果定義了一個類名為book的類,則創(chuàng)建book類的對象b1, b2的語法形式:book b1, b2;和聲明基本數(shù)據(jù)類型變量的語法形式:int a, b; double x;完全一樣??梢韵袷褂谜妥兞縜、b,雙精度型變量x一樣使用book型變量b1、b2。 類類型能像

28、內(nèi)部數(shù)據(jù)類型一樣工作。區(qū)別在于程序員定義的類是為了描述具體問題,模擬問題空間中的對象。實際上,程序員通過增添自己所需要的新類對程序設(shè)計語言本身進行了擴展。n對象中所包含的方法實際上就是過程或函數(shù),方法一定屬于某個特定類的對象,是實現(xiàn)對象功能算法的代碼塊。n在編寫方法實現(xiàn)代碼時仍應(yīng)遵循結(jié)構(gòu)化的原則,使用單入口單出口的幾種基本控制結(jié)構(gòu)。n關(guān)于“方法”n 在結(jié)構(gòu)化程序設(shè)計中,過程是由使用在結(jié)構(gòu)化程序設(shè)計中,過程是由使用者顯式調(diào)用的獨立實體,對于相同的輸者顯式調(diào)用的獨立實體,對于相同的輸入?yún)?shù),每次過程調(diào)用有相同的結(jié)果。入?yún)?shù),每次過程調(diào)用有相同的結(jié)果。n 而在面向?qū)ο蟪绦蛴嬛?,過程作為對而在面向?qū)ο?/p>

29、程序計中,過程作為對象的方法,不再是獨立存在的實體,而象的方法,不再是獨立存在的實體,而是對象功能的體現(xiàn)。這使得對象可以理是對象功能的體現(xiàn)。這使得對象可以理解為一臺自動機。對象的私有數(shù)據(jù)可以解為一臺自動機。對象的私有數(shù)據(jù)可以看作自動機的狀態(tài)。對象的狀態(tài)只能由看作自動機的狀態(tài)。對象的狀態(tài)只能由對象的方法改變。對象的方法改變。n 對象狀態(tài)的改變是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的。所謂發(fā)送消息,就是從對象外部調(diào)用對象的公有方法。n 發(fā)送消息不同于一般的過程調(diào)用,發(fā)送消息不同于一般的過程調(diào)用,發(fā)送消息只是觸發(fā)自動機,同樣的輸發(fā)送消息只是觸發(fā)自動機,同樣的輸入?yún)?shù)時,可能因為自動機狀態(tài)不同入?yún)?shù)時,可能因為自

30、動機狀態(tài)不同而有不同的輸出結(jié)果。而有不同的輸出結(jié)果。n2. 3 類的基本特性類的基本特性 n 2.3.1 封裝性封裝性 (Encapsulate)n n類的三大基本特性:n封裝性、繼承性和多態(tài)性n類是數(shù)據(jù)成員和方法成員的封裝體。封裝不僅僅是將數(shù)據(jù)和方法這兩種不同的語言成分捆綁在一起,它還具有數(shù)據(jù)隱藏的機制。n數(shù)據(jù)隱藏是通過限制數(shù)據(jù)的訪問權(quán)限實現(xiàn)的數(shù)據(jù)隱藏是通過限制數(shù)據(jù)的訪問權(quán)限實現(xiàn)的。一個類中的數(shù)據(jù)通常被聲明為私有的。不允許從。一個類中的數(shù)據(jù)通常被聲明為私有的。不允許從類的外部直接訪問。類的外部直接訪問。n封裝和數(shù)據(jù)隱藏封裝和數(shù)據(jù)隱藏不僅防止了數(shù)據(jù)從外部破壞的可能性,更保證了對象對于其邊界以外

31、的外部世界作為一個自足的、透明的實體存在。 n引入對象的封裝機制的目的是將對象的使用者和設(shè)計者區(qū)分開來。nn類的公有方法是對象向?qū)ο蟮氖褂谜唛_放的接口(Interface)。n 從對象與其外部世界的關(guān)系來看,對象是一個在系統(tǒng)中負有一定責(zé)任的服務(wù)器。n 外部世界的事件,如人機交互、其它對象的狀態(tài)改變等等,可以看作請求對象服務(wù)的客戶。n 對象通過公有方法,向外部聲明自己提供哪些服務(wù),每個方法的參數(shù)說明了怎樣使用這些服務(wù)。 n 2.3.2 繼承繼承性性 (Inheritance)n n 人類對于客觀事物的認識過程是沒有止境的。在分類問題上也是這樣,隨著認識水平的提高,原有的類需要劃分成若干個子類,子

32、類又可以劃分子類的子類,。這種劃分最終形成一個樹狀層次體系結(jié)構(gòu)。n面向?qū)ο蟪绦蛟O(shè)計中通過類的繼承性,能夠很好地模擬這種分類方式。n面向?qū)ο笾蓄惖睦^承性描述兩個類之間的一種特殊面向?qū)ο笾蓄惖睦^承性描述兩個類之間的一種特殊關(guān)系,即上面所說的關(guān)系,即上面所說的“父父- -子關(guān)系子關(guān)系”。面向?qū)ο笳Z言中允許。面向?qū)ο笳Z言中允許利用一個已定義的類來定義一個新類,通過這種利用,形利用一個已定義的類來定義一個新類,通過這種利用,形成兩個類之間的成兩個類之間的繼承關(guān)系繼承關(guān)系。這個已定義的類稱為。這個已定義的類稱為基類基類,新,新定義的類則稱為它的定義的類則稱為它的子類子類。子類除了包含基類的所有成員。子類除

33、了包含基類的所有成員之外,又增加了自己特有的新成員。之外,又增加了自己特有的新成員。n特殊類n一般類n一般類n特殊類n(b)類的特征集合n(a)類的實例集合n圖 1.2 一般類與特殊類的關(guān)系n 在由一個類劃分出子類的過程中,子類必須具有其父類的所有特征,同時又具有父類中其它成員所沒有的新特征。從成員集合來看,父類包含了子類的所有成員。從各自信息量從成員集合來看,父類包含了子類的所有成員。從各自信息量的多少來看,有的多少來看,有“子大于父子大于父”的特點,的特點,因為要描述一個子類,必須添加有別于父類中其它成員的新的信息。類間的這種類間的這種“父子父子關(guān)系關(guān)系”反映了類的一般性和特殊性,也稱為反

34、映了類的一般性和特殊性,也稱為“一般一般- -特殊關(guān)系特殊關(guān)系”。n 子類定義的偽代碼形式如下:子類定義的偽代碼形式如下:n 新類聲明:子類名新類聲明:子類名1 1 繼承自:繼承自: 基類名基類名1 1n n 數(shù)據(jù)成員;數(shù)據(jù)成員;n n 方法成員;方法成員;n n n 子類對象在內(nèi)存中所占的存儲空間一定大于其父類。繼承機制使得子類對象創(chuàng)建時首先要拷貝父類對象的所有成員,既包括數(shù)據(jù)成員也包括方法成員,不管是公有的還是私有的。在為拷貝而來的成員分配內(nèi)存儲空間之后,再為子類的特有成員分配存儲空間。一個子類對象的封裝實體,在程序運行時與其父類對象是完全獨立的。子類對象在創(chuàng)建時對父類對象子類對象在創(chuàng)建時

35、對父類對象的拷貝提供了一種高效的源代碼級的的拷貝提供了一種高效的源代碼級的軟件重用方法。軟件重用方法。 n繼承又分為單繼承和多繼承。繼承又分為單繼承和多繼承。n單繼承指子類只由一個基類繼承而來。單繼承指子類只由一個基類繼承而來。當(dāng)一個子類有不止一個基類時則稱為多繼承。當(dāng)一個子類有不止一個基類時則稱為多繼承。nn多繼承的例子在生活中并不少見。比如一個醫(yī)學(xué)院的在職研究生可能既是醫(yī)生又是學(xué)生,他既是醫(yī)生類的實例又是學(xué)生類的實例。 n 2.3.1 多態(tài)多態(tài)性性 (Polymorphism)n n多態(tài)多態(tài)性性是面向?qū)ο蠹夹g(shù)真正的優(yōu)勢所在。關(guān)于多態(tài)是面向?qū)ο蠹夹g(shù)真正的優(yōu)勢所在。關(guān)于多態(tài)性有以下幾種等價描述

36、:性有以下幾種等價描述:n多態(tài)性:指程序?qū)ν幻只蚍栐诓煌闆r下做出不同解釋的能力。n多態(tài)性:為同一個函數(shù)和運算符定義多個不同的執(zhí)行版本。n不同對象可以調(diào)用相同名稱的函數(shù),并導(dǎo)致完全不同的行為(behavior)的現(xiàn)象稱為多態(tài)性。7.1 面向?qū)ο蠓治龇椒ǜ攀雒嫦驅(qū)ο蠓治龇椒ǜ攀鲆?、引例一、引例用結(jié)構(gòu)化方法對某餐館主要業(yè)務(wù)建模:業(yè)務(wù)流程設(shè)計模型,自上而下、基于功能分解提供就餐服務(wù)點菜做菜上菜結(jié)賬備菜炒菜n若用處理此例則要考慮的是: n1. 完成顧客就餐常會涉及哪些人或物(即對象)?n2. 每個對象有哪些職責(zé)?顧客就餐()服務(wù)員點菜()上菜()結(jié)賬()面點師制作主食()廚師炒菜()幫廚備菜()

37、餐館業(yè)務(wù)靜態(tài)模型(類圖): 服務(wù)員: 廚師: 幫廚: 面點師: 顧客點菜結(jié)賬炒菜備菜制作主食上菜餐館業(yè)務(wù)動態(tài)模型(順序圖)二、面向?qū)ο蠓椒ǖ陌l(fā)展二、面向?qū)ο蠓椒ǖ陌l(fā)展n面向?qū)ο缶幊堂嫦驅(qū)ο缶幊?OOP)n面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計(OOD)n面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?OOA)合理的軟件開發(fā)過程:OOAOOD OOPn 對象對象(object)n 類類(class)n 封裝封裝(encapsulation)n 消息消息(message)n 繼承繼承(inheritance)和多態(tài)性和多態(tài)性(polymorphism)n 關(guān)系關(guān)系(relationship)三、面向?qū)ο蠓椒ǖ闹饕拍钊?、面向?qū)ο蠓椒?/p>

38、的主要概念 對象對象n在在OO方法中,對象是一些屬性及專用服務(wù)的封裝體,它是問方法中,對象是一些屬性及專用服務(wù)的封裝體,它是問題空間中一些事物的抽象。對象具有一組屬性和一組操作。題空間中一些事物的抽象。對象具有一組屬性和一組操作。這些屬性的值刻畫一個對象的狀態(tài);這些操作是對象的行為這些屬性的值刻畫一個對象的狀態(tài);這些操作是對象的行為(即服務(wù)即服務(wù)),通過它們改變對象的狀態(tài),通過它們改變對象的狀態(tài)(即屬性值即屬性值)n系統(tǒng)中的對象在生命周期的不同階段有不同的表示形式:系統(tǒng)中的對象在生命周期的不同階段有不同的表示形式:nOOA提供的對象概念比較接近現(xiàn)實世界的客觀事物提供的對象概念比較接近現(xiàn)實世界的

39、客觀事物,模型模型較粗略較粗略nOOD進行細化并轉(zhuǎn)化為軟件對象進行細化并轉(zhuǎn)化為軟件對象nOOP需要寫出具體的程序代碼需要寫出具體的程序代碼countervalueinit()decrease()increase()n 例如,一個對象計數(shù)器:n OOA過程發(fā)現(xiàn)計數(shù)器有一個屬性用以保存計數(shù)值,計數(shù)器可提供遞增/減服務(wù)n OOD則據(jù)分析模型提供設(shè)計模型,如右圖n OOP階段,計數(shù)器對象將定義為類,依具體語言的語法定義數(shù)據(jù)結(jié)構(gòu)并寫代碼,其它程序可創(chuàng)建并使用counter實例n 描述對象行為的服務(wù)、操作和方法這幾個概念,在OO方法中是同義詞,使用時存在細微差別。n 從對象外部看,對象可接受其它對象提出的

40、服務(wù)(service)請求,執(zhí)行某些行為為外界提供某項服務(wù)。服務(wù)的概念一般用于分析階段n 操作(operation)是指為實現(xiàn)某些行為的算法抽象,這些算法對外以函數(shù)接口的方式提供。操作一般用于設(shè)計階段n 方法(method)常側(cè)重于算法的具體實現(xiàn),一般用于詳細設(shè)計和編程階段nOO方法中類的定義:具有相同屬性和服務(wù)的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,包括對所有屬性和操作的聲明。類也稱為對象類(object class)n類是用來創(chuàng)建對象的模板。一個對象是該對象所在類的一個實例(instance),即實例是以類為模板創(chuàng)建的一個特定對象。類是抽象虛無的,實例是具體存在的n在

41、OOP中,類是靜態(tài)的,類的存在、語義和關(guān)系在程序執(zhí)行前就已定好;對象是動態(tài)的,在程序運行過程中根據(jù)類的定義來創(chuàng)建或刪除對象實例。每個對象實例有自己獨立的運行空間,保存自己特有的屬性 類類n抽象類(abstract class):若一個類中沒有包含足夠的信息來描繪具體的對象,這樣的類就是抽象類n接口(interface)是一些方法的集合,但所有方法都是抽象的,只有聲明而沒有程序體兩種特殊的類:抽象類兩種特殊的類:抽象類和接口和接口 封裝封裝n 消息消息n繼承n多態(tài)性:相同的操作可作用于多種類型的對象并獲得不同的結(jié)果。在OOP中多態(tài)的實現(xiàn)有兩種方法:n由覆蓋(override)實現(xiàn)動態(tài)多態(tài)n由重載

42、(overload)實現(xiàn)的靜態(tài)多態(tài) 繼承和多態(tài)性繼承和多態(tài)性 關(guān)系關(guān)系n類關(guān)系:存在于兩個類之間,或者類與接口之間n繼承/泛化(generalization)n實現(xiàn)(realization)n對象關(guān)系:是存在于兩個或兩個以上對象之間的聯(lián)系n關(guān)聯(lián)(association)表達對象與對象的靜態(tài)聯(lián)系,是一種長期關(guān)系。特例:整體和部分關(guān)系n依賴(dependency)表達對象與對象的動態(tài)聯(lián)系,是一種短期關(guān)系四、面向?qū)ο蠓椒ǖ膬?yōu)勢四、面向?qū)ο蠓椒ǖ膬?yōu)勢n對問題空間的理解更直接,更符合人們認識客觀事物的思維規(guī)律n系統(tǒng)分析和系統(tǒng)設(shè)計使用同一模型,不存在過渡困難n開發(fā)出來的信息系統(tǒng)從本質(zhì)上具有更強的生命力n易

43、于擴充和維護五、統(tǒng)一建模語言五、統(tǒng)一建模語言UMLUML基于基于UML面向?qū)ο蟮姆治雠c設(shè)計面向?qū)ο蟮姆治雠c設(shè)計n功能需求:描述系統(tǒng)預(yù)期應(yīng)提供的功能或服務(wù),包括系統(tǒng)需要哪些輸入、對輸入作出何反應(yīng)以及對系統(tǒng)具體行為的描述n非功能需求(也稱技術(shù)需求):指那些除功能以外的系統(tǒng)性能和系統(tǒng)特性的需求,包括可用性、可靠性、響應(yīng)時間、吞吐率、可移植性等等7.2 用例建模用例建模一、基于用例的需求分析一、基于用例的需求分析n列出候選需求n理解系統(tǒng)的語境n系統(tǒng)分析人員需要了解用戶的業(yè)務(wù)模型。業(yè)務(wù)模型詳細說明了系統(tǒng)將支持哪些業(yè)務(wù)過程,通過業(yè)務(wù)過程可以確定完成該過程需要哪些工作人員、他們的職責(zé)以及他們要執(zhí)行操作n捕獲功能性需求n使用用例來確定功能性需求。在理解系統(tǒng)語境之后,收集所有人員和系統(tǒng)可能的交互就能提取系統(tǒng)功能性需求n捕獲非功能性需求獲取需求的一些常用步驟獲取需求的一些常用步驟n用例是對于一組動作序列的描述,系統(tǒng)執(zhí)行這些動作會對特定的參與者(actor)產(chǎn)生可觀測的、有價值的結(jié)果I. Jacobsonn用例是各種系統(tǒng)受益人(stakehol

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論