




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、面向?qū)ο蠓治雠c設(shè)計課程教學(xué)計劃(一)一 課程的性質(zhì)和目的 面向?qū)ο蠓治雠c設(shè)計是高等院校計算機軟件工程及相關(guān)專業(yè)的一門必修課。本課主要介紹面向?qū)ο蠹夹g(shù)的基本概念、面向?qū)ο蠓治?、設(shè)計和編程的一般方法以及用統(tǒng)一建模語言UML建模的方法,目的是使學(xué)生通過本課的學(xué)習(xí)來掌握面向?qū)ο蠹夹g(shù)的基本概念、面向?qū)ο蠓治?、設(shè)計和編程的一般方法以及用UML進行系統(tǒng)分析與設(shè)計的方法。 本課程主要包括課堂教學(xué)和。課堂教學(xué)著重講授基本理論、基本知識和基本方法,著重培養(yǎng)學(xué)生的分析、設(shè)計和編程技能及其他區(qū)上機操作計能。1二 課程總學(xué)時 本課程開設(shè)一學(xué)期。 課堂教學(xué):64學(xué)時(16周, 每周4學(xué)時) 上機實驗:32學(xué)時(16周,每
2、周1次2學(xué)時)三 教材和參考書 教材: 面向?qū)ο蠓治鲈O(shè)計與編程 OOA/OOD/OOP/AOP ( 吳煒煜 編著 清華大學(xué)出版社) 參考書: UML與系統(tǒng)分析設(shè)計 (張龍祥 編著 人民郵電出版社 ) UML基礎(chǔ)與Rose建模實用教程 (謝星星等編 清華大學(xué)出版社)2四 課堂教學(xué)內(nèi)容和進度計劃 第1章 面向?qū)ο蠹夹g(shù)概述 8學(xué)時 第2章 C+語言基礎(chǔ) 4學(xué)時 第3章 類與對象的構(gòu)造設(shè)計 4學(xué)時 第4章 繼承性與派生類 4學(xué)時 第5章 多態(tài)性與虛函數(shù) 4學(xué)時 第6章 文件的輸入與輸出 8學(xué)時 第7章 統(tǒng)一建模語言UML及其在 系統(tǒng)分析與設(shè)計中的應(yīng)用 16學(xué)時 第8章 UML在數(shù)據(jù)庫分析與設(shè)計中的應(yīng)用
3、 12學(xué)時 第9章 基于Web的管理信息系統(tǒng)的 分析、設(shè)計與實現(xiàn) 4學(xué)時 3五 實驗安排 安排16次實驗,每次2學(xué)時,大約每周進行一次實驗。六 成績考核 學(xué)完本課的成績計算方法:平時占50%,期末閉卷考試50%。 平時成績計算方法:平時考勤、課堂紀律、課堂表現(xiàn)、上機實驗、練習(xí)等。七 教學(xué)方法 采用理論聯(lián)系實際的方法,把課堂理論講授和上機實驗相結(jié)合。 理論學(xué)習(xí):課前預(yù)習(xí)、上課認真聽講、保質(zhì)保量完成作業(yè)。 上機實驗:上機前弄清實驗規(guī)程,嚴格按實驗指導(dǎo)進行操作,保質(zhì)保量完成實驗任務(wù)。4八 上課時間和地點 理論課: 1班 星期四上午 第1、2大節(jié) W4406 2班 星期四下午 第3、4大節(jié) W4406
4、 3班 星期五下午 第3、4大節(jié) W3407 4班 星期日上午 第1、2大節(jié) W3407 實驗課: 1班 星期一晚上 第5大節(jié) X2407c 2班 星期二晚上 第5大節(jié) X2507 3班 星期二上午 第1大節(jié) X2407b 4班 星期日下午 第5大節(jié) X2606九 教學(xué)反饋 E-mail: 電話: 27592535第1章 面向?qū)ο蠹夹g(shù)概論本章的學(xué)習(xí)目的 教學(xué)目的是使學(xué)生通過本章的學(xué)習(xí)能夠理解和掌握面向?qū)ο蠹夹g(shù)的基本概念和基本知識以及基本思想方法,為后續(xù)進一步學(xué)習(xí)面向?qū)ο蟮姆治?、設(shè)計和編程奠定良好的基礎(chǔ)。6本章的學(xué)習(xí)內(nèi)容了解面向?qū)ο筌浖_發(fā)方法的發(fā)展歷程及其重要意義了解面向?qū)ο蠹夹g(shù)的基本概念了解
5、面向?qū)ο蠹夹g(shù)的特點和優(yōu)點7 1.1 面向?qū)ο蠓椒ǖ奶岢觯?)軟件概念的提出 二十世紀四十年代誕生了世界上第一臺電子計算機ENIAC,至今才半個來世紀,聚然間發(fā)生了巨大而深刻的計算機革命。計算機科學(xué)技術(shù)已經(jīng)成為一門系統(tǒng)完善、復(fù)雜深刻的工程技術(shù)學(xué)科,它的應(yīng)用已從國防、科技、工業(yè)、農(nóng)業(yè)滲透到人類生活的各個方面,無處不在。出現(xiàn)了各種各樣的計算機,包括巨型機、大型機、小型機、個人電腦、工作站和網(wǎng)絡(luò)等等,五花八門,應(yīng)有盡有。但是,無論怎樣尖端,怎樣高深,一個計算機系統(tǒng)都是由硬件和軟件兩部分構(gòu)成。 人們在第一臺電子計算機上就已實現(xiàn)了馮.諾依曼提出的存儲程序思想,即將程序和數(shù)據(jù)存儲在計算機內(nèi)存中,用程序來控制
6、計算機的運行。這種程序、數(shù)據(jù)及相關(guān)文檔 統(tǒng)稱為軟件(software)。由于計算機是在程序的控制下運行,所以軟件成為了計算機的靈魂,是組成計算機系統(tǒng)不可缺少的部分。8(2)軟件開發(fā)方法的發(fā)展 計算機誕生之后,計算機技術(shù)一直處于高速發(fā)展狀態(tài),計算機科學(xué)技術(shù)的發(fā)展由原來只依靠硬件的發(fā)展逐漸變?yōu)楦嗟匾揽寇浖陌l(fā)展。事實上,軟件技術(shù)的發(fā)展經(jīng)歷了多代歷程。第一代(20世紀50-60年代),是以FORTRAN和ALGOL等編程語言為標志的算法技術(shù)時代。那時,程序設(shè)計全靠人們發(fā)揮創(chuàng)造才能,全靠技巧和竅門?;谶@種算法技術(shù)的軟件生產(chǎn)率非常低,程序很難看懂,甚至程序員自己寫的程序過一段時間后自己也看不懂,這給
7、軟件的修改、維護帶來極大的困難。于是60年代末出現(xiàn)了 “軟件危機”。9第二代(20世紀70年代末開始到80年代盛行的),以PASCAL、COBOL等編程語言和關(guān)系數(shù)據(jù)庫管理系統(tǒng)為標志的結(jié)構(gòu)化系統(tǒng)分析和設(shè)計技術(shù)。 由于早期的應(yīng)用比較簡單,開發(fā)一個軟件來解決一個問題只需編一個簡單程序。但當(dāng)應(yīng)用變得越來越復(fù)雜時,編一個簡單的程序就想解決所有問題是不可能的。于是人們提出了結(jié)構(gòu)化軟件開發(fā)方法。這種方法提倡通過系統(tǒng)分析和設(shè)計將該大的系統(tǒng)劃分為多個功能模塊,每個功能塊又可以進一步劃分為更小的功能子模塊,直到各個子模塊容易編程實現(xiàn)為止。在編程實現(xiàn)了各個模塊之后,將這些模塊組裝起來就構(gòu)成了完整的應(yīng)用系統(tǒng)。這就是
8、結(jié)構(gòu)化方法的基本思想。 10 另外,早期程序處理的數(shù)據(jù)也很雜亂,數(shù)據(jù)結(jié)構(gòu)不統(tǒng)一,實現(xiàn)相同功能的不同程序處理的數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)模型可能相差很大,這對于軟件的統(tǒng)一化和標準化以及軟件的集成和推廣應(yīng)用很不利。于是人們提出了對數(shù)據(jù)結(jié)構(gòu)化的要求。要求將同種類型的數(shù)據(jù)用字段個數(shù)相同、字段類型相同、字段寬度也相同的記錄來表示和存儲,以便于對數(shù)據(jù)記錄進行統(tǒng)一處理,有利于數(shù)據(jù)的共享和軟件的集成。后來還出現(xiàn)了關(guān)系數(shù)據(jù)庫管理系統(tǒng),用來對結(jié)構(gòu)化數(shù)據(jù)進行有效管理。 這種技術(shù)主要強調(diào)程序模塊化結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),采用自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu),從而大大改善了程序的可讀性。11 伴隨著結(jié)構(gòu)化軟件開發(fā)技術(shù)的出
9、現(xiàn),人們還提出了軟件工程方法,使軟件開發(fā)工作從以前只考慮程序的編寫技巧轉(zhuǎn)變到利用軟件工程的方法,使軟件系統(tǒng)的生產(chǎn)過程遵循一系列的規(guī)范化步驟,包括需求分析、總體設(shè)計、詳細設(shè)計、編程實現(xiàn)、軟件測試、軟件維護等。從而大大改善了軟件的質(zhì)量與可維護性,但軟件開發(fā)的成本卻大大增加了,未能完全克服軟件危機。12第三代 (上個世紀80年代開始至今還盛行的) 以Smalltalk、C+等為代表的面向?qū)ο筌浖_發(fā)方法(OO)。 傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計以算法為核心,把本來密切相關(guān)的數(shù)據(jù)和對數(shù)據(jù)的操作程序分離開來,很難保持數(shù)據(jù)和操作的一致性,其軟件開發(fā)方法也不符合人們的自然思維習(xí)慣,設(shè)計出來的軟件系統(tǒng)其解空間與問題空間
10、不一致,致使程序難以理解、修改和擴充,最終導(dǎo)致程序復(fù)雜性問題和軟件危機。 為了超越程序復(fù)雜性障礙,克服軟件危機,人們提出了面向?qū)ο筌浖_發(fā)方法。面向?qū)ο箝_發(fā)方法一改過去傳統(tǒng)的以功能分析和功能分解為基礎(chǔ)的面向過程的結(jié)構(gòu)化分析與設(shè)計方法,13 面向?qū)ο箝_發(fā)方法模擬人們理解和處理客觀世界的方式來分析問題,把系統(tǒng)視為一系列對象的集合,其面向?qū)ο蟮脑O(shè)計又將分析的結(jié)果映射到某種面向?qū)ο髮崿F(xiàn)工具的結(jié)構(gòu)上,使映射過程有著比較直接的對應(yīng)關(guān)系,使分析者、設(shè)計者和編程者都可使用相同的概念,從而使面向?qū)ο蟮能浖_發(fā)能比較自然地模擬客觀世界的活動,使問題描述空間與解空間在結(jié)構(gòu)上盡可能一致。因此,采用面向?qū)ο蠓椒梢愿?/p>
11、效地開發(fā)大型軟件系統(tǒng)。面向?qū)ο蠓椒ǖ姆庋b、繼承、多態(tài)等機制不僅支持軟件復(fù)用,而且使軟件維護工作可靠有效,可實現(xiàn)軟件系統(tǒng)的柔性制造,更好地克服軟件危機。因此,它已成為成熟的廣為采用的軟件開發(fā)方法。 到20世紀末,面向?qū)ο筌浖こ讨饾u發(fā)展成熟,特別是統(tǒng)一建模語言(UML)標準的形成和廣泛使用,使面向?qū)ο筌浖_發(fā)方法已成為軟件開發(fā)的主流技術(shù)。14(3)面向?qū)ο筌浖_發(fā)方法的發(fā)展面向?qū)ο筌浖_發(fā)方法始于面向?qū)ο笳Z言的研究和發(fā)展。面向?qū)ο笳Z言的發(fā)展有三個重要的里程碑:20世紀70年代的Simula-67 是第一個面向?qū)ο蟮恼Z言 ,對后來的許多面向?qū)ο笳Z言的出現(xiàn)產(chǎn)生了很大的影響。它首次提出了對象和類的概念
12、和方法,啟示了一種嶄新軟件思維方法的出現(xiàn)。80年代初的 Smalltalk 語言,它的廣泛使用掀起了一場 “ 面向?qū)ο筮\動 ” ,隨之誕生了多種面向?qū)ο蟮恼Z言,可分為幾類。對流行的語言進行面向?qū)ο蟮臄U充得到的語言,如混合性語言C+和純面向?qū)ο笳Z言Java.15 自80年代末期到90年代 ,面向?qū)ο蠹夹g(shù)的研究和應(yīng)用不再局限于編程階段 ,而是向著系統(tǒng)分析和系統(tǒng)設(shè)計階段發(fā)展,即系統(tǒng)分析和系統(tǒng)設(shè)計階段也開始采用面向?qū)ο蠓椒ā_@標志著面向?qū)ο蠓椒ㄒ呀?jīng)發(fā)展成一種完整的方法論和系統(tǒng)化的技術(shù)體系面向?qū)ο筌浖こ獭?我們用面向?qū)ο笳Z言編程求解問題之前需要先按面向?qū)ο蟮姆椒ㄟM行分析和設(shè)計,然后才能根據(jù)設(shè)計模型進行
13、有效編程。所以我們在學(xué)習(xí)用面向?qū)ο蠹夹g(shù)求解實際問題之前應(yīng)該先學(xué)習(xí)面向?qū)ο蟮幕靖拍?,再學(xué)習(xí)面向?qū)ο蟮姆治龊驮O(shè)計,然后再學(xué)習(xí)面向?qū)ο蟮木幊虒崿F(xiàn),這樣才能全面掌握用面向?qū)ο蠹夹g(shù)求解問題的方法。161.2 面向?qū)ο蟮幕靖拍?為了更好地理解面向?qū)ο蟮乃枷牒头椒?有必要先介紹一些面向?qū)ο蟮幕靖拍睢?面向?qū)ο箝_發(fā)方法的主要創(chuàng)新點在于模擬人們理解和處理客觀世界的方式來分析問題和解決問題。它認為客觀世界是由各種各樣的事物或?qū)嶓w組成,每個事物或?qū)嶓w都可用一個對象來表示。因此,在面向?qū)ο蟮某绦蛑?,客觀系統(tǒng)自然被描繪成一系列對象,由這些相互聯(lián)系、相互作用的對象來構(gòu)成程序系統(tǒng)。因此對象是組成面向?qū)ο蟪绦虻幕締挝?/p>
14、。17(1)對象(Object) 對象是客觀實體的抽象表示,是由描述對象的屬性數(shù)據(jù)和對這些數(shù)據(jù)進行的操作行為兩部分組成。屬性是用來描述對象靜態(tài)特征的數(shù)據(jù)項。行為是用來描述對象動態(tài)特征的操作方法或算法。18(2)對象的特征具有一個狀態(tài),由與其相關(guān)聯(lián)的屬性值集合所表征。具有唯一的標識名,可以區(qū)別于其他對象。有一組操作方法,每個操作方法決定對象的一種行為。對象的狀態(tài)一般只能被自身的行為所改變。對象的操作包括自操作(施于自身)和它操作(施于其他對象)。對象之間以消息傳遞的方式進行通信。一個對象的成員仍可以是一個對象。void display() Person A; cout學(xué)號endl; cout姓名
15、endl; cout性別endl; cout成績endl; A.print(); 19(3)類(Class) 在面向?qū)ο蟪绦蛑?,一般不會逐個描述具體對象,而是將注意力集中于一類具有相同特性的對象,抽象出這類對象的共同特性和行為,用“類”進行一般性描述。類 類是具有相同屬性和行為的對象集合的抽象描述; 類的內(nèi)部包括屬性和行為兩個主要部分。20(4) 實例 (instance) 類是對具有相同屬性和行為的一組對象的抽象描述。因此,類可作為一種用戶自定義類型和創(chuàng)建對象的樣板,而按照這種樣板所創(chuàng)建的一個個具體對象就是類的實際例子,通常稱為實例。 例如,student S1(051001,李明,男,90
16、)21(5)屬性(attribute) 屬性就是類中所定義的數(shù)據(jù)成員,是對客觀實體的靜態(tài)特性的抽象表示 。例如,學(xué)生類中有屬性:學(xué)號、姓名、性別、成績等。22(6)方法 (method) 方法就是對象所能執(zhí)行的某項操作,也就是類中定義的服務(wù)函數(shù)。一個方法描述了對象執(zhí)行某項操作的算法。在C+中把類中定義的方法稱為成員函數(shù)。例如,學(xué)生類中用于顯示學(xué)生屬性數(shù)據(jù)的成員函數(shù) display()就是一個方法。23(7)消息(message) 消息就是請求某個對象執(zhí)行它所包含的某項處理操作的指令信息。實質(zhì)是對某個類對象的操作函數(shù)的調(diào)用。例如, student S1; S1.display()是一個消息。 一
17、個消息一般由三部分組成:接收消息的對象名、操作函數(shù)名、函數(shù)的參數(shù)。 消息是對象之間的通信機制。一個對象可以同時向多個對象發(fā)送消息,也可以接受多個對象發(fā)來的消息。24(8) 封裝性(encapsulation)所謂封裝就是把對象的屬性和操作結(jié)合成一個獨立的單位,使外界不能直接訪問或修改這些屬性數(shù)據(jù)和操作代碼,外界只能通過對象提供的接口函數(shù)來改變或獲取對象的屬性數(shù)據(jù),這就實現(xiàn)了消息隱蔽。封裝是面向?qū)ο蠹夹g(shù)的一個基本特征。封裝的目的是實現(xiàn)信息的有效隱蔽。例如,class Student private: char* id; /學(xué)號 char* name; /姓名 int age; /年齡 publi
18、c: void modify() age=age+1; void display() 25 封裝的優(yōu)點:(a) 封裝起了信息隱蔽作用,增強了對象的獨立性,使外界只關(guān)心對象對外所提供的接口,忽略其內(nèi)部細節(jié)。 (b) 封裝使外界不能隨意存取對象的內(nèi)部屬性,從而有效地避免外部錯誤對它的影響,提高了系統(tǒng)的安全性和可靠性。 (c) 封裝的結(jié)果隱蔽了程序的復(fù)雜性,提供了代碼的重用性,降低了軟件開發(fā)的難度。例如,class Student private: char* id; /學(xué)號 char* name; /姓名 int age; /年齡 public: void modify() age=age+1;
19、void print() main() Student S1; S1. modify() ; S1.print(); 26(9)繼承性(inheritance)如果在一個已定義的類上,增加一些特殊屬性或操作,可以形成一個新的類,這個類不僅繼承了前一個類的全部特征,而且具有新的特性,因此可看作前一個類的特殊子類,是對前一個類的繼承。前一個類稱為父類,新產(chǎn)生的類叫做子類。通過繼承關(guān)系可形成一種類層次結(jié)構(gòu),叫做繼承結(jié)構(gòu)。27 繼承關(guān)系可以分為如下幾種:一代繼承:從父類到子類只延伸一次。如圖(a)所示。多代繼承:從父類到子類延伸多次。如圖(b)所示。單繼承:如果在一個繼承層次結(jié)構(gòu)中,每個子類只有一個直
20、接父類,則這種繼承稱為單繼承。如圖(a)和(b)所示。多繼承:如果在一個繼承層次結(jié)構(gòu)中,每個子類可有不止一個直接父類,則這種繼承稱為多繼承。如圖(c)所示。28(10) 多態(tài)性 (polymorphism ) 為了正確反映客觀世界的多態(tài)性,面向?qū)ο蟪绦蛟O(shè)計中也采用了多態(tài)性,即在同一類層次結(jié)構(gòu)的不同類中,可用相同的函數(shù)名實現(xiàn)功能不同的函數(shù)。如下圖所示。多態(tài)性的優(yōu)點:高層代碼(算法)只需寫一次,低層便可多次復(fù)用,可提高程序設(shè)計的靈活性和效率。29(11)抽象性 抽象就是忽略事物中與當(dāng)前目標無關(guān)的非本質(zhì)特征,更充分地注意與當(dāng)前目標有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共性的事物劃分為一類。類的定
21、義明確指出類是一組具有相同屬性和行為的對象集合的抽象描述。將客觀事物抽象成對象和類是面向?qū)ο蟮牡谝徊?。因此,抽象性是面向?qū)ο蟮牡幕咎卣鳌?12)分類性分類性是指將具有相同的數(shù)據(jù)屬性和操作行為的對象抽象成一類。 301.4.2 什么是優(yōu)良的OOD OOD的關(guān)鍵工作是進一步確定對象、類及其聯(lián)系。一個優(yōu)良的OOD設(shè)計方法應(yīng)具備如下基本條件:(1)繼承耦合應(yīng)盡可能緊密 耦合指一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連的緊密程度。繼承是一般化類與特殊類之間關(guān)聯(lián)耦合的一種形式。在設(shè)計時應(yīng)該使特殊類盡量多地繼承其父類的數(shù)據(jù)屬性和服務(wù)函數(shù),即應(yīng)該提高繼承耦合的程度, 而不是摒棄父類的許多數(shù)據(jù)屬性和服務(wù)函數(shù)去另外定義許多
22、新的數(shù)據(jù)屬性和服務(wù)函數(shù),這樣就可以節(jié)省軟件開發(fā)工作量,而且使程序更簡潔,編程更高效。因此,繼承耦合應(yīng)該盡可能緊密。31(2)無繼承關(guān)系的類與類之間的耦合應(yīng)該很松散。 如果一個軟件系統(tǒng)內(nèi)不同模塊之間的耦合很松散,則系統(tǒng)中某一部分的變化對其他部分的影響會降到最低程度。在理想情況下,對某一部分的理解、測試或修改,無須涉及系統(tǒng)的其他部分。在面向?qū)ο蠓椒ㄖ?,?對象是最基本的模塊,因此類與類之間的耦合應(yīng)該很松散。 一般說來,類/對象之間的耦合可分為兩大類: (i) 交互耦合應(yīng)該盡可能松散 對象之間的交互耦合是通過消息連接來實現(xiàn)的。為使交互耦合盡可能松散,應(yīng)該遵守下述準則: a) 盡量降低消息連接的復(fù)雜程
23、度。即應(yīng)該盡量減少消息中包含的參數(shù)個數(shù),降低參數(shù)的復(fù)雜程度。 b) 減少對象發(fā)送(或接收)的消息數(shù)。 (ii) 繼承耦合應(yīng)該盡可能緊密32 (ii) 繼承耦合盡可能緊密 只有一個例外,類的繼承關(guān)系必須是緊密聯(lián)系 的,因而子類與父類要緊密耦合。 (3)信息隱藏 某個類的數(shù)據(jù)實現(xiàn)細節(jié)對于別的類來說應(yīng)該是隱藏的。(4)設(shè)計應(yīng)該具有最優(yōu)的可重用性 軟件重用是提高軟件開發(fā)生產(chǎn)率和目標系統(tǒng)質(zhì)量的重要途徑。重用的實現(xiàn)基本上從設(shè)計階段開始。 最優(yōu)的可重用性有兩方面的含義: 一是盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類); 二是如果確實需要創(chuàng)建新類,則在設(shè)計這些新類的協(xié)議或接口函數(shù)
24、時,應(yīng)該考慮將來的可重復(fù)使用性。33(5)盡力使類、對象和方法的定義具有簡單性; (6)對所設(shè)計的類和類族,應(yīng)注意保持其協(xié)議或接口的穩(wěn)定性; (7)類的層次結(jié)構(gòu)設(shè)計規(guī)模適度,不要太深或太淺; (8)系統(tǒng)整體規(guī)模的最小化。1.4.3 對象標識設(shè)計在OOD中,另一個必做的工作是標識對象/類,即給對象一個代名詞,以明確地區(qū)別其他對象。為適應(yīng)模擬對象的復(fù)雜性,便于對象的組織和使用,要求在一個系統(tǒng)中,對象標識具備唯一性、穩(wěn)定性、一致性。341.4.4 復(fù)雜對象的設(shè)計在多媒體系統(tǒng)和工程系統(tǒng)的面向?qū)ο蟪绦蛟O(shè)計中,常常需要定義復(fù)雜對象及其聯(lián)系,對其描述往往導(dǎo)致多層次對象(類)的定義。在設(shè)計對象模型或類圖的結(jié)構(gòu)
25、時,要注意以對象本身的自然表達方式為出發(fā)點,將對象劃分成不同層次的類,建立由所有類構(gòu)成的有向無環(huán)圖。一般地講,復(fù)雜對象具有多種數(shù)據(jù)結(jié)構(gòu),可分解為多層次低層對象,或者是不同層次的部件,每個部件對象又可參與其它對象的構(gòu)成,為多方共享,還可按照各種特性定義相應(yīng)地歸入不同的類。35 OOD就是使用OO的概念進行設(shè)計,這種概念設(shè)計的目的就在于定義抽象對象之間的關(guān)系結(jié)構(gòu)。常用的方法如下: 分類 分類是見將具有相同屬性和行為的對象分成一組。如何選擇恰當(dāng)?shù)姆诸愂窃O(shè)計中的一個焦點,這要同系統(tǒng)的總體規(guī)劃設(shè)計一起統(tǒng)籌安排。概括 概括是從某些具有共性的對象或類中抽象出高一層次的類。反之,由高層次類可以衍生出低層次的對
26、象或子類。即高層是低層的泛化,低層是高層的特化,或?qū)嵗?。例如,對蘋果、梨、香蕉、柑橘.,可概括為一個對象類-水果,這是一種語義概括。36聚集 聚集是用有聯(lián)系的成分對象構(gòu)造抽象層次更高的對象,表示一個對象可從結(jié)構(gòu)上劃分為多個部分(部件),是“擁有”或“由.組成”聯(lián)系,即“整體-部分”關(guān)系。這種結(jié)構(gòu)劃分可以逐層細化,形成類的層次結(jié)構(gòu)。在設(shè)計時,聚集類的命名往往使用聯(lián)系中的動名詞。例如,甲地、乙地、汽車、貨物,其聯(lián)系是汽車在甲地到乙地之間運貨物,這四個對象成分的聚集對象,可命名為“運輸”;其中,汽車和貨物又可進一步分類。 37 值得注意的是,在剛開始學(xué)習(xí)進行面向?qū)ο笤O(shè)計時,往往容易把類的層次設(shè)計得過深,這會帶來在實現(xiàn)上的不少困難和其它問題,并不是好的風(fēng)格,應(yīng)有意識地力求避免發(fā)生這種情況。381.4.5 一個GIS的OOD模型實例本節(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【假期提升】五升六語文暑假作業(yè)(八)-人教部編版(含答案含解析)
- 2025年軍隊文職人員招聘之軍隊文職教育學(xué)考前沖刺模擬試卷B卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備高級技能通關(guān)考試題庫帶答案解析
- 社?;A(chǔ)知識培訓(xùn)
- 2024年黑龍江公務(wù)員《行政職業(yè)能力測驗》試題真題及答案
- 2025年反恐怖主義法知識競賽試卷及答案
- 皮革基礎(chǔ)知識培訓(xùn)課件
- 中學(xué)生成長電影觀后感
- 民間個人消費短期借款合同書
- 古詩詞學(xué)習(xí)感悟
- 環(huán)境監(jiān)測安全培訓(xùn)
- 第六課 呵護花季激揚青春
- 建筑工程原材料檢驗與取樣規(guī)定
- 演唱會安保方案及應(yīng)急預(yù)案
- 10kv高壓送電專項方案
- 城市軌道交通車輛制動系統(tǒng)課件EP2002
- 工會心理健康講座助力
- 阿那亞-社群營銷課件
- 糖尿病性眼肌麻痹的護理查房
- 《沃爾瑪企業(yè)物流成本控制現(xiàn)狀及完善對策研究》22000字
- 工程項目成本核算表格
評論
0/150
提交評論