面向對象程序方法課件_第1頁
面向對象程序方法課件_第2頁
面向對象程序方法課件_第3頁
面向對象程序方法課件_第4頁
面向對象程序方法課件_第5頁
已閱讀5頁,還剩87頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第九章面向對象程序方法

學習要求:掌握面向對象程序設計語言的發(fā)展史。了解主要的一些程序設計范型。熟練掌握面向對象程序設計語言的三大特性:封裝、繼承和多態(tài)。熟練掌握面面向對象程序設計語言的基本概念1第九章面向對象程序方法

學習要求:19.1概述

目前,軟件的生產方式也正在發(fā)生一場類似的變革

面向對象是軟件程序設計的一種新思想

面向對象的基本思想:

從現實世界中客觀存在的事物(對象)出發(fā)構造系統(tǒng),并在系統(tǒng)構造中運用人類的自然思維方式

29.1概述目前,軟件的生產方式也正在發(fā)生一場類似的變革9.1.1面向對象的由來“對象“表示現實世界中的某個具體的事物

現實世界中的事物可分為兩大部分:物質和意識

物質表達的是具體的事物

意識描述的是某一個抽象的概念

例如:“自行車”和“這輛白色的自行車”,后者是物質,使具體的客觀存在,前者是意識,它是一個抽象的概念,是對客觀存在的事物的一種概括。

39.1.1面向對象的由來“對象“表示現實世界中的某個具體的問題領域

現實世界中的事物可直接映射到面向對象系統(tǒng)的問題領域

現實世界中的物質可對應于面向對象系統(tǒng)中的“對象”

現實世界中的意識可對應面向對象系統(tǒng)中的抽象概念----類

4問題領域現實世界中的事物可直接映射到面向對象系統(tǒng)的問題領域問題領域

物質:

一輛白色的自行車意識:自行車

具體事物:一個對象------自行車的實例抽象概念:自行車類現實世界問題領域面向對象問題領域現實世界與面向對象系統(tǒng)之間的對應關系5問題領域物質:具體事物:現實世界問題領域9.1.2面向對象方法的發(fā)展面向對象方法:是利用抽象、封裝等機制,借助對象、類、繼承、消息傳遞等概念進行軟件系統(tǒng)構造的軟件開發(fā)方法。用面向對象思想構造軟件系統(tǒng)的主要內容:(P208例子)

對象對象的屬性和操作------------一個完整的對象類繼承一個系統(tǒng)就是由各個對象組成的。69.1.2面向對象方法的發(fā)展面向對象方法:是利用抽象、封裝9.1.2面向對象方法的發(fā)展史200090年代80年代70年代60年代面向對象方法的發(fā)展Algol語言中引入引入塊結構(begin…end),第一次嘗試為數據提供保護和封裝數據抽象類型概念的發(fā)展---------面向對象的基本思想:數據結構+操作=實體Simula67語言引入對象和消息機制。-------面向對象語言的鼻祖SmallTalk80商品化----純粹的OO編程語言產生了Ada語言,支持抽象數據類型的最重要的語言之一。大量的OOPL出現-----面向對象方法走向實用1986年,首屆“面向對象編程、系統(tǒng)、語言和應用國際會議”O(jiān)bject-c,C++,Eiffel,Java-------有廣泛影響的面向對象程序設計語言。面向對象軟件工程發(fā)展。79.1.2面向對象方法的發(fā)展史Algol語言中引入引入塊結面向對象相關術語面向對象(OO:ObjectOriented):面向對象分析(OOA:ObjectOrientedAnalyse)面向對象設計(OOD:ObjectOrientedDesign)面向對象程序設計(OOP:ObjectOrientedProgramming)面向對象數據庫(OODB:ObjectOrientedDataBase)

8面向對象相關術語面向對象(OO:ObjectOriente9.2基本概念---------對象抽象

對象是無處不在的

對象是數據以及可以對這些數據施加的操作結合在一起所構成的獨立實體的總稱。

99.2基本概念---------對象抽象9對象在軟件系統(tǒng)開發(fā)的各個階段的不同表現形式

分析階段: 對象是一種粗略的描述設計階段: 對象的數據和操作進一步得到細化,對象的特性得到明確的描述編程階段: 通過定義類,并將其實例化從而得到具體的對象運行階段: 對象成為內存中可標識的區(qū)域,存放數據和操作代碼10對象在軟件系統(tǒng)開發(fā)的各個階段的不同表現形式分析階段:10一個對象類的定義與對象實例化

//------------------------------------------//例9.1演示:對象類的定義與對象實例化//------------------------------------------

//定義一個電話類

classPhone{private:charowner[10];//電話主人姓名

charaddress[50];//電話所在地charphoneNumber[10];//電話號碼11一個對象類的定義與對象實例化//-------------一個對象類的定義與對象實例化public:Phone(char*owner,char*address,char*phoneNum);//構造函數

char*getPhoneNumber();//取電話號碼

char*getOwner();//取電話主人姓名

char*getAddress();//取電話所在地

char*changeOwner(char*);//電話過戶

char*dial(char*);//撥號};//對象實例化PhonemyPhone(“張三”,”河南鄭州”,”1234567”);12一個對象類的定義與對象實例化public:129.2基本概念---------消息 1.軟件系統(tǒng)中的對象之間存在依存關系: 對象通過接收消息,對外提供服務發(fā)揮能動性 對象通過發(fā)送消息,請求其他對象為它服務2.消息:消息是對象之間相互請求和相互協(xié)作的途徑,要求某個對象執(zhí)行類中所定義的某個操作的規(guī)格說明。3.消息的幾個關鍵要素:消息的發(fā)送者、消息的接收者、消息名、參數及應答。

注:消息是對象之間通信的唯一途徑139.2基本概念---------消息 1.軟件系統(tǒng)中的對老板對下屬說:“明天早上八點以前把有關飲料的市場調查報告放到我的辦公桌上”。消息的發(fā)送者消息的接收者參數1參數2參數3注意在此消息名是:給我市場調查報告14老板對下屬說:“明天早上八點以前把有關飲料的市場調查報告放消息的幾個特性

同一對象可以接收不同形式的消息,產生不同的響應

相同形式的消息可以送給不同對象,所做出的響應可截然不同

消息的發(fā)送可以不考慮具體的接收者,對象可以響應消息,也可以不理會15消息的幾個特性同一對象可以接收不同形式的消息,產生不同的響公有消息和私有消息

私有消息:由對象自己向本身發(fā)送的消息,這些消息不對外開放,外界不必了解它

公有消息:由外界直接向對象發(fā)送的消息

16公有消息和私有消息私有消息:由對象自己向本身發(fā)送的消息,這在程序設計語言中的消息在具體的程序中,消息的表現形式為對象在其操作過程中對另一個對象的服務程序的調用,也就是函數(或過程)調用。例:給電話對象發(fā)送一個消息 char*ifdial; ifdial=myPhone.dial(“82904456”);3.不是所有的函數調用都是消息

17在程序設計語言中的消息在具體的程序中,消息的表現形式為對象在9.2基本概念---------類1.類是人類抽象思維的產物。2.對一組具有相同數據和相同操作的對象的描述。3.類是對一組對象的抽象概括,而每個對象都是某一個類的一個具體的實例。

對象本身不包括實現操作的代碼,這些代碼在類中定義189.2基本概念---------類1.類是人類抽象思維的9.2基本概念---------類1.類是用唯一的類名來標識的,類的定義包括數據和操作兩部分。2.類中的數據和操作由于訪問權限的不同,又分為公有的、私有的和受保護的。3.類與對象的關系

199.2基本概念---------類1.類是用唯一的類名來9.2基本概念---------實例1.由某個特定類所描述的一個對象

2.同一個類的不同實例之間有以下特點:相同的操作集合相同的屬性集合不同的對象名

對象和類的實例是同義詞

209.2基本概念---------實例1.由某個特定類所描9.2基本概念---------方法對象所能執(zhí)行的操作

在C++中稱為成員函數

類中定義的函數,描述對象執(zhí)行操作的算法,即響應消息的方法

219.2基本概念---------方法對象所能執(zhí)行的操作9.3面向對象的程序設計方法面向對象程序設計是軟件系統(tǒng)設計與實現的新方法

增加軟件的可擴充性和可重用性

改善并提高程序員的生產能力

控制維護軟件的復雜性和軟件維護的開銷

229.3面向對象的程序設計方法面向對象程序設計是軟件系統(tǒng)設9.3.1程序設計范型

范型:指一種通用的一般化的關于現實世界的模型。它體現了一類語言的主要特點,這些特點能用來支持應用域所希望的設計風格。

面向對象程序設計范型:從程序這一方面將,它是一個類的集合和各類之間的繼承關系聯(lián)系起來的結構,再加上一個主程序,在主程序中定義各對象并規(guī)定他們之間傳遞消息的規(guī)律。從程序執(zhí)行這一方面講,他歸結為各對象和他們之間以消息傳遞的方式進行著的通訊。OOP的主要特征:各對象之間的消息傳遞和各類之間的繼承。

239.3.1程序設計范型范型:指一種通用的一般化的關于現實9.3.2結構化程序設計 設計思想:自頂向下、逐步求精。類似我們一般的思維方式。

主模塊子模塊1子模塊2子模塊3子模塊3-m子模塊n子模塊3-1子模塊3-2子模塊3-3249.3.2結構化程序設計 設計思想:自頂向下、逐步求精。類結構化程序設計的優(yōu)缺點優(yōu)點:自頂向下,逐步求精

模塊化

復用缺點

面向功能,易于變化:功能變化頻繁,用戶需求不斷改變

把數據和過程分離為相互獨立的實體

復雜系統(tǒng)的行為難以用頂層功能描述

本質上不利于復用

25結構化程序設計的優(yōu)缺點優(yōu)點:25一般的面向結構的程序設計框架main(){………}fun1(){………}fun2(){……}func3(){……}26main()fun2()269.3.4面向對象程序設計

吸取了結構化程序設計的一切優(yōu)點

考慮了現實世界與面向對象解空間的映射關系

形成一個新的數據類型——“類”類型

目前的面向對象程序設計語言都提供了大量的類

例如:鏈表是一種常用的數據類型,利用它可以實現數據的存儲。我們可以把鏈表這種存儲結構以及對鏈表的插入和刪除等操作封裝成一個類,這樣使用鏈表時,可以先構造出一個鏈表對象,對它的操作,就轉化為調用其方法實現。279.3.4面向對象程序設計吸取了結構化程序設計的一切優(yōu)點面向對象程序設計的目標和優(yōu)點目標: 將現實世界的問題取解盡可能簡化

優(yōu)點

自然、直觀:考慮了現實世界與面向對象解空間的映射關系

將數據和操作放在了一起,作為一個相互依存、不可分割的整體來處理,采用數據抽象和信息隱藏技術

將對象以及對對象的操作抽象成一種新的數據類型---類

為繼承和復用提供了有效的手段

使用多態(tài)性增強了操作的透明性、可理解性和可維護性

28面向對象程序設計的目標和優(yōu)點目標:28肩頭箭頭表示消息

整個應用程序對象1對象2對象3對象4對象5一般的面向對象的程序設計框架29對象1對象2對象3對象4對象5一般的面向對象的程序設計框架29.4OOPL的三個重要特性

封裝性繼承性多態(tài)性

309.4OOPL的三個重要特性封裝性309.4.1封裝性

封裝指的是將一個數據和與這個數據有關的操作集合放在一起,形成一個能動的實體----對象

封裝有雙重含義:包裝和信息隱藏

封裝和繼承是面向對象方法中互補的兩種技術

在程序設計中,是通過對類的數據和操作定義訪問權限(private、public、protected)319.4.1封裝性封裝指的是將一個數據和與這個數據有關的操從外界只能看到對象的外特性,即能夠接受哪些消息,具有哪些處理能力。而對象的內特性(實現處理能力的算法和保存內部)對外是不可見的。

封裝的狀態(tài)

方法2方法1方法…方法n屬性1屬性2屬性…屬性n32從外界只能看到對象的外特性,即能夠接受哪些消息,具有哪些處理9.4.2繼承性

面向對象的程序設計語言的許多強有力的功能,來自于將它的類組成一個層次結構(類等級)

一個類的上層可以有父類,下層可以有子類

這種層次結構的一個重要性質是繼承性,一個類直接繼承其父類的全部描述(數據和函數)

繼承又具有傳遞性

如果類C類B,類B類A,則類C類A

339.4.2繼承性面向對象的程序設計語言的許多強有力的功能baseclassdrivedAdrivedBdrivedBdrivedAdrivedCbaseclassdrivedAdrivedBdrivedD單繼承

重復繼承

多繼承

34baseclassdrivedAdrivedBdri應用程序中的繼承性classbaseClass{ ……}classB:publicbaseClass{ ……}classC:publicbaseClass{ ……}classD:publicA,publicB{ ……}35應用程序中的繼承性classbaseClass{359.4.3多態(tài)性

指在基類中定義的數據或操作被派生類繼承之后,可以具有不同的數據類型或表現出不同的行為,從而是的同樣的操作名稱在各個派生類中具有不同的含義。指類等級的各層中共享(公有)一個行為(函數)的名字,然而類等級中各類卻各自按各自的需要來實現這個行為。

以:shape為例,它的draw,這對不同形狀的圖形所畫的方法也不一樣

多態(tài)性的實現需要借助于面向對象的動態(tài)連接、重載的機制來支持

369.4.3多態(tài)性指在基類中定義的數據或操作被派生類繼承之多態(tài)性舉例------繪圖程序GraphLineEllipsePolygonCircleTriangleRectangleGraph*pObj;//定義一個指向圖形對象的指針…….pObj->Draw();//繪制圖形37多態(tài)性舉例------繪圖程序GraphLineEllipsc++語言中的多態(tài)性

編譯時得多態(tài)性:由重載實現的

運行時得多態(tài)性:由虛函數實現的

38c++語言中的多態(tài)性編譯時得多態(tài)性:由重載實現的389.5抽象

抽象是面向對象的基本思想是一種從一般的觀念看待事物的方法

要求程序員集中于事物的本質特性而不是具體細節(jié)和實現細節(jié)

程序員從一組對象為起點,抽取公共行為(方法)到一個類中。

399.5抽象抽象是面向對象的基本思想39抽象現實世界的物體抽象成對象?,F實世界物體之間的關系抽象成軟件系統(tǒng)中對象之間的關系。

具有共同特征的對象抽象成類。

具有共同特征的類抽象出基類和派生類。

程序員從一組對象為起點,抽取公共行為(方法)到一個類中。

40抽象現實世界的物體抽象成對象。程序員從一組對象為起點,40面向對象系統(tǒng)的一個簡單模型

對象

繼承++41面向對象系統(tǒng)的一個簡單模型對象類繼承++41*9.6面向對象的分析與設計面向對象開發(fā)方法的生命周期面向對象分析面向對象設計42*9.6面向對象的分析與設計面向對象開發(fā)方法的生命周期49.6.1面向對象開發(fā)方法的生命周期分析階段:對問題領域中存在的事物的分析,進行抽象。設計階段:結合具體的開發(fā)環(huán)境,進行詳細設計。實現階段

:進行具體的編程,以及代碼測試。

439.6.1面向對象開發(fā)方法的生命周期439.6.2面向對象分析

面向對象分析是軟件開發(fā)過程中的問題定義階段

面向對象分析的結論

面向對象分析包括兩個方面:問題分析

應用分析

面向對象分析的過程就是建立OOA模型的過程

449.6.2面向對象分析面向對象分析是軟件開發(fā)過程中的問題9.6.3面向對象設計

1.設計是對分析結果的進一步加工2.設計階段主要是要考慮與實現相關的因素。3.設計階段進行的四個方面:問題域人機交互數據管理系統(tǒng)交互

459.6.3面向對象設計1.設計是對分析結果的進一步加工9.8面向對象程序設計語言

OOPL提供了特定的語法成分如類、對象來保證和支持面向對象的程序設計,并且提供繼承、多態(tài)等機制。OOPL的出發(fā)點就是更直接描述問題領域中客觀存在的事物以及它們之間的關系

469.8面向對象程序設計語言OOPL提供了特定的語法成分如第九章面向對象程序方法

學習要求:掌握面向對象程序設計語言的發(fā)展史。了解主要的一些程序設計范型。熟練掌握面向對象程序設計語言的三大特性:封裝、繼承和多態(tài)。熟練掌握面面向對象程序設計語言的基本概念47第九章面向對象程序方法

學習要求:19.1概述

目前,軟件的生產方式也正在發(fā)生一場類似的變革

面向對象是軟件程序設計的一種新思想

面向對象的基本思想:

從現實世界中客觀存在的事物(對象)出發(fā)構造系統(tǒng),并在系統(tǒng)構造中運用人類的自然思維方式

489.1概述目前,軟件的生產方式也正在發(fā)生一場類似的變革9.1.1面向對象的由來“對象“表示現實世界中的某個具體的事物

現實世界中的事物可分為兩大部分:物質和意識

物質表達的是具體的事物

意識描述的是某一個抽象的概念

例如:“自行車”和“這輛白色的自行車”,后者是物質,使具體的客觀存在,前者是意識,它是一個抽象的概念,是對客觀存在的事物的一種概括。

499.1.1面向對象的由來“對象“表示現實世界中的某個具體的問題領域

現實世界中的事物可直接映射到面向對象系統(tǒng)的問題領域

現實世界中的物質可對應于面向對象系統(tǒng)中的“對象”

現實世界中的意識可對應面向對象系統(tǒng)中的抽象概念----類

50問題領域現實世界中的事物可直接映射到面向對象系統(tǒng)的問題領域問題領域

物質:

一輛白色的自行車意識:自行車

具體事物:一個對象------自行車的實例抽象概念:自行車類現實世界問題領域面向對象問題領域現實世界與面向對象系統(tǒng)之間的對應關系51問題領域物質:具體事物:現實世界問題領域9.1.2面向對象方法的發(fā)展面向對象方法:是利用抽象、封裝等機制,借助對象、類、繼承、消息傳遞等概念進行軟件系統(tǒng)構造的軟件開發(fā)方法。用面向對象思想構造軟件系統(tǒng)的主要內容:(P208例子)

對象對象的屬性和操作------------一個完整的對象類繼承一個系統(tǒng)就是由各個對象組成的。529.1.2面向對象方法的發(fā)展面向對象方法:是利用抽象、封裝9.1.2面向對象方法的發(fā)展史200090年代80年代70年代60年代面向對象方法的發(fā)展Algol語言中引入引入塊結構(begin…end),第一次嘗試為數據提供保護和封裝數據抽象類型概念的發(fā)展---------面向對象的基本思想:數據結構+操作=實體Simula67語言引入對象和消息機制。-------面向對象語言的鼻祖SmallTalk80商品化----純粹的OO編程語言產生了Ada語言,支持抽象數據類型的最重要的語言之一。大量的OOPL出現-----面向對象方法走向實用1986年,首屆“面向對象編程、系統(tǒng)、語言和應用國際會議”O(jiān)bject-c,C++,Eiffel,Java-------有廣泛影響的面向對象程序設計語言。面向對象軟件工程發(fā)展。539.1.2面向對象方法的發(fā)展史Algol語言中引入引入塊結面向對象相關術語面向對象(OO:ObjectOriented):面向對象分析(OOA:ObjectOrientedAnalyse)面向對象設計(OOD:ObjectOrientedDesign)面向對象程序設計(OOP:ObjectOrientedProgramming)面向對象數據庫(OODB:ObjectOrientedDataBase)

54面向對象相關術語面向對象(OO:ObjectOriente9.2基本概念---------對象抽象

對象是無處不在的

對象是數據以及可以對這些數據施加的操作結合在一起所構成的獨立實體的總稱。

559.2基本概念---------對象抽象9對象在軟件系統(tǒng)開發(fā)的各個階段的不同表現形式

分析階段: 對象是一種粗略的描述設計階段: 對象的數據和操作進一步得到細化,對象的特性得到明確的描述編程階段: 通過定義類,并將其實例化從而得到具體的對象運行階段: 對象成為內存中可標識的區(qū)域,存放數據和操作代碼56對象在軟件系統(tǒng)開發(fā)的各個階段的不同表現形式分析階段:10一個對象類的定義與對象實例化

//------------------------------------------//例9.1演示:對象類的定義與對象實例化//------------------------------------------

//定義一個電話類

classPhone{private:charowner[10];//電話主人姓名

charaddress[50];//電話所在地charphoneNumber[10];//電話號碼57一個對象類的定義與對象實例化//-------------一個對象類的定義與對象實例化public:Phone(char*owner,char*address,char*phoneNum);//構造函數

char*getPhoneNumber();//取電話號碼

char*getOwner();//取電話主人姓名

char*getAddress();//取電話所在地

char*changeOwner(char*);//電話過戶

char*dial(char*);//撥號};//對象實例化PhonemyPhone(“張三”,”河南鄭州”,”1234567”);58一個對象類的定義與對象實例化public:129.2基本概念---------消息 1.軟件系統(tǒng)中的對象之間存在依存關系: 對象通過接收消息,對外提供服務發(fā)揮能動性 對象通過發(fā)送消息,請求其他對象為它服務2.消息:消息是對象之間相互請求和相互協(xié)作的途徑,要求某個對象執(zhí)行類中所定義的某個操作的規(guī)格說明。3.消息的幾個關鍵要素:消息的發(fā)送者、消息的接收者、消息名、參數及應答。

注:消息是對象之間通信的唯一途徑599.2基本概念---------消息 1.軟件系統(tǒng)中的對老板對下屬說:“明天早上八點以前把有關飲料的市場調查報告放到我的辦公桌上”。消息的發(fā)送者消息的接收者參數1參數2參數3注意在此消息名是:給我市場調查報告60老板對下屬說:“明天早上八點以前把有關飲料的市場調查報告放消息的幾個特性

同一對象可以接收不同形式的消息,產生不同的響應

相同形式的消息可以送給不同對象,所做出的響應可截然不同

消息的發(fā)送可以不考慮具體的接收者,對象可以響應消息,也可以不理會61消息的幾個特性同一對象可以接收不同形式的消息,產生不同的響公有消息和私有消息

私有消息:由對象自己向本身發(fā)送的消息,這些消息不對外開放,外界不必了解它

公有消息:由外界直接向對象發(fā)送的消息

62公有消息和私有消息私有消息:由對象自己向本身發(fā)送的消息,這在程序設計語言中的消息在具體的程序中,消息的表現形式為對象在其操作過程中對另一個對象的服務程序的調用,也就是函數(或過程)調用。例:給電話對象發(fā)送一個消息 char*ifdial; ifdial=myPhone.dial(“82904456”);3.不是所有的函數調用都是消息

63在程序設計語言中的消息在具體的程序中,消息的表現形式為對象在9.2基本概念---------類1.類是人類抽象思維的產物。2.對一組具有相同數據和相同操作的對象的描述。3.類是對一組對象的抽象概括,而每個對象都是某一個類的一個具體的實例。

對象本身不包括實現操作的代碼,這些代碼在類中定義649.2基本概念---------類1.類是人類抽象思維的9.2基本概念---------類1.類是用唯一的類名來標識的,類的定義包括數據和操作兩部分。2.類中的數據和操作由于訪問權限的不同,又分為公有的、私有的和受保護的。3.類與對象的關系

659.2基本概念---------類1.類是用唯一的類名來9.2基本概念---------實例1.由某個特定類所描述的一個對象

2.同一個類的不同實例之間有以下特點:相同的操作集合相同的屬性集合不同的對象名

對象和類的實例是同義詞

669.2基本概念---------實例1.由某個特定類所描9.2基本概念---------方法對象所能執(zhí)行的操作

在C++中稱為成員函數

類中定義的函數,描述對象執(zhí)行操作的算法,即響應消息的方法

679.2基本概念---------方法對象所能執(zhí)行的操作9.3面向對象的程序設計方法面向對象程序設計是軟件系統(tǒng)設計與實現的新方法

增加軟件的可擴充性和可重用性

改善并提高程序員的生產能力

控制維護軟件的復雜性和軟件維護的開銷

689.3面向對象的程序設計方法面向對象程序設計是軟件系統(tǒng)設9.3.1程序設計范型

范型:指一種通用的一般化的關于現實世界的模型。它體現了一類語言的主要特點,這些特點能用來支持應用域所希望的設計風格。

面向對象程序設計范型:從程序這一方面將,它是一個類的集合和各類之間的繼承關系聯(lián)系起來的結構,再加上一個主程序,在主程序中定義各對象并規(guī)定他們之間傳遞消息的規(guī)律。從程序執(zhí)行這一方面講,他歸結為各對象和他們之間以消息傳遞的方式進行著的通訊。OOP的主要特征:各對象之間的消息傳遞和各類之間的繼承。

699.3.1程序設計范型范型:指一種通用的一般化的關于現實9.3.2結構化程序設計 設計思想:自頂向下、逐步求精。類似我們一般的思維方式。

主模塊子模塊1子模塊2子模塊3子模塊3-m子模塊n子模塊3-1子模塊3-2子模塊3-3709.3.2結構化程序設計 設計思想:自頂向下、逐步求精。類結構化程序設計的優(yōu)缺點優(yōu)點:自頂向下,逐步求精

模塊化

復用缺點

面向功能,易于變化:功能變化頻繁,用戶需求不斷改變

把數據和過程分離為相互獨立的實體

復雜系統(tǒng)的行為難以用頂層功能描述

本質上不利于復用

71結構化程序設計的優(yōu)缺點優(yōu)點:25一般的面向結構的程序設計框架main(){………}fun1(){………}fun2(){……}func3(){……}72main()fun2()269.3.4面向對象程序設計

吸取了結構化程序設計的一切優(yōu)點

考慮了現實世界與面向對象解空間的映射關系

形成一個新的數據類型——“類”類型

目前的面向對象程序設計語言都提供了大量的類

例如:鏈表是一種常用的數據類型,利用它可以實現數據的存儲。我們可以把鏈表這種存儲結構以及對鏈表的插入和刪除等操作封裝成一個類,這樣使用鏈表時,可以先構造出一個鏈表對象,對它的操作,就轉化為調用其方法實現。739.3.4面向對象程序設計吸取了結構化程序設計的一切優(yōu)點面向對象程序設計的目標和優(yōu)點目標: 將現實世界的問題取解盡可能簡化

優(yōu)點

自然、直觀:考慮了現實世界與面向對象解空間的映射關系

將數據和操作放在了一起,作為一個相互依存、不可分割的整體來處理,采用數據抽象和信息隱藏技術

將對象以及對對象的操作抽象成一種新的數據類型---類

為繼承和復用提供了有效的手段

使用多態(tài)性增強了操作的透明性、可理解性和可維護性

74面向對象程序設計的目標和優(yōu)點目標:28肩頭箭頭表示消息

整個應用程序對象1對象2對象3對象4對象5一般的面向對象的程序設計框架75對象1對象2對象3對象4對象5一般的面向對象的程序設計框架29.4OOPL的三個重要特性

封裝性繼承性多態(tài)性

769.4OOPL的三個重要特性封裝性309.4.1封裝性

封裝指的是將一個數據和與這個數據有關的操作集合放在一起,形成一個能動的實體----對象

封裝有雙重含義:包裝和信息隱藏

封裝和繼承是面向對象方法中互補的兩種技術

在程序設計中,是通過對類的數據和操作定義訪問權限(private、public、protected)779.4.1封裝性封裝指的是將一個數據和與這個數據有關的操從外界只能看到對象的外特性,即能夠接受哪些消息,具有哪些處理能力。而對象的內特性(實現處理能力的算法和保存內部)對外是不可見的。

封裝的狀態(tài)

方法2方法1方法…方法n屬性1屬性2屬性…屬性n78從外界只能看到對象的外特性,即能夠接受哪些消息,具有哪些處理9.4.2繼承性

面向對象的程序設計語言的許多強有力的功能,來自于將它的類組成一個層次結構(類等級)

一個類的上層可以有父類,下層可以有子類

這種層次結構的一個重要性質是繼承性,一個類直接繼承其父類的全部描述(數據和函數)

繼承又具有傳遞性

如果類C類B,類B類A,則類C類A

799.4.2繼承性面向對象的程序設計語言的許多強有力的功能baseclassdrivedAdrivedBdrivedBdrivedAdrivedCbaseclassdrivedAdrivedBdrivedD單繼承

重復繼承

多繼承

80baseclassdrivedAdrivedBdri應用程序中的繼承性classbaseClass{ ……}classB:publicbaseClass{ ……}classC:publicbaseClass{

溫馨提示

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

評論

0/150

提交評論