面向?qū)ο蠼<夹g(shù)課件_第1頁
面向?qū)ο蠼<夹g(shù)課件_第2頁
面向?qū)ο蠼<夹g(shù)課件_第3頁
面向?qū)ο蠼<夹g(shù)課件_第4頁
面向?qū)ο蠼<夹g(shù)課件_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蠼<夹g(shù)

信息工程與自動化學(xué)院

計算機系/計算機重點郊室

教師:陳星

授課日期:2011年3月7

第三課類繼承(一)

★紅色部分屬于力綱要求

o面向?qū)ο蠼<夹g(shù)

?什包I.”?

=處/于?大QI口」口3/「T^rra干if,iw也LX

的關(guān)系’

。不是對象之間的關(guān)系

。與人的分類概念較為接近

圖2-19一個層次結(jié)構(gòu)

面向?qū)ο蠼<夹g(shù)

.關(guān)于物14術(shù)?

?縱承:火車綣承了陸上交通「具的特性.

?一般化/具體化:火車比陸上交通工具更具體,陸上交通工具比火車更一般化e

?父類/子類:岫卜交通I具是火車的父類,火車是地上交通L具的子類.

?超類/子類,陸上交通工具是火車的超類,火軍是觸上交通工具的子類。

?基類/派生類:陸上交通工具是基類,火車是派生類,

本書不使用基類和派生類.

o面向?qū)ο蠼<夹g(shù)

面向?qū)ο蠼<夹g(shù)

1^1^q.

—火

=:ni/八1,八:j為i<_iy目jIrm

\

對象a所具有的屬性

'和操作對象b自動都Jaib-"工

.有。師

心-------------JB

°。

o面向?qū)ο蠼<夹g(shù)

o面向?qū)ο蠼<夹g(shù)

O面向?qū)ο蠼<夹g(shù)

IITUUkN口7「回目」,|比不

商品銷售界面

搜索區(qū)

分類列表

大圖標(biāo)展小區(qū)/商品細節(jié)區(qū)

面向?qū)ο蠼<夹g(shù)

?■子

檢索面板

o面向?qū)ο蠼<夹g(shù)

O

我的檢索利用類繼承,把我的商品

面板自己的程序替換細節(jié)面板

進去,讓它們一

起工作。.

o面向?qū)ο蠼<夹g(shù)

o面向?qū)ο蠼<夹g(shù)

實際系統(tǒng)

繼承N以指定類從父類中養(yǎng)取些特件,再添加它向J的和待特杵一技濟會擢述對叁的

夠個系列。繼承可以把類蛆合到越來越通用的概念中,最后就會推導(dǎo)出我們生活的世界.

從編程的觀點來看,需要繼承是因為:

?它支持更豐富、更強大的建模?這有利F開發(fā)小組和其他想電用代碼的開發(fā)人員a

?它可以在一個類中定義信息和行為.在相關(guān)的子類中共享這些定義Q這樣要編寫的代

碼就比較少.

?繼承昆伊自然的,它盤面向N*的主爵動機之〕

f類繼承超類的所有字段、消息和方法(以處斷言L例如,如果要給陸上交通工具建模,

o面向?qū)ο蠼<夹g(shù)

o面向?qū)ο蠼<夹g(shù)

?卜日八JCH、LMLyjD、IIU

。類和屬性電,

milesPerGallon

o面向?qū)ο蠼<夹g(shù)

=f一zjyi口IVIVDIIIJUF/?、I<Ax^v^ai、

Bicycle、Truck的語義?

。減少“黑線”

Car------3milesPerGallon

通過綠線和黑線的組合Car、

Bicycle、Truck還是能連接

至!JtopSpeed

o面向?qū)ο蠼<夹g(shù)

Car

mllesPerGallon:float

getMllesPerGallon():tloat

setMllesPerGallon(:float)

LandVehlcleBicycle

topSpeed:floatnumberOfGearsdnt

getTopSpeGd(}:floatgetNumberOfG9ars():float

setlbpSpeed(:tloat)setNumberOfGears(:lnt)

UML中,類型Truck

放在冒號后面。

axleWelghtifloat

getAxleWelghtf):float

setAxleWeight(:tloat)

o面向?qū)ο蠼<夹g(shù)

@面向?qū)ο蠼<夹g(shù)

zjyi

一組對象<Collection

ArrayList

O面向?qū)ο蠼<夹g(shù)

入的次序。

a對象世界加入的次序

o面向?qū)ο蠼<夹g(shù)

=匕7廠

一組對象<Collection

o面向?qū)ο蠼<夹g(shù)

?匕日々目1-zjyik;

o面向?qū)ο蠼<夹g(shù)

只要利用黑線與綠線組合;綠線與綠線組合,

對象與類和屬性的對應(yīng)關(guān)系沒有改變。

。減少了概念的聯(lián)系,降低了耦合.

面向?qū)ο蠼<夹g(shù)

面向?qū)ο蠼<夹g(shù)

contains

ArrayListLinkedList

面向?qū)ο蠼<夹g(shù)

=/口/心/ji/AdciIICIILr\i;

@面向?qū)ο蠼<夹g(shù)

z

ru/n二口1/八?工;

面向?qū)ο蠼<夹g(shù)

???2

=/口/心7Jl/AVk-FIILOII13;

numberOfElements

面向?qū)ο蠼<夹g(shù)

???2

y/|力廠口二ni/八?工;

numberOfElements

@面向?qū)ο蠼<夹g(shù)

contains!rObject):boolean?

返回false.

elementAt(:int):Object在W

numberOfElementM);int返

ArrayListLinkedList

o面向?qū)ο蠼<夹g(shù)

o面向?qū)ο蠼<夹g(shù)

@面向?qū)ο蠼<夹g(shù)

LinkedList

面向?qū)ο蠼<夹g(shù)

=I又廠口;I山辦日向口jf十口匕。

。你會給很多水果削掉果皮,自然而然產(chǎn)生“削

果皮”的概念,產(chǎn)生,:

。抽象類Fruit

。抽象方法peel

。假如給一個Fruit的對象發(fā)送peel消息,將會怎

樣?\F

Q假如給List對象發(fā)送一個contains消息卜將會怎

樣?1

o面向?qū)ο蠼<夹g(shù)

.MM

』」山為IK:uJ/、依J、

面向?qū)ο蠼<夹g(shù)

。所有射向“蘋果”類的對象都射向“水果”類

面向?qū)ο蠼<夹g(shù)

。增加“蘋果”與“水果”的繼承關(guān)系

蘋果T水果

面向?qū)ο蠼<夹g(shù)

注_L^二八UJ;

沒有直接用“黑線”投

到“水果”的對象。

o面向?qū)ο蠼<夹g(shù)

.MH

o面向?qū)ο蠼<夹g(shù)

.MH

o面向?qū)ο蠼<夹g(shù)

.MH

山為0UL

人類思維的習(xí)慣

o面向?qū)ο蠼<夹g(shù)

.MM

03由然大中J大匕口/「為口L白及MRTlkTN;tT」界

體細節(jié)?

。可能含有無法被程序?qū)崿F(xiàn)的方法

0稱為抽象方法,下.r

。請思考:抽象方法既然無法執(zhí)行,有什么用處

呢?、

面向?qū)ο蠼<夹g(shù)

IIJ4口力、/114I。,、

?方法包括1

。方法名

。方法參數(shù)表

。方法體(代碼)

?抽象方法

。沒有方法體

。無法執(zhí)行

立抽象類無法實例化

o面向?qū)ο蠼<夹g(shù)

?^IVIL-?i十丁補/J、」國力

。如果不能使用斜體字,在類名左邊或上方注明

{abstract}

抽象類有如下優(yōu)點:

?它們允許更豐富、更靈活地建模。例如,List類有三個消息contains、elementAt和

numberOfElements,但我們不能為它們提供具體的方法。

?它們可以共享更多的代碼,因為可以編寫具體的方法來使用抽象的方法,例如,List

的contains方法調(diào)用抽象方法&

?有方法體(代碼)的方法"-

?對抽象方法的調(diào)用,被自動代替為對具體

方法的調(diào)用。

?請思考內(nèi)在的好處。

面向?qū)ο蠼<夹g(shù)

publicabstractclassList

(

publicabstractbooleancontains(Objecto);

)

③錯誤的語句:newList();v

③只有具體的類能夠被實例化,如果調(diào)配抽象方

達,最終一定會調(diào)用一個具體類的“事定義方

法”。1

o面向?qū)ο蠼<夹g(shù)

■mum

o面向?qū)ο蠼<夹g(shù)

elementAt

b

I

ArrayList

o面向?qū)ο蠼<夹g(shù)

■mum

o面向?qū)ο蠼<夹g(shù)

■mum

?面向?qū)ο蠼<夹g(shù)

面向?qū)ο罂梢灾匦露x繼承來的元素。最簡單的形式是,重定義允許子類修改繼承方法

溫馨提示

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

評論

0/150

提交評論