程序設(shè)計c++ 第1章_第1頁
程序設(shè)計c++ 第1章_第2頁
程序設(shè)計c++ 第1章_第3頁
程序設(shè)計c++ 第1章_第4頁
程序設(shè)計c++ 第1章_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 本章主要內(nèi)容 一、面向?qū)ο蟪绦蛟O(shè)計概念 二、面向?qū)ο蟪绦蛟O(shè)計方法與傳統(tǒng)設(shè)計方法對比 三、面向?qū)ο蟪绦蛟O(shè)計的語言20世紀(jì)60年 IBM的OS/360,約100萬條指令,5000人年,數(shù)億美元。結(jié)果令人沮喪,錯誤多達(dá)2000多個。1967年前蘇聯(lián)“聯(lián)盟一號”載人飛船,其軟件設(shè)計時忽略了一個小數(shù)點(diǎn),導(dǎo)致機(jī)毀人亡。美國阿波羅登月飛行計劃,阿波羅8號,14號都出現(xiàn)大量錯誤。軟件危機(jī)(software crisis):軟件規(guī)模的擴(kuò)大,復(fù)雜度的提高,需求的不斷增大,“生產(chǎn)作坊式”的軟件開發(fā)模式已經(jīng)不能滿足軟件開發(fā)的需要。軟件產(chǎn)品質(zhì)量低下,甚至開發(fā)夭折;生產(chǎn)效率低1968年提出軟件工程的概念1990年IEE

2、E定義軟件工程為:對軟件開發(fā)、運(yùn)作、維護(hù)的系統(tǒng)化的、有規(guī)范的、可定量的方法之應(yīng)用。軟件工程是一門指導(dǎo)軟件開發(fā)的工程學(xué)科。包含了方法與技術(shù)、工具及環(huán)境、軟件工程管理、標(biāo)準(zhǔn)和規(guī)范四個方面內(nèi)容。面向?qū)ο蟮能浖_發(fā)方法OOSD(object-oriented software development)是20世紀(jì)90年代提出的一種全新的軟件設(shè)計方法 OOSD由OOA、OOD、OOP組成。OOA面向?qū)ο蟮姆治?主要解決“做什么”O(jiān)OD面向?qū)ο蟮脑O(shè)計:進(jìn)一步解決“如何做”O(jiān)OP面向?qū)ο蟮某绦蛟O(shè)計:使用面向?qū)ο蟮恼Z言進(jìn)行編程 程序設(shè)計的泛型(paradigm): 定義:是設(shè)計程序的規(guī)范、模型和風(fēng)格。 是一類程

3、序設(shè)計語言的基礎(chǔ),體現(xiàn)了一類語言的特征。 不同的程序設(shè)計泛型有不同的設(shè)計技術(shù)和方法學(xué) 例如: 面向過程程序設(shè)計和面向?qū)ο蟪绦蛟O(shè)計 函數(shù)式程序設(shè)計(描述輸入輸出之間的關(guān)系,LISP)、模塊程序設(shè)計、邏輯是程序設(shè)計等等 主要特征: 程序由過程定義和過程調(diào)用組成 過程:執(zhí)行某項(xiàng)操作的一段代碼,函數(shù)是最常用的過程。 程序 = 過程 + 調(diào)用 基于面向過程程序設(shè)計泛型的語言被稱為面向過程性語言 C、Pascal、Fortran、Ada等 主要特征: 程序= 對象+消息 對象是面向?qū)ο蟪绦虻幕疽?主要結(jié)構(gòu)特點(diǎn): 由類定義和類使用兩部分組成 程序中的操作是通過對象發(fā)送消息來實(shí)現(xiàn)。 注意:某種程序設(shè)計語言

4、不一定與一種設(shè)計泛型對應(yīng) C+是具有面向過程和面向?qū)ο蠓盒偷幕旌闲驮O(shè)計語言 主要概念 1、對象 2、類 3、消息與方法現(xiàn)實(shí)世界中,任何事物都是對象。具體的:一張桌子、一輛汽車抽象的:一次課、一場球賽簡單的:一張桌子、一次課復(fù)雜的:一輛汽車、一場球賽對象具有靜態(tài)的屬性(狀態(tài))和動態(tài)的行為(操作或功能)人的靜態(tài)屬性:身高、體重、膚色、姓名等等動態(tài)行為:吃、喝、拉、撒、跑、跳?,F(xiàn)實(shí)世界的對象的特征:每個對象必須有一個名字以區(qū)別其他對象屬性描述對象的某些特征有一組操作,每組操作決定對象的一種行為對象的行為可以分為兩類:作用于自身的行為、作用于其他對象的行為 對象 = 描述其屬性的數(shù)據(jù) + 數(shù)據(jù)的操作(

5、函數(shù))數(shù)據(jù)操作代碼對象學(xué)號、姓名成績、體重、愛好、.輸入姓名、輸出姓名、輸入成績、計算學(xué)分積、某個學(xué)生 類:一組具有相同屬性和行為的對象的抽象 人、計算機(jī)、教室. 類和對象抽象和具體學(xué)號:2008姓名:張三成績:250體重:300KG愛好:睡覺、.上課吃飯?zhí)咔蛱诱n學(xué)生張三 類: 具有相同的數(shù)據(jù)、相同操作(函數(shù))的一組對象的的集合 數(shù)據(jù)成員 、 成員函數(shù)n面向?qū)ο蟪绦蛟O(shè)計中,先聲明類,再由類生成對象n類是建立對象的模板類對象對象的實(shí)例化 對象之間需要聯(lián)系,稱為對象的交互 對象之間交互的機(jī)制稱為消息傳遞 消息:一個對象向另一個對象發(fā)送的請求 對象收到請求后,調(diào)用相關(guān)的方法,執(zhí)行相應(yīng)的操作 消息的三

6、個性質(zhì) 同一個對象可以接受不同形式的多個消息,做出不同的響應(yīng) 相同的消息傳遞給不同的對象,做出的反應(yīng)可以不同 對消息的響應(yīng)不是必須的 消息:調(diào)用對象的函數(shù)就是向該對象發(fā)送一個消息 方法:接收消息對象的調(diào)用成員函數(shù)來實(shí)現(xiàn)消息的處理。 方法包括 界面:方法名(函數(shù)名)、調(diào)用協(xié)議(參數(shù)列表) 方法體:實(shí)現(xiàn)操作的一系列步驟的程序,即函數(shù)體 1、抽象 2、封裝 3、繼承 4、多態(tài)抽象是將有關(guān)事務(wù)的共性歸納和集中的過程,是通過特定的實(shí)例(對象)抽取共同性質(zhì)后形成概念的過程。OOP方法中抽象的結(jié)果是通過類來描述和實(shí)現(xiàn)的。實(shí)例:學(xué)生成績管理程序共同屬性(數(shù)據(jù)成員):學(xué)號 int num;姓名 string n

7、ame;成績、float score;共同行為(成員函數(shù)):輸入數(shù)據(jù) input();修改數(shù)據(jù) modify();輸出數(shù)據(jù) print();封裝是OOP一個重要特征OOP中封裝:把數(shù)據(jù)和操作代碼集中起來,放在對象內(nèi)部,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。通過對象與外界的接口來使用對象。C+中的接口就是函數(shù)名封裝的含義: 將數(shù)據(jù)和操作封裝在一個對象中,對象間相互獨(dú)立,互不干擾 對象中某些數(shù)據(jù)和操作對外隱蔽,只留下少量接口與外界聯(lián)系。對外界隱蔽的做法稱為信息隱藏。有利于數(shù)據(jù)安全數(shù)據(jù)操作代碼1操作代碼2操作代碼n接口接口接口OOP中,繼承表達(dá)的是對象之間的相互關(guān)系。通過這種關(guān)系,使某一類可以繼承另一類的特征

8、和能力類之間具有繼承關(guān)系的特征 類間具有共享特征(共享的數(shù)據(jù)和操作代碼) 類間具有差別或新增部分(非共享數(shù)據(jù)和操作代碼) 類間具有層次結(jié)構(gòu)A類基類或者父類B類派生類或者子類A類B類C類直接基類間接基類 繼承的作用: 避免公共代碼重復(fù)開發(fā),減少代碼和冗余 增強(qiáng)一致性來減少模塊間的接口和界面。 軟件重用: 通過繼承可以利用已有類建立一個新類,可重用已有代碼。增加了程序的可重用性,減少了代碼和數(shù)據(jù)冗余及編程工作量 繼承從繼承源上分 單重繼承 多重繼承窗口編輯窗口對話窗口玩具車玩具車學(xué)生大學(xué)生小學(xué)生 現(xiàn)實(shí)世界的多態(tài) C+中的多態(tài),不同的對象接收到相同的消息執(zhí)行不同的操作 C+支持兩種多態(tài)性 編譯時的多

9、態(tài)性:函數(shù)重載,運(yùn)算符重載 運(yùn)行時的多態(tài)性:虛函數(shù) 增強(qiáng)了程序的靈活性、可重用性 傳統(tǒng)的程序設(shè)計方法 生產(chǎn)效率低 面向過程的結(jié)構(gòu)化程序設(shè)計,采用功能分解逐步求精。顆粒度小,從語句級開始 數(shù)據(jù)和操作分離,同一數(shù)據(jù)的操作分散。軟件的編寫和修改復(fù)雜。 維護(hù)周期長。 總之:軟件重用性低、復(fù)雜性高、可維護(hù)性差 傳統(tǒng)程序設(shè)計難以應(yīng)付日益龐大的信息量和多樣的信息類型 多媒體數(shù)據(jù) 傳統(tǒng)程序設(shè)計難以適應(yīng)各種新環(huán)境 并行、分布式、網(wǎng)絡(luò)OOP方法的主要優(yōu)點(diǎn) 可提高程序重用性1、對象的封裝性提高了顆粒度2、建立類庫、通過繼承來派生 可控制程序的復(fù)雜性封裝和信息隱藏使數(shù)據(jù)和操作作為整體來操作。 可改善程序的可維護(hù)性對象的獨(dú)立性。封裝和信息隱藏防止非法操作,減少錯誤率 能夠更好的支持大型程序設(shè)計類的獨(dú)立性、繼承等機(jī)制 增強(qiáng)了計算機(jī)處理信息的范圍比較接近自然思維 能很好的適應(yīng)新的硬件環(huán)境。對象、消息傳遞等思想和機(jī)制與分布式、并行、多處理機(jī)、網(wǎng)絡(luò)等硬件環(huán)境較為為吻合20世紀(jì)50年代LISP語言,提出了動態(tài)聯(lián)編和交互式開發(fā)環(huán)境的概念20世界60年代,Simula引入了面向?qū)ο箢悺⒗^承等的一些概念和特征20世紀(jì)70年代出現(xiàn)了CLU、Modula-2、Ada語言。同時期,美國Xerox公司研制的Smalltalk,公認(rèn)的第一個真正面向?qū)ο蟮恼Z言。OOP語言發(fā)展的里程碑,標(biāo)志OOP的誕生

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論