版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο蠹夹g(shù)與C++計算機(jī)學(xué)院ObjectOriented面向?qū)ο蠹夹g(shù)與C++計算機(jī)學(xué)院ObjectOriented教材:C++面向?qū)ο蟪绦蛟O(shè)計,陳維興,中國鐵道出版社ObjectOriented教材:C++面向?qū)ο蟪绦蛟O(shè)計,陳維興,中國鐵道出版社Obje參考書面向?qū)ο蟮睦碚撆cC++實踐,王燕,清華大學(xué)出版社VisualC++實用教程,鄭阿奇,電子工業(yè)出版社VisualC++6.0技術(shù)內(nèi)幕,DavidJ.Kruglinski著,北京希望電子出版社ObjectOriented參考書面向?qū)ο蟮睦碚撆cC++實踐,王燕,清華大學(xué)出版社Ob課程性質(zhì)與設(shè)置目的性質(zhì)計算機(jī)專業(yè)的專業(yè)基礎(chǔ)課學(xué)習(xí)目標(biāo):掌握面向?qū)ο蟪绦蛟O(shè)計的基本概念及基本思想;掌握類、對象的概念及C++語言實現(xiàn)方法;掌握繼承的概念及C++語言實現(xiàn)方法;掌握多態(tài)的概念及C++語言實現(xiàn)方法;掌握C++語言模板、流類庫的應(yīng)用;——初步建立計算機(jī)專業(yè)必備的面向?qū)ο蟪绦蛟O(shè)計思想。ObjectOriented課程性質(zhì)與設(shè)置目的性質(zhì)ObjectOriented理論學(xué)習(xí)理解、掌握基本概念,多看例題理論指導(dǎo)實踐,實踐提高認(rèn)識實踐學(xué)習(xí)勤思考,多動手重視上機(jī)實習(xí)環(huán)境堅持自學(xué)課程學(xué)習(xí)方法ObjectOriented理論學(xué)習(xí)課程學(xué)習(xí)方法ObjectOriented成績評定
總成績=平時成績(10%)+實驗(20%)+期末考試成績(70%)平時成績包括考勤,作業(yè),課堂小測驗等實驗成績根據(jù)考勤及實驗內(nèi)容完成的情況確定期末考試指學(xué)期末學(xué)校安排的正式考試ObjectOriented成績評定
第1章
面向?qū)ο蟪绦蛟O(shè)計概述ObjectOriented第1章
面向?qū)ο蟾攀觥袷且环N全新的軟件工程技術(shù);●程序設(shè)計方法更符合人類的思維方式,更直接地描述客觀世界;●通過提高代碼的可重用性、可擴(kuò)充性和程序自動生成功能來提高編程效率,大大減少軟件維護(hù)的開銷;●面向?qū)ο蠹夹g(shù)已經(jīng)被越來越多的軟件技術(shù)人員所接受和采用。ObjectOriented面向?qū)ο蟾攀觥袷且环N全新的軟件工程技術(shù);ObjectOr
1.1面向?qū)ο蟪绦蛟O(shè)計概述OO思想的來源需要:人們希望直接與計算機(jī)進(jìn)行交互,而不必進(jìn)行專門的學(xué)習(xí)和長時間訓(xùn)練。目標(biāo):軟件系統(tǒng)對現(xiàn)實世界的直接模擬,盡量實現(xiàn)世界中的事務(wù)直接映射到軟件系統(tǒng)的接空間。它希望用戶用最小的氣力,最大程度地利用軟件系統(tǒng)來解決問題。ObjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述OO思想的來源Object現(xiàn)實世界=物質(zhì)+意識OO世界=具體事務(wù)+抽象概念ObjectOriented現(xiàn)實世界=物質(zhì)+意識ObjectOriented一切都是對象
例題:編寫一個開發(fā)票程序,需要對發(fā)票的名細(xì)欄進(jìn)行計算。
編號名稱規(guī)格單位數(shù)量單價金額合計面向?qū)ο笏悸罚簩ο笠唤M屬性操作:發(fā)票總計……非面向?qū)ο笏悸罚憾x數(shù)據(jù)結(jié)構(gòu)定義函數(shù)ObjectOriented一切都是對象編號名稱規(guī)格單位數(shù)量單價金額合計面向?qū)ο笏悸罚?/p>
1.1面向?qū)ο蟪绦蛟O(shè)計概述從程序設(shè)計方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計范型(paradigm),其基本思想是使用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念來進(jìn)行程序設(shè)計。自八十年代以來,面向?qū)ο蠓椒ㄒ焉钊氲接嬎銠C(jī)軟件領(lǐng)域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實世界的關(guān)系,用什么觀點來研究問題并進(jìn)行問題求解,以及如何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。從這個意義上講:面向?qū)ο蠓椒ㄊ且环N運用對象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。ObjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述從程序設(shè)計方法的角度看,面向
1.1面向?qū)ο蟪绦蛟O(shè)計概述程序設(shè)計方法的演進(jìn)
1、程序設(shè)計語言:機(jī)器語言→匯編語言→高級語言(面向過程的高級語言→面向?qū)ο蟮木幊陶Z言→面向?qū)ο蟮目梢暬幊陶Z言)。2、程序設(shè)計方法:程序設(shè)計的自然描述→結(jié)構(gòu)化程序設(shè)計(面向過程的程序設(shè)計方法)→面向?qū)ο蟮某绦蛟O(shè)計方法→面向?qū)ο蟮目梢暬幊谭椒ābjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述程序設(shè)計方法的演進(jìn)Obje面向過程ObjectOriented面向過程ObjectOrientedObjectOrientedObjectOriented
1.1面向?qū)ο蟪绦蛟O(shè)計概述3、結(jié)構(gòu)化(面向過程)程序設(shè)計方法與面向?qū)ο蟪绦蛟O(shè)計方法的關(guān)系。觀點1:面向過程的程序設(shè)計方法可以作為面向?qū)ο蟪绦蛟O(shè)計方法的基礎(chǔ),學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計應(yīng)具備面向過程的程序設(shè)計方法方面的知識。觀點2:面向?qū)ο蟮某绦蛟O(shè)計方法與面向過程的程序設(shè)計方法在思維方法上與面向過程程序設(shè)計方法相背離,是獨立的程序設(shè)計體系。ObjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述3、結(jié)構(gòu)化(面向過程)程序設(shè)1.1面向?qū)ο蟪绦蛟O(shè)計概述㈠面向過程程序設(shè)計的特點面向過程程序設(shè)計思想的核心:功能分解面向過程程序設(shè)計思想的主要特點:程序與數(shù)據(jù)相分離。即: 程序=算法+數(shù)據(jù)結(jié)構(gòu)面向過程程序設(shè)計思想的主要缺點:程序代碼的可重用性差,維護(hù)代價高。ObjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述㈠面向過程程序設(shè)計的特點O1.1面向?qū)ο蟪绦蛟O(shè)計概述㈡面向?qū)ο蟪绦蛟O(shè)計的特點
面向?qū)ο蟪绦蛟O(shè)計將數(shù)據(jù)及數(shù)據(jù)的操作(算法)當(dāng)成一個整體。即:程序=(算法+數(shù)據(jù)結(jié)構(gòu))其主要思想:面向?qū)ο蟪绦蛟O(shè)計,是把一些具有相同數(shù)據(jù)特性的實例抽象成為一個類,通過對類的定義和類的使用(即對象的使用)實現(xiàn)對實例的使用的——面向?qū)ο蟪绦蛟O(shè)計是一種新的程序設(shè)計范型。ObjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述㈡面向?qū)ο蟪绦蛟O(shè)計的特點O1.1面向?qū)ο蟪绦蛟O(shè)計概述特點:程序由類的定義及類的使用兩部分組成,通常在主程序定義各對象并規(guī)定對象間傳遞消息的規(guī)律;程序中的一切操作都是通過發(fā)送消息實現(xiàn)的,對象接收消息后,啟動相應(yīng)的消息完成相應(yīng)的操作——對象內(nèi)、對象間采用消息傳遞機(jī)制;面向?qū)ο蟮某绦蛟O(shè)計最主要的優(yōu)點:軟件的可重用性面向?qū)ο蟮某绦蛟O(shè)計最重要的的概念:類與對象。ObjectOriented1.1面向?qū)ο蟪绦蛟O(shè)計概述特點:ObjectOrien對象名屬性方法(操作)對象名屬性方法(操作)…張三性別:男年齡:21學(xué)歷:本科專業(yè):計算機(jī)
吃飯上課實驗鍛練…李四性別:女年齡:20學(xué)歷:本科專業(yè):計算機(jī)
吃飯上課實驗鍛練……1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念一、對象㈠對象的概念對象是我們認(rèn)識世界的一些基本單元(人或物等)例【1.1】觀察學(xué)生對象。如下表:ObjectOriented對象名屬方法對象名屬方法…性別:男吃飯性別:女吃飯1.21.2面向?qū)ο蟪绦蛟O(shè)計的基本概念表中各對象都是現(xiàn)實世界中一個客觀實體,其特性是:有一個名字來惟一標(biāo)識該對象;有一組屬性(或稱狀態(tài))描述對象的特征;有一組操作來描述對象的各種行為(實現(xiàn)其功能)。例【1.2】觀察WINDOWS下窗口的命令按鈕:每個命令按鈕都有一個名字,如:“確定”、“取消”;每個按鈕都有一些屬性,如:“長、高、顏色等”;對每個按鈕均可實現(xiàn)一些操作,如:“改變焦點、單擊、雙擊、按回車鍵等”總之:對象是現(xiàn)實世界一個個客觀實體。ObjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念表中各對象都是現(xiàn)實世界中1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念對象:是既包括屬性(狀態(tài))數(shù)據(jù),又包括作用于屬性數(shù)據(jù)的一組操作的封裝體。屬性:對象的屬性數(shù)據(jù)或狀態(tài)數(shù)據(jù)通常稱為屬性。方法/服務(wù):對象的能力(功能),即能實現(xiàn)的操作稱為方法或服務(wù)。注:在C++語言中,屬性稱作數(shù)據(jù)成員,服務(wù)/方法稱為成員函數(shù)。ObjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念對象:是既包括屬性(狀態(tài)1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念㈡對象的特性1.封裝性2.模塊獨立性:每個對象都是一個獨立的模塊,具有獨立的計算能力,通過消息激活對象自身的動作;3.動態(tài)連接性:通過消息傳遞機(jī)制將對象動態(tài)地聯(lián)接在一起,使多個對象共同完成某項任務(wù)。4.系統(tǒng)的易維護(hù)性O(shè)bjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念㈡對象的特性O(shè)bje1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念二、類如例【1.1】,對象“張三”、“李四”…,具有相同的一些屬性、操作,將其抽取具體所描述的數(shù)據(jù),可抽象為一個類別——類:即學(xué)生類。如例【1.2】,“確定”、“取消”按鈕等可抽象為一個類——命令按鈕類。
類就是具有相同的屬性和相同的操作的一組對象的抽象。ObjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念二、類ObjectO1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念由此可知:類是對象的抽象(如“學(xué)生”是對張三、李四等的抽象,“命令按鈕”是對確定、取消等的抽象);對象是類的實例(如張三是“學(xué)生”的一個實例,確定是“命令按鈕”的一個實例)。在實際應(yīng)用中,先定義一個類,然后再定義一個個具體對象。在面向?qū)ο蟪绦蛟O(shè)計中的定義:類是創(chuàng)建對象的樣板,它包含對創(chuàng)建對象的狀態(tài)描述及操作行為的說明;對象是類的實例化(對象變量、對象數(shù)組等)ObjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念由此可知:Object1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念三、消息㈠概念
消息(Message):是描述事件發(fā)生的信息,是一個對象向另一個對象發(fā)出的請求。
消息傳遞:面向?qū)ο蟪绦蛟O(shè)計技術(shù)所提供的一種允許一個對象與另一個對象交互的機(jī)制。㈡組成
1.接受消息的對象;2.消息名;3.零個或若干個參數(shù)。ObjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念三、消息Object1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念消息的三個性質(zhì)同一個對象可以接受不同形式的多個消息,產(chǎn)生的消息各不相同;相同形式的消息可以發(fā)送給不同的對象,產(chǎn)生的響應(yīng)可以各不相同;一個對象可以立即響應(yīng)發(fā)送給它的消息,也可以暫時不予響應(yīng)消息。ObjectOriented1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念消息的三個性質(zhì)Objec1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性面向?qū)ο笙到y(tǒng)的最突出的特性:封裝性、繼承性、多態(tài)性。一、數(shù)據(jù)的抽象與封裝例【1.3】現(xiàn)實社會中抽象與封裝的例子:家電設(shè)備(電視機(jī)等)的使用;汽車的駕駛。㈠數(shù)據(jù)的抽象與封裝的基本概念1.數(shù)據(jù)的抽象數(shù)據(jù)的抽象是對數(shù)據(jù)進(jìn)行實例分析,抽取其共同性質(zhì)的結(jié)果。如:“學(xué)生”對象,先對一些學(xué)生實例進(jìn)行分析,確定他們的共同特性或主要特性(姓名、性別、年齡、專業(yè)等),忽略不同點或次要的引不起興趣的那些特性(長相差異、性格差異等)。ObjectOriented1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性面向?qū)ο笙到y(tǒng)的最突出的特1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性2.數(shù)據(jù)的封裝
將數(shù)據(jù)結(jié)構(gòu)以及作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個實體,把數(shù)據(jù)的表示方式及操作細(xì)節(jié)隱藏起來,用戶通過接口對數(shù)據(jù)進(jìn)行操作。這樣,用戶就只知道操作接口對該數(shù)據(jù)進(jìn)行操作,而不知道內(nèi)部是如何做的以及如何表示的—數(shù)據(jù)的封裝。例【1.4】銀行帳戶的抽象與封裝分析:用戶關(guān)心的問題:存款、取款、轉(zhuǎn)帳、查詢、修改密碼數(shù)據(jù)結(jié)構(gòu):業(yè)主、帳號、余額、利息、密碼等ObjectOriented1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性2.數(shù)據(jù)的封裝Obje數(shù)據(jù)的抽象與封裝WithDraw(取款)Transfer(轉(zhuǎn)帳)Search(查詢)Change_passwords(更改密碼)…balance(余額)interestYTD(年利息)owner(業(yè)主)account_number(帳號)passwords(密碼)
….MakeDeposit(存款)WithDraw(取款)Transfer(轉(zhuǎn)帳)Search(查詢)Change_passwords(更改密碼)接口實現(xiàn)細(xì)節(jié)(用戶不可見)用戶1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性O(shè)bjectOriented數(shù)據(jù)的抽象與封裝WithDraw(取款)balance(余額1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性結(jié)論:抽象是抽取數(shù)據(jù)共同性質(zhì)的結(jié)果,而封裝則是隱蔽了抽象的內(nèi)部實現(xiàn)細(xì)節(jié)的結(jié)果,是將數(shù)據(jù)抽象的外部接口與內(nèi)部實現(xiàn)細(xì)節(jié)清楚地分離開。ObjectOriented1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性結(jié)論:抽象是抽取數(shù)據(jù)共同1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性二、繼承性㈠、繼承的概念
所表達(dá)的是對象類之間相互的關(guān)系。這種關(guān)系使的某一類可以繼承另外一個類的特征和能力。例【1.4】現(xiàn)實社會中繼承的實例由此可知:繼承是將客觀世界中一般和特殊關(guān)系模型化成層次結(jié)構(gòu);通過繼承可實現(xiàn)和增強(qiáng)代碼的可重用性——通過繼承基類的屬性、方法實現(xiàn);在創(chuàng)見新的派生類時,只要指明了派生類是由哪個基類派生的便可自動繼承基類的屬性和方法。修改或擴(kuò)充程序功能時不必修改原代碼(增加新代碼即可)。ObjectOriented1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性二、繼承性O(shè)bject1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性㈡繼承的幾個名詞:基類(父類)派生類(子類)直接基類及間接基類㈢繼承的分類單繼承多繼承ObjectOriented1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性㈡繼承的幾個名詞:Ob1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性三、多態(tài)性多態(tài)性:是指不同的對象在收到相同的消息時產(chǎn)生多種不同的行為。多態(tài)性的例子。“+”:2+3=5設(shè)復(fù)數(shù)a=2+3ib=3+4i則:a+b=5+7i(運算符重載)max()函數(shù)的調(diào)用:max(a,b)——求二個數(shù)之間的最大數(shù);max(a,b,c)——求三個數(shù)之間的最大數(shù);max(*p,n)——求n個數(shù)的最大數(shù)。(函數(shù)重載)ObjectOriented1.3面向?qū)ο蟪绦蛟O(shè)計的基本特性三、多態(tài)性O(shè)bjectObjectOrientedObjectOriented1.4面向?qū)ο蟪绦蛟O(shè)計語言要求:必須支持抽象數(shù)據(jù)類型和繼承性。提供繼承性、多態(tài)性和動態(tài)鏈接機(jī)制,使得類和類庫成為可重用的程序模塊。1、LISP家族:Flavors、LOOPS、CommonLOOPS、CommonObjects2、Simula3、Smalltalk4、C家族:TC++、BC++、VC++5、PASCAL家族:TurboPASCAL、ObjectPASCAL6、VisualBasic7、Java8、.NET與C#ObjectOriented1.4面向?qū)ο蟪绦蛟O(shè)計語言要求:必須支持抽象數(shù)據(jù)類型和C++語言●混合型面向?qū)ο蟪绦蛟O(shè)計語言;●20世紀(jì)80年代在C語言的基礎(chǔ)上開發(fā)而來;●C++是對C的革命,既兼容C的語法,又全面支持面向?qū)ο?;●廣泛流行,并有各種版本的C++編譯系統(tǒng);ObjectOrientedC++語言O(shè)bjectOrientedJava語言●
1995年6月由SUN推出;●一種純粹的面向?qū)ο蟪绦蛟O(shè)計語言;●避免了C、C++中的不合理因素;●真正實現(xiàn)了與平臺無關(guān),可運行于各種操作系統(tǒng)和芯片;ObjectOrientedJava語言O(shè)bjectOrientedVisualBasic語言●1991年Microsoft在BASIC語言的基礎(chǔ)上推出;●繼承了BASIC語言的特點,語法簡單、容易學(xué)習(xí)、容易使用,數(shù)據(jù)處理能力強(qiáng);采用了面向?qū)ο?、事件?qū)動的編程機(jī)制和可視化程序設(shè)計方法;●降低了開發(fā)Windows應(yīng)用程序的難度,有效地提高了應(yīng)用程序開發(fā)的效率。ObjectOrientedVisualBasic語言O(shè)bjectOrientedVisualC++6.0●VisualC++是以C++作為語言、以MFC類庫為基礎(chǔ)的功能強(qiáng)大的可視化軟件開發(fā)工具庫;●VisualC++可以完成各種各樣的應(yīng)用程序的開發(fā),從底層軟件直到上層直接面向用戶的軟件以及網(wǎng)絡(luò)應(yīng)用程序等;●VisualC++提供強(qiáng)大的調(diào)試功能,為大型應(yīng)用程序開發(fā)提供了有效的排錯手段;
ObjectOrientedVisualC++6.0ObjectOrientedVisualC++.NET
●VisualC++.NET是Microsoft.NET(簡稱.NET)的核心;●軟件開發(fā)人員利用.NET能夠很快速的創(chuàng)建下一代面向任何設(shè)備及任何平臺集成的Internet應(yīng)用環(huán)境;●使Microsoft現(xiàn)有的軟件在Internet時代既適用于傳統(tǒng)的PC,又能夠滿足蜂窩電話、個人數(shù)字助理(PDA)等新設(shè)備的需求;ObjectOrientedVisualC++.NETObjectOriente
面向?qū)ο蟮能浖こ贪ǎ骸衩嫦驅(qū)ο蠓治?OOA);●面向?qū)ο笤O(shè)計(OOD);●面向?qū)ο缶幊?OOP);●面向?qū)ο鬁y試(OOT);●面向?qū)ο筌浖S護(hù)(OOSM);1.5面向?qū)ο蟮能浖_發(fā)ObjectOriented面向?qū)ο蟮能浖こ贪ǎ?.5面向?qū)ο蟮能浖_發(fā)
面向?qū)ο蠓治鍪侵冈谏钊?、全面理解問題本質(zhì)需求的基礎(chǔ)上,發(fā)現(xiàn)對象與類,確定屬性、確定對象模式、確定對象類的關(guān)聯(lián)關(guān)系、確定服務(wù)等要素。1.面向?qū)ο蠓治鯫bjectOriented面向?qū)ο蠓治鍪侵冈谏钊?、全面理解問題本質(zhì)需求抽象與分類:抽象(化)忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性。把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念,叫做分類。ObjectOriented抽象與分類:ObjectOriented基本準(zhǔn)則包括:●模塊化;●抽象;●信息隱蔽;●低偶合度與高內(nèi)聚性;●可擴(kuò)充性;●可重用性;2.面向?qū)ο笤O(shè)計ObjectOriented基本準(zhǔn)則包括:2.面向?qū)ο笤O(shè)計ObjectOrient●面向?qū)ο缶幊淘诿嫦驅(qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計的基礎(chǔ)上,使用面向?qū)ο蟪绦蛟O(shè)計語言實際進(jìn)行程序代碼編寫,并最終實現(xiàn)一個可供實際使用的軟件系統(tǒng);●基礎(chǔ)和核心的工作是類的具體設(shè)計和實現(xiàn)等;●程序的開發(fā)通常要經(jīng)過編輯、編譯、連接、運行調(diào)試這幾個步驟模塊化;3.面向?qū)ο缶幊蘋bjectOriented●面向?qū)ο缶幊淘诿嫦驅(qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計的基礎(chǔ)上,使用面
面向?qū)ο蟮能浖y試指在符合面向?qū)ο蟮母拍钆c原則的基礎(chǔ)上進(jìn)行的測試,以對象的類作為基本測試單位,發(fā)現(xiàn)和排除程序錯誤,提高測試效率4.面向?qū)ο鬁y試ObjectOriented面向?qū)ο蟮能浖y試指在符合面向?qū)ο蟮母拍钆c原●由于軟件代碼規(guī)模的越來越龐大,無論經(jīng)過多少次測試,也無論經(jīng)過了多么嚴(yán)格的測試,軟件中依然難免存在各種各樣的隱含錯誤;●因此軟件在使用的過程中,需要開發(fā)人員或?qū)I(yè)軟件維護(hù)人員進(jìn)行必要和合理的維護(hù)。5.面向?qū)ο筌浖S護(hù)ObjectOriented●由于軟件代碼規(guī)模的越來越龐大,無論經(jīng)過多少次測試,也無論六、C++對面向?qū)ο蠹夹g(shù)的支持C++作為一種面向?qū)ο蟪绦蛟O(shè)計語言,具有對象、類、消息等概念,同時支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性和多態(tài)性。C++對抽象性的支持C++對封裝性的支持C++對繼承性的支持C++對多態(tài)性的支持ObjectOriented六、C++對面向?qū)ο蠹夹g(shù)的支持C++作為一種面向?qū)ο蟪绦蛟O(shè)計總結(jié)面向?qū)ο蟮幕舅枷耄?)從現(xiàn)實世界中客觀存在的事物出發(fā)來建立軟件系統(tǒng),強(qiáng)調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心來思考問題、認(rèn)識問題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象地表示為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位。這可以使系統(tǒng)直接映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌(對象)(2)用對象的屬性表示事物的性質(zhì);用對象的操作表示事物的行為。(屬性與操作)(3)對象的屬性與操作結(jié)合為一體,成為一個獨立的、不可分的實體,對外屏蔽其內(nèi)部細(xì)節(jié)。(對象的封裝)ObjectOriented總結(jié)面向?qū)ο蟮幕舅枷隣bjectOriented(4)對事物進(jìn)行分類。把具有相同屬性和相同操作的對象歸為一類,類是這些對象的抽象描述,每個對象是它的類的一個實例。(分類)(5)復(fù)雜的對象可以用簡單的對象作為其構(gòu)成部分。(聚合)(6)通過在不同程度上運用抽象的原則,可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與操作,從而簡化系統(tǒng)的構(gòu)造過程及其文檔。(繼承)(7)類具有封閉性,把內(nèi)部的屬性和操作隱藏起來,只有公共的操作對外是可見的。(類的封閉性)
ObjectOriented(4)對事物進(jìn)行分類。把具有相同屬性和相同操作的對象歸為一(8)對象之間通過消息進(jìn)行通訊,以實現(xiàn)對象之間的動態(tài)聯(lián)系。(消息)
(9)通過關(guān)聯(lián)表達(dá)類(一組對象)之間的靜態(tài)關(guān)系。(關(guān)聯(lián))總結(jié):用類和對象作為系統(tǒng)的基本構(gòu)成單位。對象對應(yīng)問題域中的事物,其屬性與操作刻畫了事物的性質(zhì)和行為,它們之間的繼承關(guān)系、聚合關(guān)系、消息和關(guān)聯(lián)如實地表達(dá)了問題域中事物之間實際存在的各種關(guān)系。因此,無論系統(tǒng)的構(gòu)成成分,還是通過這些成分之間的關(guān)系而體現(xiàn)的系統(tǒng)結(jié)構(gòu),都可直接地映射問題域。ObjectOriented(8)對象之間通過消息進(jìn)行通訊,以實現(xiàn)對象之間的動態(tài)聯(lián)系。一個簡單的C++程序問題:輸入圓的半徑,求圓的周長和面積數(shù)據(jù)描述:
半徑,周長,面積均用實型數(shù)表示數(shù)據(jù)處理:
輸入半徑r; 計算周長=2*π*r; 計算面積=pi*r2; 輸出半徑,周長,面積;ObjectOriented一個簡單的C++程序問題:輸入圓的半徑,求圓的周長和面積數(shù)方法一,用結(jié)構(gòu)化方法編程,求圓的周長和面積//countthegirthandareaofcircle#include<iostream.h>voidmain(){doubler,girth,area; constdoublepi=3.1415;
cout<<"Pleaseinputradius:\n";cin>>r;
girth=2*pi*r;area=pi*r*r;cout<<"radius="<<r<<endl;cout<<"girth="<<girth<<endl;cout<<"area="<<area<<endl;}數(shù)據(jù)描述半徑:r、周長:girth、面積:area數(shù)據(jù)處理輸入數(shù)據(jù)計算周長和面積輸出計算結(jié)果ObjectOriented方法一,用結(jié)構(gòu)化方法編程,求圓的周長和面積數(shù)據(jù)描述半徑:r、方法二,用面向?qū)ο蠓椒ň幊蹋髨A的周長和面積分析“圓”是抽象的類類型建立具體的圓(對象)半徑?圓的周長?面積?實例化ObjectOriented方法二,用面向?qū)ο蠓椒ň幊?,求圓的周長和面積分析“圓”是抽象分析圓類數(shù)據(jù)成員
半徑成員函數(shù)
置半徑值 求圓的半徑
求周長
求面積實例化ObjectOriented分析圓類實例化ObjectOriented#include<iostream.h>classCircle{doubleradius;public:voidSet_Radius(doubler){radius=r;}doubleGet_Radius(){returnradius;}doubl
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)前教育的空間與創(chuàng)造教育考核試卷
- 工程監(jiān)理服務(wù)相關(guān)主題名稱考核試卷
- 口腔衛(wèi)生材料的研究與應(yīng)用考核試卷
- 競選策劃部部長
- 共享經(jīng)濟(jì)與智能出行的融合考核試卷
- 《古典詩歌》課件
- 農(nóng)業(yè)科學(xué)與農(nóng)業(yè)機(jī)械化考核試卷
- 建筑工地安全著裝與個人防護(hù)用品考核試卷
- 家用紡織品的市場競爭情況考核試卷
- 《突破企業(yè)績效瓶頸》課件
- 安全培訓(xùn)教育計劃表模板范本
- 網(wǎng)頁制作ppt課件(完整版)
- 供應(yīng)商質(zhì)量問題賠償協(xié)議
- 做優(yōu)“北京服務(wù)”四個創(chuàng)新鏈接高精尖產(chǎn)業(yè)產(chǎn)業(yè)實施方案
- 三年級上冊數(shù)學(xué)課件 - 幾分之一 人教版(共32張PPT)
- 氣體減壓器校準(zhǔn)規(guī)范
- 部編版一年級上冊語文 第2單元 3.bpmf第二課時課件
- 零星維修工程項目施工方案
- 腕踝針培訓(xùn)PPT課件(PPT 45頁)
- 食藥同源-PPT課件(PPT 55頁)
- 胃潰瘍診治指南
評論
0/150
提交評論