第3章 抽象、封裝與類.ppt_第1頁
第3章 抽象、封裝與類.ppt_第2頁
第3章 抽象、封裝與類.ppt_第3頁
第3章 抽象、封裝與類.ppt_第4頁
第3章 抽象、封裝與類.ppt_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章抽象、封裝和類。面向?qū)ο蟮乃枷?。面向?qū)ο蟮膬?yōu)點3。抽象和封裝。Java類5。定義和使用類6。領域7。方法,1 .面向?qū)ο蟮乃枷耄嫦驒C器的程序:為特定硬件系統(tǒng)專門設計的最早的計算機程序。其運行速度和效率較高,但可讀性和可移植性較差。隨著軟件開發(fā)規(guī)模的擴大,面向機器的程序逐漸被以c語言為代表的面向過程的程序所取代。數(shù)據(jù)結(jié)構(gòu)和算法是面向過程問題解決的核心組成部分。面向過程的問題解決能夠準確、完整地描述具體的解決過程,但不足以清晰地表達包含多個相關(guān)過程的復雜系統(tǒng)。面向?qū)ο蟪绦颍耗M和描述系統(tǒng)本身,包括系統(tǒng)的組成、系統(tǒng)的各種可能狀態(tài)、系統(tǒng)中可能發(fā)生的各種進程以及進程引起的系統(tǒng)狀態(tài)切換。關(guān)注所有

2、這些過程作為一個整體,而不僅僅是孤立的單個過程。面向?qū)ο缶幊陶Z言的出發(fā)點是直接描述問題域中客觀存在的對象及其關(guān)系。1.面向?qū)ο蟮乃枷牒兔嫦驅(qū)ο蟮木幊陶Z言直接模擬現(xiàn)實世界如下:客觀世界是由一些具體的事物組成的,每個事物都有自己的一套靜態(tài)特征(屬性)和動態(tài)特征(行為)。例如,汽車具有靜態(tài)特性,如顏色、型號、馬力和制造商,以及動態(tài)特性,如駕駛、轉(zhuǎn)彎和停車。面向?qū)ο缶幊陶Z言將客觀世界的這一事實映射到計算機語言,將客觀世界中的事物抽象成對象,用一組數(shù)據(jù)描述對象的靜態(tài)特征(屬性,稱為數(shù)據(jù)成員),用一組方法描述對象的動態(tài)特征(行為)。面向?qū)ο蟮乃季S,客觀世界中的事物既有特殊性又有共同性。在理解客觀世界的過程

3、中,人類通常根據(jù)事物的共性將相似的事物分成一定的類別。例如,很容易理解所有汽車和某輛汽車之間的關(guān)系。面向?qū)ο笳Z言使用一個類來表示一組具有相同屬性和方法的對象。類汽車整數(shù)顏色_數(shù)字;整數(shù)門號;內(nèi)部速度;無效制動()無效加速();void DoWn(),aCar color_number=紅色;門_編號=2;int速度=200;無效制動()無效加速();void DoWn(),bCar color_number=藍色;門_編號=2;int速度=300;無效制動()無效加速();空空的Down(),1,1。面向?qū)ο蟮乃季S,在同一種事物中,一切事物既有相同的共性,又有其自身的特殊性。面向?qū)ο笳Z言用父類

4、和子類描述了這一事實:它描述了父類中事物的共性,并通過父類派生子類的機制反映了事物的個性。當考慮同類事物中一切事物的特殊性時,子類可以從這個父類中派生出來,而子類可以繼承父類的共性而有其自身的特殊性。1。面向?qū)ο笏枷?,乘客?shù)量,行李箱容量,裝載容量,類卡車擴展車內(nèi)裝載;1.面向?qū)ο笏枷胝J為,客觀世界中的事物是一個獨立的整體,其內(nèi)部的許多實現(xiàn)細節(jié)不受外界的關(guān)注。例如,對于一個只負責駕駛的司機來說,他可能不知道他駕駛的車內(nèi)使用了多少螺絲或幾米長的電線,以及它們是如何組裝的。面向?qū)ο笳Z言通過封裝機制將對象的屬性和方法結(jié)合成一個整體,并屏蔽了對象的內(nèi)部細節(jié)。類汽車整數(shù)顏色_數(shù)字;整數(shù)門號;內(nèi)部速度;無

5、效制動()無效加速();void DeSign(),class Car int color _ number整數(shù)門號;內(nèi)部速度;無效制動()無效加速();void DeSign()this . speed-;公共類用戶汽車公共靜態(tài)無效主(字符串參數(shù))汽車對象=新車();obj . DownLoad();1.面向?qū)ο蟮乃季S,客觀世界中的一個事物可能與其他事物有某種行為聯(lián)系。例如,當一輛行駛中的汽車在看到紅色信號燈時停止制動時,面向?qū)ο笳Z言通過消息連接指示對象之間的動態(tài)連接。類汽車整數(shù)顏色_數(shù)字;整數(shù)門號;內(nèi)部速度;無效制動()無效加速();void DoWn(),Light類布爾值isRed=t

6、rue布爾值為綠色;布爾Is黃色;無效變更燈(),測試公共靜態(tài)無效主()汽車ACar=;light LooT=;LooT . ChangeLight();if(LooT . IsRed)AcaR . brake();1。面向?qū)ο蟮乃季S,客觀世界中更復雜的東西往往是由其他更簡單的東西組成的,例如,自行車是由車架、車輪、把手等組成的。OOPL還提供了描述這種組合關(guān)系的功能。綜上所述,面向?qū)ο缶幊陶Z言使程序能夠直接反映客觀世界的本來面目,并使軟件開發(fā)人員能夠運用人類所采用的一般思維方法來開發(fā)軟件。1.面向?qū)ο蟮乃枷?。面向?qū)ο蟮膬?yōu)點3。抽象和封裝。Java類5。在Java 6中定義和使用類。領域7。

7、方法2 .面向?qū)ο蟮膬?yōu)勢。對象的數(shù)據(jù)封裝特性解決了傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)和操作分離帶來的各種問題,提高了程序的可重用性和可維護性。對象的數(shù)據(jù)封裝屬性將對象的私有數(shù)據(jù)與公共數(shù)據(jù)分開,并保護私有數(shù)據(jù)的安全性。減少了模塊間可能的干擾,降低了程序的復雜度。對象是一個獨立的整體,它通過自己定義的操作(包括修改自己的狀態(tài)和向外部世界發(fā)布消息)來管理自己。當對象甲想影響對象乙時,對象甲需要調(diào)用自己的方法,而不是直接改變對象乙.這使得修改對象的所有操作都以對象本身的一部分的形式存在于整個對象中,從而保持了對象的完整性,有利于對象的重用、擴展和維護。2。面向?qū)ο蟮膬?yōu)點是,對象通過一定的接口和相應的消息機制與外界相連

8、。這個特性和對象的封裝實現(xiàn)了信息的隱藏(隱藏私有數(shù)據(jù)和操作細節(jié)等)。)。當使用一個對象時,您只需要知道它的接口所提供的函數(shù)操作,而不需要知道對象內(nèi)部的數(shù)據(jù)描述和具體的函數(shù)實現(xiàn)。繼承是面向?qū)ο蠓椒ǔ庋b之外的另一個重要特性,它可以方便地實現(xiàn)應用程序的擴展和現(xiàn)有代碼的重用,提高開發(fā)效率??偠灾?,面向?qū)ο缶幊淌菍?shù)據(jù)和數(shù)據(jù)操作封裝成一個不可分割的整體,并將具有相同特征的對象抽象成一個新的數(shù)據(jù)類型類。通過對象之間的消息傳遞使整個系統(tǒng)工作。對象類的繼承提供了一種重用代碼的有效方法。1.面向?qū)ο蟮乃枷?。面向?qū)ο蟮膬?yōu)點3。抽象和封裝。Java類5。在Java 6中定義和使用類。領域7。方法3 .抽象和封

9、裝Java是一種面向?qū)ο蟮恼Z言,類是面向?qū)ο蠹夹g(shù)的關(guān)鍵。在Java中,除了上面提到的基本數(shù)據(jù)類型,還有一個由用戶定義和實現(xiàn)的復合數(shù)據(jù)類型類。在Java中,一切都是對象,一切都是對象。不同的物體通常只有一些共性。例如,汽車、火車和飛機都有速度屬性和行為,如啟動、加速、減速和停止。抽象這些共性是一個類;該類封裝了這些屬性和行為,這些屬性和行為成為該類的屬性和方法。物化一個抽象類,即實例化該類,即生成該類的一個對象。例如,汽車是特定型號的汽車。抽象與封裝摘要:它是一種研究方法,即去掉研究對象中與主要觀點無關(guān)的次要部分,或暫時不考慮的部分,只提取與研究工作相關(guān)的實質(zhì)性內(nèi)容進行研究。抽象和封裝,在軟件開

10、發(fā)方法中有兩種抽象:過程抽象和數(shù)據(jù)抽象。過程抽象:整個系統(tǒng)的功能分為幾個部分,強調(diào)功能完成的過程和步驟。面向過程的軟件開發(fā)方法采用了這種抽象方法。使用過程抽象有利于控制和降低整個程序的復雜性。但是,這種方法本身具有很大的自由度,難以規(guī)范和規(guī)范,操作困難,質(zhì)量難以保證。數(shù)據(jù)抽象:將系統(tǒng)中要處理的數(shù)據(jù)與對這些數(shù)據(jù)的操作相結(jié)合,并根據(jù)功能、屬性、功能和其他因素將它們抽象成不同的抽象數(shù)據(jù)類型。每種抽象數(shù)據(jù)類型都包含數(shù)據(jù)和針對這些數(shù)據(jù)的操作,這是一種更嚴格、更合理的抽象方法。面向?qū)ο蟮能浖_發(fā)方法采用數(shù)據(jù)抽象方法來構(gòu)建程序類、對象和方法。例如,抽象和封裝處理銀行的日常業(yè)務,核心問題是所有的資本和賬戶交易

11、。根據(jù)與這個核心問題相關(guān)的操作,可以建立一個表示帳戶的抽象數(shù)據(jù)類型作為調(diào)查的焦點。如果處理銀行人力資源,系統(tǒng)的核心問題是銀行員工的信息,如崗位號、職位、任職時間、出勤、招聘、解聘、晉升、降職、休假等。而不是銀行業(yè)務(如開戶、轉(zhuǎn)賬、中間業(yè)務等。)。這時,代表雇員的抽象數(shù)據(jù)類型被建立。3。抽象和封裝,封裝:數(shù)據(jù)和基于數(shù)據(jù)的操作通過使用抽象數(shù)據(jù)類型進行封裝,數(shù)據(jù)在抽象數(shù)據(jù)類型中受到保護。系統(tǒng)的其他部分只能通過包裝在數(shù)據(jù)之外的操作與這種抽象數(shù)據(jù)類型進行交互。例如,一個工程師需要組裝一臺計算機,他組裝各種各樣的計算機設備。如果你需要一個聲卡,你不需要用原來的集成電路芯片和材料自己做,而是去電腦公司買一個

12、符合一定規(guī)格的聲卡。工程師關(guān)心的是聲卡的功能,而不是聲卡的內(nèi)部工作原理,因為聲卡是由電子制造商提供的,并且是獨立的。那是封裝。您不需要知道封裝單元內(nèi)部是如何工作的。聲卡的所有屬性都封裝在聲卡中,不會延伸到聲卡之外,所以用戶可以在不知道其工作原理的情況下使用它。抽象和封裝。在面向?qū)ο蟮恼Z言中,抽象數(shù)據(jù)類型被稱為“類”,每個類封裝相關(guān)的數(shù)據(jù)和操作。例如,在銀行的日常業(yè)務系統(tǒng)中,建立一個“賬戶”類來封裝該類中的賬戶金額和交易情況。這有兩個優(yōu)點:安全性:系統(tǒng)的其他部分不能直接獲取或更改這些數(shù)據(jù),只能通過調(diào)用類中的方法,來保證數(shù)據(jù)的安全性。例如,調(diào)用檢查余額的方法來獲取帳戶的金額,并調(diào)用存款和取款的方法

13、來更改金額??芍赜眯裕悍庋b使類成為一個功能清晰、界面單一的有機整體,可以在各種合適的環(huán)境中獨立工作,也可以直接或間接用于其他應用系統(tǒng),縮短了開發(fā)周期,降低了各種成本。例如,“銀行日常業(yè)務系統(tǒng)”中使用的“賬戶”類可以應用于業(yè)務性質(zhì)相似的保險公司的保險理賠管理系統(tǒng)或證券公司的證券交易系統(tǒng)。1.面向?qū)ο蟮乃枷?。面向?qū)ο蟮膬?yōu)點3。抽象和封裝。Java類5。在Java 6中定義和使用類。領域7。方法4 .Java類。Java編程是定義類的過程。Java中有兩種類:由系統(tǒng)定義的類,即Java類庫中的類,用戶可以直接使用。用戶定義的類是用戶為特定問題定義的類,即Java編程的過程。4.Java類,系統(tǒng)定義

14、類:即Java類庫中的類。Java類庫:類庫是Java語言的重要組成部分。它是由其他開發(fā)人員或軟件供應商編寫的一組Java類。每個類通常對應于一個特定的基本功能和任務。如果用戶在編寫自己的Java程序時需要完成某個功能,他們可以直接使用這些現(xiàn)成的類庫,而無需從頭編寫。大多數(shù)Java類庫都是由SUN公司提供的。下面簡要介紹JDK1.5的類庫。根據(jù)不同的功能,系統(tǒng)定義的類可以分為不同的集合。每個集合都是一個包,統(tǒng)稱為caJava類庫是系統(tǒng)提供的已實現(xiàn)的標準類的集合,可以幫助用戶方便快捷地開發(fā)Java程序。(1)java . lang package java . lang package是Java

15、語言的核心類庫,它包含運行Java程序所必需的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學函數(shù)、字符串處理、線程、異常處理類等。當每一個Java程序運行時,系統(tǒng)會自動引入java.lang包,所以這個包的加載是默認的。(2) java.io package java.io package是java語言的標準輸入/輸出類庫,包含用于實現(xiàn)java程序與操作系統(tǒng)、用戶界面和其他Java程序之間的數(shù)據(jù)交換的類,如基本輸入/輸出流、文件輸入/輸出流、過濾輸入/輸出流、流水線輸入/輸出流、隨機輸入/輸出流等。Java.io包用于所有需要完成與操作系統(tǒng)相關(guān)的低級I/O操作的Java程序。(3) java.util包ja

16、va.util包包含一些java語言的低級實用工具,如處理時間的Date類、處理變長數(shù)組的Vector類、實現(xiàn)堆棧和Hashtable的Stack類、HashTable類等。這樣開發(fā)人員可以更方便快捷地進行編程。4。java類,(4)Java . awt package Java . awt package是Java語言用來構(gòu)建圖形用戶界面(GUI)的類庫,它包含了很多界面元素和資源,主要在三個方面提供界面設計支持:底層的繪圖操作,如Graphics類等。圖形界面組件和布局管理,如復選框類、容器類、布局管理器界面等,以及界面用戶交互控制和事件響應,如事件類。使用java.awt包,開發(fā)人員可以輕松編寫美觀、方便、標準化的應用程序界面。(5)Java . awt . event package Java . awt . event package使程序能夠以不同的方式處理不同類型的事件,以便每個圖形界面元素本身能夠

溫馨提示

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

最新文檔

評論

0/150

提交評論