面向?qū)ο蟮母拍钤斀鈅第1頁(yè)
面向?qū)ο蟮母拍钤斀鈅第2頁(yè)
面向?qū)ο蟮母拍钤斀鈅第3頁(yè)
面向?qū)ο蟮母拍钤斀鈅第4頁(yè)
面向?qū)ο蟮母拍钤斀鈅第5頁(yè)
資源描述:

《面向?qū)ο蟮母拍钤斀狻酚蓵?huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、一.OOP簡(jiǎn)介OOP達(dá)到了軟件工程的三個(gè)主要目標(biāo):重用性、靈活性和擴(kuò)展性。為了實(shí)現(xiàn)整體運(yùn)算,每個(gè)對(duì)象都能夠接收信息、處理數(shù)據(jù)和向其它對(duì)象發(fā)送信息。OOP主要有以下的概念和組件:組件一數(shù)據(jù)和功能一起在運(yùn)行著的計(jì)算機(jī)程序小形成的單元,組件在OOP計(jì)算機(jī)程序屮是模塊和結(jié)構(gòu)化的基礎(chǔ)。抽象性一程序有能力忽略止在處理中信息的某些方面,即對(duì)信息主要方面關(guān)注的能力。封裝一也叫做信息封裝:確保組件不會(huì)以不可預(yù)期的方式改變其它組件的內(nèi)部狀態(tài);只有在那些提供了內(nèi)部狀態(tài)改變方法的組件屮,才可以訪問(wèn)其內(nèi)部狀態(tài)。每類組件都提供了一個(gè)與其它組件聯(lián)系的接口,并規(guī)定了其它組件進(jìn)

2、行調(diào)用的方法。多態(tài)性一組件的引用和類集會(huì)涉及到其它許多不同類型的組件,而且引用組件所產(chǎn)生的結(jié)果得依據(jù)實(shí)際調(diào)用的類型。繼承性一允許在現(xiàn)存的組件基礎(chǔ)上創(chuàng)建子類組件,這統(tǒng)一并增強(qiáng)了多態(tài)性和封裝性。典型地來(lái)說(shuō)就是用類來(lái)對(duì)組件進(jìn)行分組,而且還可以定義新類為現(xiàn)存的類的擴(kuò)展,這樣就可以將類組織成樹(shù)形或網(wǎng)狀結(jié)構(gòu),這體現(xiàn)了動(dòng)作的通用性。OOP的許多原始思想都來(lái)之于Simula語(yǔ)言,并在Smalltalk語(yǔ)言的完善和標(biāo)準(zhǔn)化過(guò)程中得到更多的擴(kuò)展和對(duì)以前的思想的重新注解。叮以說(shuō)00思想和OOPL幾乎是同步發(fā)展相互促進(jìn)的。與函數(shù)式程序設(shè)計(jì)(functional-prog

3、ramming)和邏輯式程序設(shè)計(jì)(logic-programming)所代表的接近于機(jī)器的實(shí)際計(jì)算模型所不同的是,OOP兒乎沒(méi)有引入精確的數(shù)學(xué)描敘,而是傾向于建立一個(gè)對(duì)象模型,它能夠近似的反映應(yīng)用領(lǐng)域內(nèi)的實(shí)體之間的關(guān)系,其本質(zhì)是更接近于-?種人類認(rèn)知事物所采用的哲學(xué)觀的計(jì)算模型。由此,導(dǎo)致了一個(gè)自然的話題,那就是OOP到底是什么?[D&T1988][B.S1991]?。在OOP中,對(duì)象作為計(jì)算主體,擁有自己的名稱,狀態(tài)以及接受外界消息的接口。在對(duì)象模型中,產(chǎn)生新對(duì)象,in對(duì)象銷毀,發(fā)送消息,響應(yīng)消息就構(gòu)成oop計(jì)算模型的根木。對(duì)象的產(chǎn)生有兩種基

4、本方式。一種是以原型(prototype)對(duì)象為基礎(chǔ)產(chǎn)生新的對(duì)象。一種是以類(class)為基礎(chǔ)產(chǎn)生新對(duì)象。原型的概念己經(jīng)在認(rèn)知心理學(xué)小被用來(lái)解釋概念學(xué)習(xí)的遞增特性,原型模型本身就是企圖通過(guò)提供-?個(gè)有代表性的對(duì)象為基礎(chǔ)來(lái)產(chǎn)生各種新的對(duì)象,并由此繼續(xù)產(chǎn)生更符合實(shí)際應(yīng)用的對(duì)象。而原型-委托也是OOP中的對(duì)象抽象,代碼共享機(jī)制中的一種。一個(gè)類提供了一個(gè)或者多個(gè)對(duì)象的通用性描敘。從形式化的觀點(diǎn)看,類與類型有關(guān),因此一個(gè)類相當(dāng)于是從該類中產(chǎn)生的實(shí)例的集合。而這樣的觀點(diǎn)也會(huì)帶來(lái)一些矛盾,比較典型的就是在繼承體系下,子集(子類)對(duì)彖和父集(父類)對(duì)象Z間的

5、行為相融性可能很難達(dá)到,這也就是OOP屮常被引用的一-子類型(subtype)不等于子類(subclass)[Budd2002]。而在一種所有皆對(duì)象的世界觀背景下,在類模型基礎(chǔ)上還誕生出了一種擁有元類(metaclass)的新對(duì)象模型。即類本身也是一種其他類的對(duì)象。以上三種根本不同的觀點(diǎn)各自定義了三種基于類(class-based),基于原型(prototype-based)和基于元類(mctaclass-based)的對(duì)象模型。而這三種對(duì)象模型也就導(dǎo)致了許多不同的程序設(shè)計(jì)語(yǔ)言(如果我們暫時(shí)把靜態(tài)與動(dòng)態(tài)的井別放在一邊)。是的,我們經(jīng)常接觸的C+

6、+,Java都是使用基于類的對(duì)象模型,但除此Z外述冇很多我們所沒(méi)冇接觸的OOPL采用了完全不一樣的對(duì)彖模型,他們是在用另外一種觀點(diǎn)詮釋OOP的內(nèi)涵。二OOP特征1.1面向?qū)ο蟪绦蛟O(shè)計(jì)的特征:1)封裝2)繼承3)多態(tài)1.2類與數(shù)據(jù)封裝].2.1什么是類?簡(jiǎn)單的說(shuō),類就是一種用戶定義的數(shù)據(jù)類型,跟結(jié)構(gòu)類似;并且,類具有自己的成員變量和成員函數(shù)(方法),通過(guò)它們可以對(duì)類自身進(jìn)行操作。如:汽車可以看作是發(fā)動(dòng)機(jī)、車輪、座椅等諸如此類的集合。也可以從功能的角度來(lái)研究,譬如,能移動(dòng),加速,減速,剎車等。例如classCMvClassl{protected:C

7、MyClassl();public:virtual、CMyClassl();}1.2.2封裝(encapsulation)定義:指能夠把一個(gè)實(shí)體的信息、功能、響應(yīng)都裝入一個(gè)單獨(dú)的對(duì)象中的特性。封裝的優(yōu)點(diǎn)如下:1)封裝允許類的客戶不必關(guān)心類的工作機(jī)理就可以使用它。就彖駕駛員不必了解發(fā)動(dòng)機(jī)的工作原理就可以駕駛汽車一樣,類的客戶在使用一個(gè)類吋也不必了解它是如何工作的,而只需了解它的功能即可。2)所有對(duì)數(shù)據(jù)的訪問(wèn)和操作都必須通過(guò)特定的方法,否則便無(wú)法使用,從而達(dá)到數(shù)據(jù)隱藏的目的。1.2.3對(duì)象對(duì)象就是類的實(shí)例。類與對(duì)象的關(guān)系就如類型和變量的關(guān)系,所有對(duì)

8、類的操作都必須通過(guò)對(duì)象來(lái)實(shí)現(xiàn)。當(dāng)一個(gè)類定義了多個(gè)對(duì)象時(shí),每個(gè)對(duì)象擁冇各自的成員數(shù)據(jù)。1.2.4類的三種成員類型1)私有成員(private):缺省情況

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。