較強的關聯 ---- 通過構造函數
class person
{
public person()
{
Create compter;
}
}
◆組合(composition)
當一個對象包含另一個對象時,外部對象負責管理內部對象的生命周期的情況。
關聯關系中最為強烈的一種。
內部對象的創建由外部對象自己控制。
外部對象不存在時,內部對象也不能存在,如電視機與CRT。
◆組合composition
發動機 車。
車的生命周期決定發動機生命周期。
垃圾回收。
◆內聚(cohesion)
度量一個類獨立完成某項工作的能力。
清潔工(有吸塵器,拖不,掃把)。
臨時工(無)。
◆藕合(coupling)
度量系統內或系統之間依賴關系的復雜度。
設計原則:增加內聚,減少藕合。
接口 :解耦合。
◆OOP的主要特征:
抽象(abstract)
封裝(encapsulation)
繼承(inheritance)
多態(polymorphism)
關聯(association)
聚合(aggregation)
組合(composition)
內聚與耦合(cohesion & coupling)
單個類型 抽象Abstract 封裝encapsulation
層次結構 繼承inheritance 多態polymorphism
類型之間 關聯association 聚合aggregation 組合composition
編程準則:內聚與藕合 cohesion & coupling
◆抽象Abstract:把事物共同點抽取出來,以統一的方式進行概要描述的過程.抽象是存在不同層次的。
在不同的需求環境下,我們到底把什么抽象成類,把什么當作實例或對象,是面向對象設計一開始最關鍵的一步,如果抽象過度,可能導致程序設計層次加重,但如果抽象不夠在極端的情況下,可能會退化到面向過程設計的那種一段程序對應一個問題的情形。
忽略掉一個對象或實體的細節而只關注其本質特征的過程簡化功能與格式幫助用戶與對象交互。
◆封裝(encapsulation)
隱藏數據和實現
提供公共方法供用戶調用功能
對象的兩種視圖
—— 外部視圖:對象能做的工作
—— 內部視圖:對象如何完成工作
—— 電視機:調節音量
◆繼承(inheritance)
通過存在的類型定義新類型的機制。
通常在兩個類型之間存在“is a”或“kind of”這樣的關系。
通過繼承可實現代碼重用,另外繼承也是多態的基礎。
如蘋果“is a”水果。
◆多態(polymorphism)
一個名稱,多種形式。
一個類中的方法重載就是一種多態。
基于繼承的多態。
調用方法時根據所給對象的不同選擇不同的處理方式。
如Football——play():使用腳來完成。
Basketball——play():使用手來完成。
給出一個具體的足球或籃球,用戶自動知道該使用誰的方式去執行play()。
◆關聯(association)
對象之間交互時的一種引用方式。
當一個對象通過對另一個對象的引用去使用另一個對象的服務或操作時,兩個對象之間便產生了關聯。
如person使用computer,person與computer之間就存在了關聯關系。
person
{
Computer.PlayGame();
}
◆聚合(aggregation)
關聯關系的一種,一個對象成為另外一個對象的組成部分。
是一種關系較強的關聯。
在兩個對象之間存在“has a”這樣的關系,一個對象作為另一個對象的屬性存在,在外部對象被生產時,可由客戶端指定與其關聯的內部對象。
如汽車與輪胎,輪胎作為汽車的一個組成部分,它和汽車可以分別生產以后裝配起來使用,但汽車可以換新輪胎,輪胎也可以卸下來給其它汽車使用。
文章來源于領測軟件測試網 http://www.kjueaiud.com/