人寫程序與類在打交道,而在程序運(yùn)行時(shí),是對象在運(yùn)行。
人寫的是類型,而動態(tài)的是對象,使機(jī)器在運(yùn)行代碼。
OO是一種系統(tǒng)建模的技術(shù),是一個(gè)過程!
對對象進(jìn)行描述。
在這個(gè)過程中,要使用UML語言進(jìn)行類型的描述。
========================================
比如模擬達(dá)內(nèi),可以說有很多老師對象和學(xué)生對象,但在達(dá)內(nèi),關(guān)注學(xué)生這個(gè)個(gè)體什么呢?只關(guān)心姓名,性別,背景,而絕對不關(guān)心它的婚姻情況。
可以對這些對象進(jìn)行共性的提取,變?yōu)槔蠋燁愋秃蛯W(xué)生類型。而運(yùn)行時(shí)就是一個(gè)個(gè)有特性的實(shí)例。
========================================
什么是對象,就是一個(gè)屬性確定的實(shí)體。比如找對象,這個(gè)對象在你心中早就有特定的要求,那么這樣的一個(gè)對象肯定是有確定屬性的對象。是單個(gè)的,唯一的,識別的實(shí)體。
那么由于成員變量的值不同,方法調(diào)用的結(jié)果不同。
所以對象是構(gòu)建系統(tǒng)的基石。
它包括:<1>標(biāo)識也就是引用名
<2>數(shù)據(jù)
<3>方法
什么是Class,它是對對象的定義。對于在某一個(gè)環(huán)境下的對于對象關(guān)心屬性的提取和抽象。
====================================
面向?qū)ο缶幊痰奶攸c(diǎn)
1抽象,就是一個(gè)提煉過程
2封裝,隱藏細(xì)節(jié)(屬性和私有方法)
3繼承,上下層次
4多態(tài)
--------------------------------------------
5,關(guān)聯(lián),對象的依賴程度
6,聚合
7,組合
8,內(nèi)聚&耦合
1,抽象的目的,主要是隱藏細(xì)節(jié),可以簡化信息,看到顯著特征。
2,封裝的目的,隱藏?cái)?shù)據(jù)和行為,
注意,類有兩個(gè)視圖,對外視圖(別人使用此類,不關(guān)心實(shí)現(xiàn))
內(nèi)視圖(自己拿著代碼,要知道實(shí)現(xiàn))
3,關(guān)聯(lián)
一個(gè)類型使用其他類型對象的服務(wù)。
4,聚合
一種強(qiáng)關(guān)聯(lián),一個(gè)是另外一個(gè)的組成部分,而不是必要部分。
一個(gè)汽車和一個(gè)音響。
5,組合
一個(gè)對象包含另外一個(gè)對象
一個(gè)是另外一個(gè)組成部分
大的東西決定著組成部分的生命周期
6,繼承,是一種實(shí)現(xiàn)代碼復(fù)用的手段,語言的特性。另外一種代碼復(fù)用的方式就是組合。
減少代碼量,維護(hù)方便。
組件的開發(fā)
在開發(fā)過程中,要遵循高內(nèi)聚,低耦合的規(guī)律。
組件內(nèi)部要相互的調(diào)用,來統(tǒng)一對外實(shí)現(xiàn)一個(gè)功能,而外界為實(shí)現(xiàn)這個(gè)功能,基本不需要再做什么,那么這個(gè)組件的重用性,就愈高。依賴于別人的越少,那么組件的復(fù)用價(jià)值也就愈高。
多態(tài)
有統(tǒng)一的接口,而行為有它的子類型的行為確定。
運(yùn)行時(shí)多態(tài),就是子類型重寫了父類型virtual方法。
能使用編譯時(shí)多態(tài)就是用編譯時(shí)多態(tài)。
================
所以可以將上面的幾個(gè)特點(diǎn)按類別分類,比如,單個(gè)類型、類型之間、層次結(jié)構(gòu)、編程規(guī)則。