面向?qū)ο髈o程序設(shè)計基本概念_第1頁
已閱讀1頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第二章 面向?qū)ο?OO)程序設(shè)計基本概念,2,本章總體綱要,面向?qū)ο蟪绦蛟O(shè)計的基本思想對象與類封裝性繼承性接口多態(tài)性,3,實體,抽象數(shù)據(jù)類型,類,對象,4,面向?qū)ο蟪绦蛟O(shè)計是使用類和對象將現(xiàn)實世界中真實的或抽象的實體在程序中建立模型。,面向?qū)ο蟪绦蛟O(shè)計,5,面向?qū)ο蟪绦蛟O(shè)計的基本思想?,面向?qū)ο蟪绦蛟O(shè)計(OOP) 傳統(tǒng):面向過程對象例子汽車:車輪、發(fā)動機、方向盤、座椅、車門和窗狗:動物的子類將數(shù)據(jù)(屬性)和方

2、法(行為或功能)封裝到類(classes)中對象(objects): 類的實例或類本身三個基本特性:封裝性、繼承性和多態(tài)性,6,面向?qū)ο蟪绦蛟O(shè)計的基本概念,什么是對象(Object)什么是消息(Message) 什么是類(Class) 什么是繼承(Inheritance)什么是接口(Interface)什么是多態(tài),7,對象(Object)的概念,軟件對象是現(xiàn)實對象在程序中的模型?,F(xiàn)實世界對象的兩個特征:狀態(tài)(state)

3、與行為(behavior).軟件對象也具有狀態(tài)與行為:狀態(tài):以一個或多個變量保存 行為:用方法實現(xiàn)行為,8,對象(Object)的概念,定義:對象由變量與相關(guān)的方法結(jié)合起來構(gòu)成的。,9,對象實例,一個特定的對象稱為實例。,10,什么是消息,對象之間通過發(fā)送消息進行交互與通信。,11,消息的構(gòu)成,消息由三部分構(gòu)成:接收消息的對象方法名稱方法的參數(shù),12,消息示例,13,消息機制的好處,對象的行為是通過它的方法表達的,所以

4、消息傳遞支持對象之間的所有交互。相互交換消息的對象可以在不同的進程,甚至在不同的機器上。,14,什么是類(class),A class is a blueprint, or prototype, that defines the variables and the methods common to all objects of a certain kind. 一個類是一個藍圖或樣板,它定義了某一特定類的所有對象

5、都具有的變量與方法。,15,類的定義,類的定義格式如下:[類修飾詞] class 類名 [extends 父類名] [implements 接口名稱列表]{ 類體},16,類的結(jié)構(gòu),17,類示例-自行車,18,類的實例化,19,多個類組成的程序,很多Java程序需要多個類完成一項任務(wù)一個文件一般只含有一個類每個文件的長度一般不要太長最長一般不要超過2000行,20,類中的變量與方法,變量實例變量(instance

6、variable) 包含特定對象的狀態(tài)類變量(class variable) 由類的所有實例共享方法實例方法(instance method)通過實例進行訪問的方法。類方法 (class method) 通過類進行調(diào)用的方法。,21,方法定義,與C++程序不同的是: 每個方法都必須隸屬于某個類方法定義的格式: [方法修飾詞] 返回類型 方法名(方法的參數(shù)列表) { 方

7、法體 }返回類型: 返回數(shù)據(jù)的數(shù)據(jù)類型除了構(gòu)造方法,一般要求返回類型: 要么為void ,要么為某種數(shù)據(jù)類型int、byte、float或String最多只能返回一個值方法名: 任何一個合法的標(biāo)識符參數(shù)列表:用逗號(,)分隔開,22,構(gòu)造方法,構(gòu)造方法在創(chuàng)建新的實例對象時起作用構(gòu)造方法通常用來初始化實例對象,例如: 初始化成員域或設(shè)置工作環(huán)境構(gòu)造方法的特點:與類同名沒有返回值可以含有多種構(gòu)造方法(重載)但

8、必須具有不同的參數(shù)列表,23,默認(rèn)的構(gòu)造方法,如果沒有顯式地定義類的構(gòu)造方法,則系統(tǒng)會為該類定義一個默認(rèn)的構(gòu)造方法。該構(gòu)造方法不含任何參數(shù)。這個默認(rèn)的構(gòu)造方法首先調(diào)用其父類的不含任何參數(shù)的構(gòu)造方法,然后初始化新生成的實例的各個成員域變量默認(rèn)值: 基本數(shù)值類型: 0; boolean: false; 引用數(shù)據(jù)類型: null最好自己寫構(gòu)造方法一旦在類中定義了構(gòu)造方法,系統(tǒng)就不會再創(chuàng)建這個默認(rèn)的不含參數(shù)的構(gòu)造方法。,24,封 裝

9、,含義:對象的變量置于對象方法的包裹之中,被對外隱藏。優(yōu)點: 模塊化:不同對象代碼之間有一定獨立,對象可以 在系統(tǒng)中方便移動。 信息隱藏:保證修改對象信息時,不會對訪問它 的對象產(chǎn)生影響。,25,類成員的封裝性,成員(域或方法)的訪問控制方式:1) public2) private3) protected4) default(缺省方式),26,什么是繼承,27,什么是繼承,子類 A class

10、that is derived from a particular class. 從某個特定類派生出來的類。父類 A class from which a particular class is derived. 派生出某個特定類的類。,28,繼承的含義,子類繼承父類的狀態(tài)與方法。子類可以增加新的變量和方法。子類可以重寫(Override)繼承來的方法。注:繼承關(guān)系可以有多層,

11、子類要繼承它所有父類的方法與狀態(tài)。,29,繼承性的實現(xiàn),采用關(guān)鍵字extendspublic class MountainBike extends Bicycle { // … },30,多重繼承,在有些計算機語言中,允許一個類有多個直接父類。這種繼承關(guān)系稱為多重繼承Java不支持多重繼承Java 允許一個類有多個直接父接口(interface),31,Java 中的Object類,Java中的O

12、bject類是最頂層的類,所有其他的類都是它直接或間接的子類。類型是Object的變量可以指向任意的對象。Object提供了運行在JVM中的所有對象都需要的行為(方法)。,32,繼承的優(yōu)點,通過繼承可以重用父類中的代碼。程序員可以定義含有一般行為的抽象類。抽象類中的很多方法是沒有實現(xiàn)的??梢栽诔橄箢惖幕A(chǔ)上定義特定的子類,實現(xiàn)具體的細(xì)節(jié)。,33,什么是接口,Java語言中,接口是彼此不相關(guān)對象之間發(fā)生聯(lián)系的手段。 接口類似于一種對

13、某種行為達成的協(xié)議。這種協(xié)議以包含在接口中的一組常量、一些方法定義的形式提出來。對象必須實現(xiàn)接口,才能具有某種行為。 接口機制中沒有強制這些類之間建立超、子類關(guān)系。,34,接口(interface),接口(interface)就象是一種特殊的類成員方法: abstract成員域: final和static接口(interface)中所有的方法和域必須都是 public的每個接口一般定義在一個.java 文件中,

14、35,實例,例1: 通過接口定義一些常量public interface Constants{public static final int ONE = 1;public static final int TWO = 2;public static final int THREE = 3;} // End of interface: Constants例2:interface Shape{ // This

15、 method cannot have a body. public abstract void mb_draw(Graphics2D g);} // End of interface: Shape,36,注意事項,接口中成員方法的默認(rèn)方式是 public 和 abstract接口中成員域的默認(rèn)方式是public、 static和final,37,優(yōu)點,一個類可以繼承多個接口例如:,public class A exten

16、ds B implements C, D{ },38,總結(jié): 接口的使用方法,一個類實現(xiàn)接口( interface)多個接口采用逗號分隔類中必須定義接口中的所有方法這些方法必須具有相同的聲明方式,39,多態(tài)性的種類,靜態(tài)的多態(tài)性?重載動態(tài)的多態(tài)性?覆蓋,40,靜態(tài)的多態(tài)性(重載),在編譯時就能夠被識別針對的是同一個類內(nèi)的同名方法例如: public int square(int x){ return x

17、* x; }public double square(double x){ return x * x;},41,識別重載方法,識別標(biāo)志:參數(shù)的個數(shù)、類型、數(shù)據(jù)類型的排列順序返回值不能做為識別的標(biāo)志,42,動態(tài)多態(tài)性(覆蓋),在程序運行時才被識別重寫父類的方法要求相同的聲明例如:public class J_HelloApplet extends Applet{ public void paint(

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論