《Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》課件:第1章 面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁(yè)
《Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》課件:第1章 面向?qū)ο蟪绦蛟O(shè)計(jì)_第2頁(yè)
《Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》課件:第1章 面向?qū)ο蟪绦蛟O(shè)計(jì)_第3頁(yè)
《Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》課件:第1章 面向?qū)ο蟪绦蛟O(shè)計(jì)_第4頁(yè)
《Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第3版)》課件:第1章 面向?qū)ο蟪绦蛟O(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第1 1章章 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)2教學(xué)目標(biāo)教學(xué)目標(biāo)n比較面向?qū)ο笈c面向過(guò)程的程序設(shè)計(jì)n類(lèi)與對(duì)象n封裝與信息隱藏n繼承n多態(tài)性n面向?qū)ο蟮慕:蚒ML 31.11.1比較面向?qū)ο笈c面向過(guò)程程序設(shè)計(jì)比較面向?qū)ο笈c面向過(guò)程程序設(shè)計(jì)n面向過(guò)程程序設(shè)計(jì)n程序由多個(gè)模塊模塊構(gòu)成 n程序組成單位:過(guò)程或函數(shù)n結(jié)構(gòu)化程序設(shè)計(jì):n自頂向下、逐步求精的功能分解法,n一個(gè)要解決的問(wèn)題被分解成若干個(gè)子問(wèn)題,每個(gè)子問(wèn)題又被劃分成若干個(gè)子子問(wèn)題。這種自頂向下的功能分解一直持續(xù)下去,直到子問(wèn)題足夠簡(jiǎn)單,可以在相應(yīng)的子過(guò)程中解決。 n存在問(wèn)題:把數(shù)據(jù)和處理數(shù)據(jù)的過(guò)程分離n可復(fù)用性差 、開(kāi)發(fā)和維護(hù)都很困難。4面

2、向過(guò)程程序設(shè)計(jì)面向過(guò)程程序設(shè)計(jì)int max(int num1,int num2) if (num1num2) return num1; else return num2;圖圖1-11-1:自頂向下的功能分解與程序結(jié)構(gòu):自頂向下的功能分解與程序結(jié)構(gòu)5面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)n面向?qū)ο笃鋵?shí)是現(xiàn)實(shí)世界模型的自然延伸。n現(xiàn)實(shí)世界是由一個(gè)一個(gè)對(duì)象組成;n對(duì)象之間通過(guò)消息(請(qǐng)求和服務(wù))相互協(xié)作,完成系統(tǒng)的功能.61.2 1.2 類(lèi)與對(duì)象類(lèi)與對(duì)象n面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì): :n將客觀事物(或?qū)嶓w)看作具有屬性和行為(或稱(chēng)服務(wù))的對(duì)象(object),通過(guò)抽象抽象找出同一類(lèi)對(duì)象的共同屬性(

3、靜態(tài)特征)和行為(動(dòng)態(tài)特征),而形成類(lèi)類(lèi)(class)的概念。n程序的執(zhí)行,表現(xiàn)為一組對(duì)象之間的交互通信。對(duì)象之間通過(guò)公共接口進(jìn)行通信,從而完成系統(tǒng)功能。n類(lèi)是相同對(duì)象的集合的描述類(lèi)是相同對(duì)象的集合的描述。 例如,類(lèi)Human就是現(xiàn)實(shí)世界中人(對(duì)象)的集合,我、你、他都是Human的對(duì)象。 分析類(lèi)Human的所有對(duì)象人,得到對(duì)象的共同的數(shù)據(jù)屬性和行為,如下所示: 數(shù)據(jù)屬性:編號(hào)、姓名、年齡, 行為:吃飯、走路、跳舞, 抽象是對(duì)具體對(duì)象進(jìn)行概括,抽象出這一類(lèi)對(duì)象的公共性質(zhì)并加以描述的過(guò)程。n先注意問(wèn)題的本質(zhì)及描述,其次是實(shí)現(xiàn)過(guò)程或細(xì)節(jié)。71.2 1.2 類(lèi)與對(duì)象類(lèi)與對(duì)象( (續(xù)續(xù)) )定義定義H

4、umanHuman類(lèi)類(lèi):class Human int no; String name; int age; void eat() Human被稱(chēng)作類(lèi)名。no,name,age被稱(chēng)作域域(fields)或變量或變量,eat()被稱(chēng)作方法方法(methods),它們都是類(lèi)的成員。 81.2 1.2 類(lèi)與對(duì)象類(lèi)與對(duì)象( (續(xù)續(xù)) )n在面向?qū)ο蟮木幊陶Z(yǔ)言中,n類(lèi)是一個(gè)數(shù)據(jù)類(lèi)型n對(duì)象是類(lèi)的實(shí)例對(duì)象是類(lèi)的實(shí)例(instance)。n引用變量:具有類(lèi)類(lèi)型的變量被稱(chēng)作對(duì)象引用對(duì)象引用(object reference)。例如,Human p1=new Human(1,“張三”,20,);p1被稱(chēng)作對(duì)象引用變

5、量,new Human(1,”張三“,20,) 被稱(chēng)作Human的對(duì)象。9對(duì)象對(duì)象n對(duì)象對(duì)象: :是用來(lái)描述是用來(lái)描述現(xiàn)實(shí)世界中實(shí)際存在的事物現(xiàn)實(shí)世界中實(shí)際存在的事物的實(shí)的實(shí)體體,它是用來(lái)構(gòu)成系統(tǒng)的一個(gè)單位。n對(duì)象由一組屬性和一組行為對(duì)象由一組屬性和一組行為( (操作或服務(wù))構(gòu)成構(gòu)成。n對(duì)象具有固定的對(duì)外接口對(duì)外接口.n一組屬性和操作的集合.n對(duì)象之間通過(guò)公共接口進(jìn)行通信.n對(duì)象的狀態(tài)對(duì)象的狀態(tài):n對(duì)象的屬性值對(duì)象的屬性值表示了它所處于的狀態(tài);n對(duì)象的操作對(duì)象的操作是用來(lái)改變對(duì)象狀態(tài)。101.3 1.3 封裝與信息隱藏封裝與信息隱藏n封裝封裝(Encapsulation)是面向?qū)ο蠓椒ǖ闹匾?/p>

6、則。n就是把對(duì)象的屬性和操作(或服務(wù))結(jié)合為一個(gè)獨(dú)立的整體(系統(tǒng)單位),并盡可能隱藏對(duì)象的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。n封裝有兩個(gè)含義:n其一,把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位類(lèi)。n其二,“信息隱蔽”,盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外界形成一個(gè)邊界,只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。111.3 1.3 封裝與信息隱藏封裝與信息隱藏( (續(xù)續(xù)) )nJavaJava語(yǔ)言中,定義類(lèi)時(shí)通過(guò)大括號(hào)語(yǔ)言中,定義類(lèi)時(shí)通過(guò)大括號(hào) 封裝了類(lèi)封裝了類(lèi)的成員:的成員:n域域(fields)(fields)和方法和方法(methods)(methods),n使用private和public等關(guān)

7、鍵字來(lái)控制對(duì)類(lèi)的成員的訪(fǎng)問(wèn),其中private修飾的成員是隱藏的,而public修飾的成員則定義了類(lèi)對(duì)外的公共接口。n類(lèi)作為一個(gè)抽象的數(shù)據(jù)類(lèi)型類(lèi)作為一個(gè)抽象的數(shù)據(jù)類(lèi)型n允許用戶(hù)從底層實(shí)現(xiàn)細(xì)節(jié)中抽象出來(lái),提供給用戶(hù)的是在公共接口上的上層操作。這是抽象性抽象性的含義。121.4 繼承繼承InheritanceInheritancen繼承繼承: :在已有類(lèi)(父類(lèi)或超類(lèi))的基礎(chǔ)上派在已有類(lèi)(父類(lèi)或超類(lèi))的基礎(chǔ)上派生出新的類(lèi)(子類(lèi)),新的類(lèi)能夠吸收已生出新的類(lèi)(子類(lèi)),新的類(lèi)能夠吸收已有類(lèi)的屬性和行為,并擴(kuò)展新的能力有類(lèi)的屬性和行為,并擴(kuò)展新的能力。n繼承機(jī)制中,往往從一組類(lèi)中抽象出公共屬性放在父類(lèi)。n

8、繼承支持著軟件代碼的復(fù)用,是提高軟件開(kāi)發(fā)效率的重要因素之一。 13繼承的例子繼承的例子 例如,給定類(lèi)Car、Motocycle和Truck,我們把它們的公共屬性放在一個(gè)稱(chēng)為Vehicle的公共父類(lèi)中。VehicalCarMotocycleTruck14繼承的例子繼承的例子蘋(píng)果蘋(píng)果梨梨西瓜西瓜水果水果15繼承的例子繼承的例子CircleCircleRectangleRectangleShape161.4 繼承繼承(續(xù)續(xù)) Java中繼承的一個(gè)例子:給定一個(gè)Window類(lèi),通過(guò)繼承擴(kuò)展它而得到一個(gè)子類(lèi)MenuWin。class Win / Win的成員定義class MenuWin extends

9、 Win /MenuWin新增加成員的定義171.4 繼承繼承(續(xù)續(xù))n繼承分為繼承分為: :n單繼承單繼承是指一個(gè)子類(lèi)最多只能有一個(gè)父類(lèi)。n多繼承多繼承是一個(gè)子類(lèi)可有二個(gè)以上的父類(lèi)。n由于多繼承會(huì)帶來(lái)二義性,在實(shí)際應(yīng)用中應(yīng)盡量使用單繼承。Java語(yǔ)言中的類(lèi)只支持單繼承,而接口支持多繼承。 如何設(shè)計(jì)繼承并完成繼承層次是面向?qū)ο笤O(shè)計(jì)和編程的核心問(wèn)題。繼承是多態(tài)性的前提條件。18objectWinDialogWin單繼承,in javaClass 1Class 4Class 2Class 3多繼承多繼承,in C+單繼承與多繼承例子單繼承與多繼承例子191.5 多態(tài)性多態(tài)性n多態(tài)性多態(tài)性(Poly

10、morphismPolymorphism):n指在超類(lèi)中定義的屬性或行為,被子類(lèi)繼承之后,可以具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為。n這使得同一個(gè)屬性或行為在超類(lèi)及其各個(gè)子類(lèi)中具有不同的語(yǔ)義。20本節(jié)小結(jié)本節(jié)小結(jié)n面向?qū)ο蠓椒ǖ娘@著特性n封裝性、抽象性、繼承性和多態(tài)性n將面向?qū)ο笤O(shè)計(jì)方法應(yīng)用于程序的開(kāi)發(fā)工具和開(kāi)發(fā)過(guò)程中,不僅可以加快開(kāi)發(fā)的速度,還可極大地增強(qiáng)程序的可維護(hù)性和可擴(kuò)展性,提高代碼重用率。211.6 面向?qū)ο蟮慕:兔嫦驅(qū)ο蟮慕:蚒MLn統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)是一種流行的建模語(yǔ)言。nUML是一種圖形化語(yǔ)言,允許系統(tǒng)構(gòu)造人員(即軟件

11、設(shè)計(jì)師、系統(tǒng)工程師、程序員等)用一種通用表示法描述系統(tǒng)的需求以及面向?qū)ο蟮姆治龊驮O(shè)計(jì)結(jié)果。221.6 面向?qū)ο蟮慕:兔嫦驅(qū)ο蟮慕:蚒ML(續(xù)續(xù))n作為一個(gè)建模語(yǔ)言, UML由一個(gè)用于表達(dá)模型的詞匯表和一個(gè)定義怎樣組合詞匯的語(yǔ)法規(guī)則構(gòu)成,即: UML = UML詞匯表 + UML建模的語(yǔ)法規(guī)則 UML詞匯表 = UML 事物+ 關(guān)系+ 模型圖。nUML UML 事物(事物(ThingThing):就是被模擬的實(shí)體或?qū)ο?。事物可能是包、?lèi)、接口等等。n事物之間的語(yǔ)義上的聯(lián)系事物之間的語(yǔ)義上的聯(lián)系:用關(guān)系表示,UML中共有4種關(guān)系,它們是:依賴(lài)關(guān)系、關(guān)聯(lián)關(guān)系、泛化關(guān)系和實(shí)現(xiàn)關(guān)系。n從軟件的體系結(jié)構(gòu)出發(fā),UMLUML把軟件模型分成了四個(gè)視圖:把軟件模型分成了四個(gè)視圖:用例視圖、邏輯視圖、實(shí)現(xiàn)視圖和分布視圖。用例視圖、邏輯視圖、實(shí)現(xiàn)視圖和分布視圖。 在本書(shū)的有關(guān)章節(jié)中,案例分析和設(shè)計(jì)的結(jié)果用UML圖形化表示,使讀者對(duì)UML有一個(gè)感性化認(rèn)識(shí)。 23小結(jié)小結(jié)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論