? ? 7.1 面向對象基礎
????????7.1.1 面向對象的基本概念
? ? ? ? ? ? ? ? 面向對象=對象+分類+繼承+通過消息的通信
? ? ? ? ? ? ? ? 對象:基本的運行實體,包括屬性和行為,由對象名、屬性和方法組成
? ? ? ? ? ? ? ? 消息:對象之間進行通信的一種構造
? ? ? ? ? ? ? ? 類:定義一組大體顯示的對象,其所包含的方法和數(shù)據描述一組對象的共同行為和屬性,類是對象之上的抽象,對象是類的具體化,是類的實例,分為實體類、接口類和控制類
? ? ? ? ? ? ? ? 繼承:是父類和之類之間共享數(shù)據和方法的機制
? ? ? ? ? ? ? ? 多態(tài):不同的對象接收到同一消息可以產生完全不同的結果,參數(shù)多態(tài)和包含多態(tài)稱為通用的,過載多態(tài)和強制多態(tài)稱為特定的
? ? ? ? ? ? ? ? 動態(tài)綁定:在運行時,一個把過程調用和響應調用所需要執(zhí)行的代碼加以結合的過程,與類的繼承以及多態(tài)相聯(lián)系的,在繼承關系中,子類是父類的一個特例,所以父類對象可以出現(xiàn)的地方,子類對象也可以出現(xiàn),在運行過程中,當一個對象發(fā)送消息請求服務時,要根據接收對象的具體情況將請求的操作與實現(xiàn)的方法進行連接
????????7.1.2 面向對象分析?
? ? ? ? ? ? ? ? 面向對象分析的活動:認定對象、組織對象、描述對象間的相互作用、確定對象的操作、定義對象的內部信息
????????7.1.3 面向對象設計
? ? ? ? ? ? ? ? 面向對象設計是將面向對象分析所創(chuàng)建的分析模型轉化為設計模型,其目標是定義系統(tǒng)構造藍圖,同樣遵循抽象、信息隱蔽、功能獨立和模塊化等設計準則
? ? ? ? ? ? ? ? 面向對象設計的活動:識別類及對象;定義屬性;定義服務;識別關系;識別包
? ? ? ? ? ? ? ? 面向對象設計原則:單一責任原則;開放-封閉原則;理氏替換原則;依賴倒置原則;接口分離原則;重用發(fā)布等價原則;共同封閉原則;共同重用原則;無依賴原則;穩(wěn)定依賴原則;穩(wěn)定抽象原則
????????7.1.4 面向對象程序設計
? ? ? ? ? ? ? ? 類:類具有實例化功能;同一個類的不同實例具有相同的數(shù)據結構,承受的是同一方法集合所定義的操作,具有相同規(guī)律的行為;同一類的不同實例可以持有不同的值,具有不同的狀態(tài);實例的初始狀態(tài)可以在實例化時確定
? ? ? ? ? ? ? ?繼承和類層次結構:繼承通過定義類之間的關系來體現(xiàn),子類和父類之間的繼承關系構成了整個系統(tǒng)的類層次結構,可以用樹或格這樣的圖來描述;繼承體現(xiàn)了一條重要的設計原則,即開發(fā)人員在構造程序時不必從零開始,而只需對差別進行程序設計
? ? ? ? ? ? ? ? 對象、消息傳遞和方法:對象是類的實例,對象之間通過諾消息傳遞進行通信;
? ? ? ? ? ? ? ? 對象自身引用:通過this或self等,自身引用的值和類型扮演了兩種意義的角色,對象自身引用的值使得方法體中引用的成員名與特定的對象相關,對象自身引用的類型則決定了方法體被實際共享的范圍
? ? ? ? ? ? ? ? 重置:指在子類中重新定義父類已經定義的方法,通過一種動態(tài)綁定機制的支持,使得子類在集成 父類接口定義的前提下用適合自己要求的實現(xiàn)去置換父類中的相應實現(xiàn)
? ? ? ? ? ? ? ? 類屬類:可以看成類的模板,是關于一組類的一個特性抽象,它強調的是這些類的成員特征中與具體類型無關的那些部分,而與具體類型相關相關的那些部分則用變元來表示。
? ? ? ? ? ? ? ? 無實例的類:抽象類,C++通過定義抽象方法來定義抽象類;JAVA通過申明來定義抽象類
????????7.1.5 面向對象測試
? ? ? ? ? ? ? ? 面向對象的測試:與其他方法開發(fā)的系統(tǒng)測試無異,分為算法層(測試類中定義的方法)、類層(測試封裝在同一類中的所有方法和屬性之間的相關作用)、模板層(測試一組協(xié)同工作的類之間的相互作用)和系統(tǒng)層(組裝子系統(tǒng)過程中的測試)。
????7.2 UML
? ? ? ? ? ? ? ? UML組成要素:UML的基本構造塊、支配這些構造塊如何設置在一起的規(guī)則和運用與整個語言的一些公共機制
? ? ? ? ? ? ? ? UML包含3種構造塊:事物--對模型中最具代表性的成分的抽象;關系--把事物連接在一起;圖--聚集了相關的事物
????????7.2.1 事物
? ? ? ? ? ? ? ? UML中的4中事物:結構事物、行為事物、分組事物和注釋事物
? ? ? ? ? ? ? ? 結構事物:模型的靜態(tài)部分,描述概念或物理元素,包括類、接口、協(xié)作、用例、主動類、構件、制品和結點

? ? ? ? ? ? ? ? 行為事物:模型的動態(tài)部分,描述跨越時間和空間的行為,包括交互、狀態(tài)機和活動

? ? ? ? ? ? ? ? 分組事物:UML模型的組織部分,主要指包
? ? ? ? ? ? ? ? 注釋事物:UML模型的解釋部分,用來描述、說明和標注模型的任何元素
????????7.2.2 關系
? ? ? ? ? ? ? ? UML中4中關系:依賴、關聯(lián)、泛化和實現(xiàn)
????????7.2.3 UML中的圖
? ? ? ? ? ? ? ? 圖:一組元素的圖形表示,一般畫為頂點(事物)和?。P系)的連通圖,包括類圖、對象圖、用例圖、序列圖、通信圖、狀態(tài)圖、活動圖、構件圖、組合結構圖、部署圖、包圖、交互概覽圖和計時圖
? ? ? ? ? ? ? ? 類圖:展現(xiàn)一組對象、接口、協(xié)作和他們之間的關系,包含類、接口、協(xié)作和依賴、泛化和關聯(lián)關系

? ? ? ? ? ? ? ? 對象圖:展現(xiàn)了某時刻一組對象以及他們之間的關系
? ? ? ? ? ? ? ? 用例圖:展現(xiàn)一組用例、參與者以及他們之間的關系,包括用例、參與者和用例間的擴展、包含關系,參與者與用例之間的關聯(lián)關系,用例與用例及參與者與參與者之間的泛化關系
? ? ? ? ? ? ? ? 交互圖:用于對系統(tǒng)動態(tài)方面進行建模,一張交互圖表示一個交互,由一組對象和他們之間的關系組成,包含其傳遞消息;一般包含對象、鏈和消息
? ? ? ? ? ? ? ? 狀態(tài)圖:展現(xiàn)一個狀態(tài)機,由狀態(tài)、轉換、事件和活動組成
? ? ? ? ? ? ? ? 活動圖:一種特殊的狀態(tài)圖,展示了系統(tǒng)內從一個活動到另一個活動的流程,包括活動狀態(tài)和動作狀態(tài),轉換和對象
? ? ? ? ? ? ? ? 構建圖:展示一組構建之間的組織和依賴
? ? ? ? ? ? ? ? 組合結構圖:描述一個分類器的內部結構,分類器與系統(tǒng)中其它組成部分之間的交互端口、展示一組相互協(xié)作的實例如何完成特定的任務,描述設計、結構模式或策略
? ? ? ? ? ? ? ? 部署圖:用來對面向對象系統(tǒng)的物理方面建模的方法,展現(xiàn)了運行時處理節(jié)點以及其中構件的配置
? ? ? ? ? ? ? ? 包圖:用于把模型本身組織成層次結構的通用機制,不能執(zhí)行,展現(xiàn)由模型本身分解而成的組織單元以及其間的依賴關系
????7.3 設計模式?
????????7.3.1 設計模式的要素
? ? ? ? ? ? ? ? 設計模式的核心在于提供了相關問題的解決方案,使得人們可以更簡單的復用成功的設計和體系結構
? ? ? ? ? ? ? ? 設計模式的要素:模式名稱、問題、解決方案、效果
? ? ? ? ? ? ? ? 設計模式的分類:創(chuàng)建型模式與對象的創(chuàng)建有關;結構型模式處理類與對象的組合;行為型模式對類或對象怎么交互和怎么分配職責進行描述
????????7.3.2 創(chuàng)建型設計模式
? ? ? ? ? ? ? ? 創(chuàng)建型模式抽象了實例化過程,幫助系統(tǒng)獨立于如何創(chuàng)建、組合和表示它的那些對象
? ? ? ? ? ? ? ? 抽象工廠(Abstract Factory):意圖提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無須指定他們具體的類
? ? ? ? ? ? ? ? 生成器(Builder):意圖將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創(chuàng)建不同的表示
? ? ? ? ? ? ? ? 工廠方法(Factory Method):意圖定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類
? ? ? ? ? ? ? ? 原型(Prototype):意圖用原型實例制定創(chuàng)建對象的種類,并且通過復制這些原型創(chuàng)建新的對象
? ? ? ? ? ? ? ? 單例(Singleton):意圖保證一個類僅有一個實例,并提供一個訪問它的全局訪問點
????????7.3.3 結構型設計模式
? ? ? ? ? ? ? ? 結構型設計模式涉及如何組合類和對象以獲得更大的結構,采用繼承機制來實現(xiàn)組合接口或實現(xiàn)
? ? ? ? ? ? ? ? 適配器(Adapter):意圖將一個類的接口轉換成客戶希望的另一個接口
? ? ? ? ? ? ? ? 橋接(Bridge):意圖將抽象部分與其實現(xiàn)部分分離,使他們都可以獨立的變化
? ? ? ? ? ? ? ? 組合(Composite):意圖將對象組合成樹形結構儀表室部分-整體的層次結構
? ? ? ? ? ? ? ? 裝飾(Decorator):意圖動態(tài)的給一個對象添加一些額外的職責
? ? ? ? ? ? ? ? 外觀(Facade):意圖為子系統(tǒng)中的一組接口提供一個一致的界面
? ? ? ? ? ? ? ? 享元(Flyweight):意圖運用共享技術有效的支持大量的細粒度對象
? ? ? ? ? ? ? ?代理(Proxy):意圖為其他對象提供一種代理以控制對這個對象的訪問