面向?qū)ο蟮膸讉€重要概念

字號:

◆OOP的主要特征:
    抽象(abstract)
    封裝(encapsulation)
    繼承(inheritance)
    多態(tài)(polymorphism)
    關(guān)聯(lián)(association)
    聚合(aggregation)
    組合(composition)
    內(nèi)聚與耦合(cohesion & coupling)
    單個類型 抽象Abstract 封裝encapsulation
    層次結(jié)構(gòu) 繼承inheritance 多態(tài)polymorphism
    類型之間 關(guān)聯(lián)association 聚合aggregation 組合composition
    編程準(zhǔn)則:內(nèi)聚與藕合 cohesion & coupling
    ◆抽象Abstract:把事物共同點抽取出來,以統(tǒng)一的方式進行概要描述的過程.抽象是存在不同層次的。
    在不同的需求環(huán)境下,我們到底把什么抽象成類,把什么當(dāng)作實例或?qū)ο?是面向?qū)ο笤O(shè)計一開始最關(guān)鍵的一步,如果抽象過度,可能導(dǎo)致程序設(shè)計層次加重,但如果抽象不夠在極端的情況下,可能會退化到面向過程設(shè)計的那種一段程序?qū)?yīng)一個問題的情形。
    忽略掉一個對象或?qū)嶓w的細(xì)節(jié)而只關(guān)注其本質(zhì)特征的過程簡化功能與格式幫助用戶與對象交互。
    ◆封裝(encapsulation)
    隱藏數(shù)據(jù)和實現(xiàn)
    提供公共方法供用戶調(diào)用功能
    對象的兩種視圖
     —— 外部視圖:對象能做的工作
     —— 內(nèi)部視圖:對象如何完成工作
     —— 電視機:調(diào)節(jié)音量
    ◆繼承(inheritance)
    通過存在的類型定義新類型的機制。
    通常在兩個類型之間存在“is a”或“kind of”這樣的關(guān)系。
    通過繼承可實現(xiàn)代碼重用,另外繼承也是多態(tài)的基礎(chǔ)。
    如蘋果“is a”水果。
    ◆多態(tài)(polymorphism)
    一個名稱,多種形式。
    一個類中的方法重載就是一種多態(tài)。
    基于繼承的多態(tài)。
    調(diào)用方法時根據(jù)所給對象的不同選擇不同的處理方式。
    如Football——play():使用腳來完成。
    Basketball——play():使用手來完成。
    給出一個具體的足球或籃球,用戶自動知道該使用誰的方式去執(zhí)行play()。
    ◆關(guān)聯(lián)(association)
    對象之間交互時的一種引用方式。
    當(dāng)一個對象通過對另一個對象的引用去使用另一個對象的服務(wù)或操作時,兩個對象之間便產(chǎn)生了關(guān)聯(lián)。
    如person使用computer,person與computer之間就存在了關(guān)聯(lián)關(guān)系。
    person
    {  
     Computer.PlayGame();
    }
    ◆聚合(aggregation)
    關(guān)聯(lián)關(guān)系的一種,一個對象成為另外一個對象的組成部分。
    是一種關(guān)系較強的關(guān)聯(lián)。
    在兩個對象之間存在“has a”這樣的關(guān)系,一個對象作為另一個對象的屬性存在,在外部對象被生產(chǎn)時,可由客戶端指定與其關(guān)聯(lián)的內(nèi)部對象。
    如汽車與輪胎,輪胎作為汽車的一個組成部分,它和汽車可以分別生產(chǎn)以后裝配起來使用,但汽車可以換新輪胎,輪胎也可以卸下來給其它汽車使用。