面向?qū)ο蟮某绦蛟O(shè)計(jì)語言第一章_第1頁
面向?qū)ο蟮某绦蛟O(shè)計(jì)語言第一章_第2頁
面向?qū)ο蟮某绦蛟O(shè)計(jì)語言第一章_第3頁
面向?qū)ο蟮某绦蛟O(shè)計(jì)語言第一章_第4頁
面向?qū)ο蟮某绦蛟O(shè)計(jì)語言第一章_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章緒論面向?qū)ο蟮某绦蛟O(shè)計(jì)語言O(shè)bjectOrientedProgrammingLanguage1本章主要內(nèi)容計(jì)算機(jī)程序設(shè)計(jì)語言的發(fā)展面向?qū)ο蟮姆椒嫦驅(qū)ο蟮能浖_發(fā)信息的表示與存儲(自學(xué))程序的開發(fā)過程2計(jì)算機(jī)程序軟件包含了使計(jì)算機(jī)運(yùn)行所需的各種程序及其有關(guān)的文檔資料。計(jì)算機(jī)的工作是用程序來控制的。程序是指令的集合。指令是計(jì)算機(jī)可以識別的命令。一臺計(jì)算機(jī)硬件系統(tǒng)能夠識別的所有指令的集合稱為它的指令系統(tǒng)。1.1計(jì)算機(jī)語言的發(fā)展3機(jī)器語言與匯編語言由計(jì)算機(jī)硬件系統(tǒng)可以識別的二進(jìn)制指令組成的語言稱為機(jī)器語言。計(jì)算機(jī)發(fā)展的初期,軟件工程師們只能用機(jī)器語言來編寫程序。這一階段,在人類的自然語言和計(jì)算機(jī)編程語言之間存在著巨大的鴻溝。匯編語言將機(jī)器指令映射為一些可以被人讀懂的助記符,如ADD、SUB等。此時(shí)編程語言與人類自然語言間的鴻溝略有縮小,但仍與人類的思維相差甚遠(yuǎn)。因?yàn)樗某橄髮哟翁?,程序員需要考慮大量的機(jī)器細(xì)節(jié)。1.1計(jì)算機(jī)語言的發(fā)展4高級語言高級語言屏蔽了機(jī)器的細(xì)節(jié),提高了語言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。這使得在書寫程序時(shí)可以聯(lián)系到程序所描述的具體事物。1.1計(jì)算機(jī)語言的發(fā)展5面向?qū)ο蟮恼Z言出發(fā)點(diǎn):更直接地描述客觀世界中存在的事物(對象)以及它們之間的關(guān)系。特點(diǎn):是高級語言。將客觀事物看作具有屬性和行為的對象。通過抽象找出同一類對象的共同屬性和行為,形成類。通過類的繼承與多態(tài)實(shí)現(xiàn)代碼重用1.1計(jì)算機(jī)語言的發(fā)展6面向?qū)ο蟮恼Z言優(yōu)點(diǎn):使程序能夠比較直接地反問題域的本來面目,軟件開發(fā)人員能夠利用人類認(rèn)識事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。1.1計(jì)算機(jī)語言的發(fā)展7程序設(shè)計(jì)方法的發(fā)展歷程

——面向過程的程序設(shè)計(jì)方法程序的目的:用于數(shù)學(xué)計(jì)算主要工作:設(shè)計(jì)求解問題的過程缺點(diǎn):對于龐大、復(fù)雜的程序難以開發(fā)和維護(hù)1.2面向?qū)ο蟮姆椒?程序設(shè)計(jì)方法的發(fā)展歷程

——面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)思路自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。程序結(jié)構(gòu):按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹狀結(jié)構(gòu)。各模塊間的關(guān)系盡可能簡單,功能上相對獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。其模塊化實(shí)現(xiàn)的具體方法是使用子程序。1.2面向?qū)ο蟮姆椒?程序設(shè)計(jì)方法的發(fā)展歷程

——面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法例如要計(jì)算一個(gè)公司員工的平均工資,這是個(gè)相對復(fù)雜的任務(wù),我們就可以把它拆分成若干子任務(wù):(1)統(tǒng)計(jì)出每個(gè)員工的工資(2)計(jì)算共有多少員工

(3)計(jì)算工資總額(4)用職工人數(shù)去除工資總額1.2面向?qū)ο蟮姆椒?0程序設(shè)計(jì)方法的發(fā)展歷程

——面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法其中第3步計(jì)算工資總額又可以分為如下子任務(wù):

(1)找出每個(gè)職員的檔案

(2)讀出工資數(shù)額

(3)把工資加和

(4)讀下一個(gè)職工檔案1.2面向?qū)ο蟮姆椒?1程序設(shè)計(jì)方法的發(fā)展歷程

——面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法程序=“數(shù)據(jù)結(jié)構(gòu)+算法”優(yōu)點(diǎn):有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。1.2面向?qū)ο蟮姆椒?2程序設(shè)計(jì)方法的發(fā)展歷程

——面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法缺點(diǎn):可重用性差、數(shù)據(jù)安全性差、難以開發(fā)大型軟件和圖形界面的應(yīng)用軟件把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體。當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過程都要進(jìn)行相應(yīng)的修改。每一種相對于老問題的新方法都要帶來額外的開銷。圖形用戶界面的應(yīng)用程序,很難用過程來描述和實(shí)現(xiàn),開發(fā)和維護(hù)也都很困難。1.2面向?qū)ο蟮姆椒?3程序設(shè)計(jì)方法的發(fā)展歷程

——面向?qū)ο蟮姆椒▽?shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個(gè)相互依存、不可分離的整體——對象。對同類型對象抽象出其共性,形成類。類通過一個(gè)簡單的外部接口,與外界發(fā)生關(guān)系。對象與對象之間通過消息進(jìn)行通訊。對象=數(shù)據(jù)+操作程序=對象+對象+…+對象1.2面向?qū)ο蟮姆椒?4程序設(shè)計(jì)方法的發(fā)展歷程

——面向?qū)ο蟮姆椒▋?yōu)點(diǎn):程序模塊間的關(guān)系更為簡單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護(hù)都更為方便。1.2面向?qū)ο蟮姆椒?5面向?qū)ο蟮幕靖拍?/p>

——對象一般意義上的對象:是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物??梢允怯行蔚模ū热缫惠v汽車),也可以是無形的(比如一項(xiàng)計(jì)劃)。是構(gòu)成世界的一個(gè)獨(dú)立單位,具有:靜態(tài)特征:可以用某種數(shù)據(jù)來描述動態(tài)特征:對象所表現(xiàn)的行為或具有的功能1.2面向?qū)ο蟮姆椒?6面向?qū)ο蟮幕靖拍?/p>

——對象面向?qū)ο蠓椒ㄖ械膶ο螅菏窍到y(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是用來構(gòu)成系統(tǒng)的一個(gè)基本單位。對象由一組屬性和一組行為構(gòu)成。屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項(xiàng)。行為:用來描述對象動態(tài)特征的操作序列。1.2面向?qū)ο蟮姆椒?7面向?qū)ο蟮幕靖拍?/p>

——類分類——人類通常的思維方法分類所依據(jù)的原則——抽象忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個(gè)抽象的概念。例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實(shí)踐中抽象出的概念。1.2面向?qū)ο蟮姆椒?8面向?qū)ο蟮幕靖拍?/p>

——類面向?qū)ο蠓椒ㄖ械?類"具有相同屬性和服務(wù)的一組對象的集合為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個(gè)主要部分。類與對象的關(guān)系:

猶如模具與鑄件之間的關(guān)系,類是創(chuàng)建對象的樣板,一個(gè)對象是類的實(shí)例,有了類才能創(chuàng)建對象。1.2面向?qū)ο蟮姆椒?9面向?qū)ο蟮幕靖拍?/p>

——類classPeople{ protected: charname[20]; //姓名

intage; //年齡

public: People(char*the_name,intthe_age); char*change_name();//改姓名

voidinc_age(); //長一歲

};Peoplea;1.2面向?qū)ο蟮姆椒?0面向?qū)ο蟮幕靖拍?/p>

——封裝把對象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單元。盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。對外形成一個(gè)邊界(或者說一道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系。1.2面向?qū)ο蟮姆椒?1將對象的屬性和行為放在一起作為一個(gè)整體的方法稱為封裝

對象名屬性1屬性2……屬性n操作1操作2……操作n對象結(jié)構(gòu)圖面向?qū)ο蟮幕靖拍?/p>

——封裝Fname=“Mary”age=18changeName(…)incrementAge()22面向?qū)ο蟮幕靖拍?/p>

——繼承繼承對于軟件復(fù)用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。定義:特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類的繼承。例如:將輪船作為一個(gè)一般類,客輪便是一個(gè)特殊類。1.2面向?qū)ο蟮姆椒?3面向?qū)ο蟮幕靖拍?/p>

——繼承繼承(Inheritance)是類之間的關(guān)系,使一類對象可以繼承另一類對象的屬性(數(shù)據(jù))和行為(操作),新的類是從現(xiàn)有類派生出來的,稱為派生類。父類(基類):層次結(jié)構(gòu)中有下層結(jié)點(diǎn)的類。子類(派生類):層次結(jié)構(gòu)中有上層結(jié)點(diǎn)的類,它繼承了其上層全部基類的特性,同時(shí)還具有自己的特性。

一個(gè)類可以既是基類又是派生類。動物貓鳥百靈鳥24面向?qū)ο蟮幕靖拍?/p>

——多態(tài)性多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在一般類及其各個(gè)特殊類中具有不同的語義。例如:數(shù)的加法->實(shí)數(shù)的加法

->復(fù)數(shù)的加法1.2面向?qū)ο蟮姆椒?5面向?qū)ο蟮能浖こ堂嫦驅(qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用。它包括:面向?qū)ο蟮姆治觯∣OA)面向?qū)ο蟮脑O(shè)計(jì)(OOD)面向?qū)ο蟮木幊蹋∣OP)面向?qū)ο蟮臏y試(OOT)面向?qū)ο蟮能浖S護(hù)(OOSM)1.3面向?qū)ο蟮能浖_發(fā)26系統(tǒng)分析系統(tǒng)分析階段應(yīng)該扼要精確地抽象出系統(tǒng)必須做什么,但是不關(guān)心如何去實(shí)現(xiàn)。面向?qū)ο蟮南到y(tǒng)分析,直接用問題域中客觀存在的事物建立模型中的對象,對單個(gè)事物及事物之間的關(guān)系,都保留他們的原貌,不做轉(zhuǎn)換,也不打破原有界限而重新組合,因此能夠很好地映射客觀事物。1.3面向?qū)ο蟮能浖_發(fā)27設(shè)計(jì)針對系統(tǒng)的一個(gè)具體實(shí)現(xiàn)運(yùn)用面向?qū)ο蟮姆椒āF渲邪▋煞矫娴墓ぷ鳎喊袿OA模型直接搬到OOD,作為OOD的一部分針對具體實(shí)現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲、任務(wù)管理等因素補(bǔ)充一些與實(shí)現(xiàn)有關(guān)的部分。1.3面向?qū)ο蟮能浖_發(fā)28編程OOP工作就是用一種面向?qū)ο蟮木幊陶Z言把OOD模型中的每個(gè)成分書寫出來,是面向?qū)ο蟮能浖_發(fā)最終落實(shí)的重要階段。1.3面向?qū)ο蟮能浖_發(fā)29測試測試的任務(wù)是發(fā)現(xiàn)軟件中的錯(cuò)誤。在面向?qū)ο蟮能浖y試中繼續(xù)運(yùn)用面向?qū)ο蟮母拍钆c原則來組織測試,以對象的類作為基本測試單位,可以更準(zhǔn)確的發(fā)現(xiàn)程序錯(cuò)誤并提高測試效率。1.3面向?qū)ο蟮能浖_發(fā)30維護(hù)將軟件交付使用后,工作并沒有完結(jié),還要根據(jù)軟件的運(yùn)行情況和用戶的需求,不斷改進(jìn)系統(tǒng)。使用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件,其程序與問題域是一致的,因此,在維護(hù)階段運(yùn)用面向?qū)ο蟮姆椒梢源蟠筇岣哕浖S護(hù)的效率。1.3面向?qū)ο蟮能浖_發(fā)31基本術(shù)語源程序:用源語言寫的,有待翻譯的程序目標(biāo)程序:也稱為"結(jié)果程序",是源程序通過翻譯程序加工以后所生成的程序。翻譯程序:是指一個(gè)把源程序翻譯成等價(jià)的目標(biāo)程序的程序。1.5程序的開發(fā)過程32基本術(shù)語

——三種不同類型的翻譯程序匯編程序:其任務(wù)是把用匯編語言寫成的源程序,翻譯成機(jī)器語言形式的目標(biāo)程序。編譯程序:若源程序是用高級程序設(shè)計(jì)語言所寫,經(jīng)翻譯程序加工生成目標(biāo)程序,那么,該翻譯程序就稱為"編譯程序"。1.5程序的開發(fā)過程33基本術(shù)語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論