UML面向?qū)ο笾R(shí)入門(mén)
1、什么是對(duì)象
對(duì)象(Object)是面向?qū)ο蟮幕緲?gòu)造單元.是一些變量和方法的集合,用于模擬實(shí)現(xiàn)世界中的一些事物模型.如一臺(tái)電腦,一個(gè)人,一間房子等.當(dāng)然也可以模擬一些虛擬的東西,比如一個(gè)學(xué)號(hào),一個(gè)編號(hào),一個(gè)院系等.
2、面向?qū)ο笈c面向過(guò)程的區(qū)別
面向?qū)ο?什么做什么"與面向過(guò)程"做什么"***的區(qū)別在于,面向?qū)ο蟮闹攸c(diǎn)在于誰(shuí)發(fā)出了什么命令,而面向過(guò)程只關(guān)心一個(gè)命令.
面向?qū)ο笠詫?duì)象為基礎(chǔ),以事件或消息驅(qū)動(dòng)對(duì)象執(zhí)行處理.它不像面向過(guò)程設(shè)計(jì)一樣以函數(shù)為單元,在一開(kāi)始就需要使用一個(gè)主函數(shù),來(lái)概適整個(gè)程序,像向?qū)ο笫且圆糠种?去構(gòu)建整個(gè)程序.面向?qū)ο笠詳?shù)據(jù)為中心,使用類(lèi)作為表現(xiàn)數(shù)據(jù)的載體,面向過(guò)程以功能為中心來(lái)?yè)剖龀绦? 面向?qū)ο蟮某绦蚩刂屏鞒桃允录蛳?lái)驅(qū)動(dòng),而面向過(guò)程的程序則是以事先預(yù)定的程序來(lái)執(zhí)行.所以當(dāng)需求變化很大的時(shí)候,面向過(guò)程的程序往往需要重構(gòu)大部分甚至所有代碼,而面向?qū)ο髣t可以輕構(gòu)解決.
3、對(duì)象與類(lèi)
類(lèi)是對(duì)象集合的再抽像,對(duì)象是類(lèi)的實(shí)例.可以用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明.把中國(guó)人當(dāng)成是一個(gè)類(lèi),那么你我都是這個(gè)類(lèi)的一個(gè)實(shí)例.你我等這些中國(guó)人的集合抽像成了中國(guó)人這個(gè)類(lèi).中國(guó)人是一個(gè)虛的概念,而你我是一個(gè)實(shí)實(shí)在在的個(gè)體.
4、消息和事件
消息是對(duì)象與對(duì)象之間相互作用的方式.消息一般包括消息的發(fā)送對(duì)象,消息的接收對(duì)象,消息的傳遞方式,消息的內(nèi)容,消息的返回五部分組成.
比如張三對(duì)李四說(shuō):今天我們來(lái)喝一杯.
事件是系統(tǒng)預(yù)先定義的,通過(guò)指定的條件觸發(fā)的動(dòng)作.
比如我打一下你的頭,你頭痛了. 這里我通過(guò)"打"這個(gè)行為來(lái)傳遞了一個(gè)消息對(duì)你產(chǎn)生了作用,你觸法了"痛"這個(gè)事件.
5、面向?qū)ο蟮幕咎卣?/STRONG>
抽象:將要描述的事物進(jìn)行簡(jiǎn)化,將事物特征進(jìn)行概括,以事物層次結(jié)構(gòu)來(lái)組織模型.
比如:狗.我們?cè)谲浖胁豢赡馨压返乃行畔⒍济枋龀鰜?lái),我們把它簡(jiǎn)化為有四條腿,一個(gè)頭,一個(gè)尾巴,還有一個(gè)軀桿. 這樣我們就像畫(huà)畫(huà)一樣畫(huà)出了一個(gè)抽象的模型圖. 然后對(duì)它的特征進(jìn)行概括,比如它會(huì)叫,會(huì)吃,會(huì)走. 然后狗還分哈巴狗,狼狗等很多種.所以這里又分出了狗的層次.
封裝:將對(duì)象的狀態(tài)和行為綁到一起,并且盡可能的隱藏對(duì)象的內(nèi)部細(xì)節(jié).
比如:一臺(tái)電視機(jī),它的所有特征和內(nèi)部結(jié)構(gòu)都封裝起來(lái),我們不需要知道它的內(nèi)部原理是怎么的,我們只需要知道怎么打開(kāi)它,怎么換臺(tái)就夠了.
繼承:繼承是反映客觀世界中對(duì)象的層次關(guān)系.正如上面狗的例子中,我們的狼狗,哈巴狗都繼承自一個(gè)虛擬的狗的概念中.繼承在很大程度上簡(jiǎn)化了我們的工作,也清淅的展示出了對(duì)象的層次關(guān)系.
多態(tài):多態(tài)是指兩個(gè)或多個(gè)屬于不同類(lèi)的對(duì)象,對(duì)于同一個(gè)消息或方法調(diào)用做出不同響應(yīng)的能力..
比如:當(dāng)我們手上拿一個(gè)藍(lán)球的時(shí)候,我們說(shuō):走,打球. 對(duì)方就能清楚的理解我們指的打球是指打藍(lán)球或不是足球,乒乓球。
【編輯推薦】