資源描述:
《C語言程序 設(shè)計 第12章 C++程序設(shè)計基礎(chǔ).ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、C語言程序設(shè)計第12章C++程序設(shè)計基礎(chǔ)第12章C++程序設(shè)計基礎(chǔ)主要內(nèi)容12.1面向?qū)ο蟪绦蛟O(shè)計概述12.2從C到C++12.3C++的非面向?qū)ο笾R12.1面向?qū)ο蟪绦蛟O(shè)計概述12.1.1面向?qū)ο蟪绦蛟O(shè)計的基本概念12.1.2面向?qū)ο蟪绦蛟O(shè)計的特點12.1.3類和對象的作用12.1.4面向?qū)ο蟮能浖_發(fā)12.1.1面向?qū)ο蟪绦蛟O(shè)計的基本概念1.對象對象是構(gòu)成系統(tǒng)的基本單位。任何一個對象都應(yīng)當(dāng)具有這兩個要素,即屬性(attribute)和行為(behavior),它能根據(jù)外界給的信息進行相應(yīng)的操
2、作。一個對象往往是由一組屬性和一組行為構(gòu)成的。在C++中,每個對象都是由數(shù)據(jù)和函數(shù)(即操作代碼)這兩部分組成的。數(shù)據(jù)體現(xiàn)了“屬性”;函數(shù)是用來對數(shù)據(jù)進行操作的,以便實現(xiàn)某些功能。2.封裝與信息隱蔽所謂“封裝”,指兩方面的含義:一是將有關(guān)的數(shù)據(jù)和操作代碼封裝在一個對象中,形成一個基本單位,各個對象之間相對獨立,互不干擾;二是將對象中某些部分對外隱蔽,即隱蔽其內(nèi)部細節(jié),只留下少量接口,以便與外界聯(lián)系,接收外界的消息。這種對外界隱蔽的做法稱為信息隱蔽(imformationhiding)。信息隱蔽還有利
3、于數(shù)據(jù)安全,防止無關(guān)的人了解和修改數(shù)據(jù)。C++的對象中的函數(shù)名就是對象的對外接口,外界可以通過函數(shù)名來調(diào)用這些函數(shù)來實現(xiàn)某些行為。12.1.1面向?qū)ο蟪绦蛟O(shè)計的基本概念3.抽象抽象的作用是表示同一類事物的本質(zhì)。C和C++中的數(shù)據(jù)類型就是對一批具體的數(shù)的抽象。例如,“整型數(shù)據(jù)”是對所有整數(shù)的抽象。類是對象的抽象,而對象則是類的特例,或者說對象是類的具體表現(xiàn)形式。4.繼承與重用如果在軟件開發(fā)中已經(jīng)建立了一個名為A的“類”,又想另外建立一個名為B的“類”,而后者與前者內(nèi)容基本相同,只是在前者的基礎(chǔ)上增加
4、一些屬性和行為,顯然不必再從頭設(shè)計一個新類,而只需在類A的基礎(chǔ)上增加一些新內(nèi)容即可。這就是面向?qū)ο蟪绦蛟O(shè)計中的繼承機制。利用繼承可以簡化程序設(shè)計的步驟。C++提供了繼承機制,采用繼承的方法可以很方便地利用一個已有的類建立一個新的類,這就可以重用已有軟件中的一部分甚至大部分,大大節(jié)省了編程工作量。這就是常說的“軟件重用”(softwarereusability)的思想,不僅可以利用自己過去所建立的類,而且可以利用別人使用的類或存放在類庫中的類,對這些類作適當(dāng)加工即可使用,大大縮短了軟件開發(fā)周期,對于
5、大型軟件的開發(fā)具有重要意義。5.多態(tài)性由繼承而產(chǎn)生的相關(guān)的不同的類,其對象對同一消息會作出不同的響應(yīng)。多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的一個重要特征,能增加程序的靈活性。12.1.2面向?qū)ο蟪绦蛟O(shè)計的特點傳統(tǒng)的面向過程程序設(shè)計是圍繞功能進行的,用一個函數(shù)實現(xiàn)一個功能。所有的數(shù)據(jù)都可以公用,一個函數(shù)可以使用任何一組數(shù)據(jù),而一組數(shù)據(jù)又能被多個函數(shù)所使用。程序設(shè)計者必須考慮每一個細節(jié),什么時候?qū)κ裁磾?shù)據(jù)進行操作。當(dāng)程序規(guī)模較大、數(shù)據(jù)很多、操作種類繁多時,程序設(shè)計者往往感到難以應(yīng)付。面向?qū)ο蟪绦蛟O(shè)計采取的是另外一
6、種思路,它面對的是一個個對象。實際上,每一組數(shù)據(jù)都是有特定的用途的,是某種操作的對象。也就是說,一組操作調(diào)用一組數(shù)據(jù)。面向?qū)ο蟪绦蛟O(shè)計者的任務(wù)包括兩個方面:一是設(shè)計所需的各種類和對象,即決定把哪些數(shù)據(jù)和操作封裝在一起;二是考慮怎樣向有關(guān)對象發(fā)送消息,以完成所需的任務(wù)12.1.3類和對象的作用類是C++中十分重要的概念,它是實現(xiàn)面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)。C++對C的改進,最重要的就是增加了“類”這樣一種類型。類是所有面向?qū)ο蟮恼Z言的共同特征,所有而向?qū)ο蟮恼Z言都提供了這種類型。如果一種計算機語言中不包
7、含類,它就不能稱為面向?qū)ο蟮恼Z言。一個有一定規(guī)模的C++程序是由許多類所構(gòu)成的??梢哉f,類是C++的靈魂,如果不真正掌握類,就不能真正掌握C++。基于對象就是基于類。與面向過程的程序不同,基于對象的程序是以類和對象為基礎(chǔ)的,程序的操作是圍繞對象進行的。在此基礎(chǔ)上利用了繼承機制和多態(tài)性,就成為面向?qū)ο蟮某绦蛟O(shè)計。12.1.4面向?qū)ο蟮能浖_發(fā)1.面向?qū)ο蠓治觯╫bjectorientedanalysis,OOA)軟件工程中的系統(tǒng)分析階段,系統(tǒng)分析員要和用戶結(jié)合在一起,對用戶的需求作出精確的分析和明確
8、的描述,從宏觀的角度概括出系統(tǒng)應(yīng)該做什么。面向?qū)ο蟮姆治?,要按照而向?qū)ο蟮母拍詈头椒?,在對任?wù)的分析中,針對客觀存在的事物和事物之間的關(guān)系,歸納出有關(guān)的對象以及對象之間的聯(lián)系,并將具有相同屬性和行為的對象用一個類(Class)來表示。建立一個能反映真實工作情況的需求模型。在這個階段所形成的模型是比較粗略的。12.1.4面向?qū)ο蟮能浖_發(fā)2.面向?qū)ο笤O(shè)計(objectorienteddesign,OOD)根據(jù)面向?qū)ο蠓治鲭A段形成的需求模型,對每一部分分別進行具體的設(shè)計。首先是進行類的