收藏 分享(赏)

Java 2程式设计 -CH05.ppt

上传人:gnk289057 文档编号:8436598 上传时间:2019-06-27 格式:PPT 页数:40 大小:408KB
下载 相关 举报
Java 2程式设计 -CH05.ppt_第1页
第1页 / 共40页
Java 2程式设计 -CH05.ppt_第2页
第2页 / 共40页
Java 2程式设计 -CH05.ppt_第3页
第3页 / 共40页
Java 2程式设计 -CH05.ppt_第4页
第4页 / 共40页
Java 2程式设计 -CH05.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、第5章 類別與物件,5-1 物件導向的基礎 5-2 Java的類別與物件 封裝 5-3 類別的建構子 5-4 使用物件的成員資料 5-5 在物件使用類別變數與方法,5-1 物件導向的基礎,5-1-1 物件是第二個黑盒子 5-1-2 物件導向的程式分析 5-1-3 物件導向程式語言的種類 5-1-4 物件導向程式語言 5-1-5 UML的基礎,物件導向程式設計(Object-oriented Programming,簡稱OOP)是模組化程式設計的一種重要轉變,這是一種更符合人性化的程式設計方法,因為我們本來就生活在一個物件的世界,思考模式也是導循著物件導向的模式。,5-1 物件導向的基礎,物件(

2、Object)是物件導向技術的關鍵,以程式的角度來說,物件是資料與相關程序和函數結合在一起的組合體,資料是變數,程序和函數在Java語言稱為方法,如下圖所示:,5-1-1 物件是第二個黑盒子-說明,5-1-1 物件是第二個黑盒子-封裝,物件的方法是對外的使用介面,變數和方法都包裹在一個黑盒子,實作程式碼都包裹隱藏起來,稱為封裝(Encapsulation)。 對於程式設計者來說,我們並不用考慮黑盒子內部的程式碼是如何撰寫,只需要知道這個物件提供什麼介面和如何使用它。 事實上,開車時並不需要了解車子為什會發動,換擋的變速箱擁有多少個齒輪才能正確操作,車子對我們來說只是一個黑盒子,唯一要作的是學習

3、如何開好車。同理,沒有什麼人了解電視如何能夠收到訊號,但是我們知道打開電源,更換頻道就可以看到影像。,5-1-1 物件是第二個黑盒子-特性,狀態(State):物件所有屬性(Attributes)目前的狀態值,屬性是用來儲存物件的狀態,可以簡單的只是一個布林值變數,也可能是另一個物件,例如:車子的車型、排氣量、色彩和自排或手排等屬性。 行為(Behavior):行為是物件可見部分提供的服務,可以作什麼事,例如:車子可以發動、停車、加速和換擋等。 識別字(Identity):識別字是用來識別不同的物件,每一個物件都擁有獨一無二的識別字,Java語言是使用物件參考(Reference)作為物件的識

4、別字,簡單的說,就是物件實際儲存的記憶體位址。,5-1-2 物件導向的程式分析-說明,在197080年間主要的軟體工程程式分析方法是第4章說明的由上而下分析法(Top-down Design),不過這種分析方法有一些問題,如下所示: 由上而下分析法的整個處理過程,只是找出解決問題的程序或函數,也就是各別函數的程式碼,而沒有真正的考量到程式使用的資料本身。 由上而下分析法得到的函數很難被重複使用,因為這些函數都是針對特定問題量身定製,函數需要大幅修改才能使用在其它問題上。,5-1-2 物件導向的程式分析-資訊隱藏,由上而下的分析法經常需要配合由下而上分析法(Bottom-up Design),這

5、種方法是由下而上,先尋找可以重複使用的軟體元件,然後由下而上組合起來,以解決整個問題。 這些重複使用的軟體元件是一個個模組,如同電腦硬體的隨插即用(Plug and Play),只需將模組插入軟體系統就可以馬上運作,而不用考慮模組本身的詳細內容,只需它符合系統需求,如此即可把實際處理的資料隱藏起來,稱為資訊隱藏(Information Hiding)。 物件就是包含資料和處理這些資料的函數的模組,以達到資訊隱藏的目的。,物件導向程式語言的精神是物件,不過支援物件的程式語言並非就是物件導向程式語言,它可能只是一種物件基礎程式語言,如下所示: 物件基礎程式語言(Object-based Langu

6、ages):只提供資料抽象化和物件觀念,例如:VB 6,不過新版VB.NET是物件導向程式語言。 物件導向程式語言(Object-oriented Languages):支援封裝、繼承和多形的觀念。,5-1-3 物件導向程式語言的種類,5-1-4 物件導向程式語言,封裝(Encapsulation):封裝是將資料和處理資料的程序與函數組合起來建立物件。在Java語言定義物件是使用類別(Class),內含屬性和方法,屬於一種抽象資料型態(Abstract Data Type)。 繼承(Inheritance):繼承是物件的再利用,當定義好一個類別後,其它類別可以繼承這個類別的資料和方法,並且新增

7、或取代繼承物件的資料和方法。 多形(Polymorphism):類別如果需要處理各種不同資料型態時,並不需要針對不同資料型態建立不同類別,可以直接繼承基礎類別,建立同名方法處理不同的資料型態,因為方法名稱相同,只是程式碼不同,也稱為同名異式。,5-1-5 UML的基礎-1,UML(Unified Modelling Language)中文稱為塑模語言,UML的出現是三位OO理論大師:Grady Booch、James Rumbaugh和Ivar Jacobson(通稱3 Amigo)所提倡。 UML草案版本0.8版在1995年10月提出,1995年底Ivar Jacobson也加入Ration

8、al公司後,再整合他的OOSE(Object-Oriented Software Engineering)方法論,1997年1月UML正式產生,目前UML已經是OMG(Object Management Group)組織的標準。,5-1-5 UML的基礎-2,UML統一三人表示方法的符號,並不是三位提出的方法論,換句話說,如同繪製電子元件、工程機械圖的標準符號,UML是程式語言的標準符號,以便程式分析者和程式設計者擁有溝通的語言。 在本書是使用UML的類別圖來表示Java語言的類別宣告和架構。,5-2 Java的類別與物件 封裝,5-2-1 類別與物件 5-2-2 成員資料的存取 - 資訊隱藏

9、 5-2-3 物件的使用介面 - 成員方法,5-2 Java的類別與物件 封裝,Java的類別是用來建立物件,更正確的說是沒有宣告成static的部分,才是屬於物件原型。它是一種使用者自行定義的資料型態。 Java物件使用變數儲存狀態稱為屬性(Property)或實例變數(Instance Variables,也稱為副本變數),各種行為的程序和函數,在Java稱為方法(Methods)。,5-2-1 類別與物件-說明,Java類別宣告是物件的原型宣告,對於物件原型宣告的類別可以分為2個部分,如下所示: 成員資料(Data Member):物件的資料部分,屬於基本資料型態的變數、常數或其它的物件

10、的成員變數(Member Variables)。 成員方法(Method Member):物件的操作部分,即程式與函數,也就是Java的方法。,5-2-1 類別與物件-宣告類別,在Java語言需要先宣告類別後才能建立物件,其宣告語法,如下所示: class 類別名稱 存取敘述修飾子 資料型態 成員資料;存取敘述修飾子 傳回值型態 成員方法( 參數列 ) 程式敘述; ,5-2-1 類別與物件-類別與物件(說明),在Java程式是使用類別原型建立物件,稱此物件屬於類別的實例(Instance)或稱為副本,物件的變數稱為實例變數(Instance Variables),物件的程式或函數稱為實例方法(

11、Instance Methods)。 同一個類別可以當作範本建立無數個物件實例,每一個物件都屬於類別的實例,或直接稱為物件。,5-2-1 類別與物件-類別與物件(圖例),5-2-1 類別與物件-宣告範例,例如:將各種日期資料的物件建立成類別Date的物件原型宣告,如下所示: class Date public int day;public int month;public int year;public void printDate()System.out.println(month+“-“+day+“-“+year); ,5-2-1 類別與物件-UML類別圖,UML類別圖的最上方是類別名稱,

12、中間是成員資料,下方是成員方法,在成員資料和方法前的加號表示宣告成public,減號宣告成private,#號宣告成protected。,5-2-1 類別與物件-宣告物件變數 (說明),在宣告類別後,就可以建立物件,首先將類別當作一種新的資料型態,然後使用新資料型態宣告所需的物件變數,如下所示: Date yesterday, birthday, tomorrow; 上述程式碼宣告Date類別的變數yesterday、birthday和tomorrow,稱為物件變數,變數內容是參考的指標,這個指標是物件的識別字(Identity),目前只有宣告物件變數,並沒有真正建立物件。,5-2-1 類別與

13、物件-宣告物件變數 (圖例),Java物件變數的內容並不是物件本身,物件變數是儲存物件參考(Reference)的指標,所謂建立物件是配置一塊記憶體空間儲存物件的內容(實例變數和方法),類別宣告的物件變數儲存的是這塊記憶體空間的位址,告訴我們如何找到此物件,如下圖所示:,5-2-1 類別與物件-建立物件實例,在Java建立物件需要使用new運算子,這個運算子可以依照類別範本建立物件,然後傳回指向此物件的參考指標,這個過程稱為實體化(Instantiation),將類別實體化成物件實例,如下所示: birthday = new Date();,5-2-1 類別與物件-存取實例變數與方法(說明),

14、在建立好物件後,就可以存取物件的實例變數與方法,其語法如下所示: 物件.實例變數 物件.實例方法 上述物件的實例變數和方法都是使用”.”運算子,而且只能存取宣告成public修飾子的變數和方法。,5-2-1 類別與物件-存取實例變數與方法(範例),以Date類別建立的物件為例,如下所示: yesterday.year = 2005; yesterday.month = 9; yesterday.day = 30; 上述指定敘述指定物件變數yesterday參考物件的實例變數year、month和day的值,接著呼叫實例方法,如下所示: yesterday.printDate(); 上述程式碼呼

15、叫物件變數yesterday參考物件的實例方法printDate()。,5-2-1 類別與物件-存取實例變數與方法(圖例),類別可以建立多個物件實例,每一個物件都可以呼叫自己的實例方法或存取實例變數,執行實例方法就是針對物件送出不同的訊息,如下所示: today.printDate(); yesterday.printDate(); birthday.printDate();,5-2-2 成員資料的存取 - 資訊隱藏,Java類別宣告的成員資料或方法可以使用private和public兩種修飾子指定存取方式,其說明如下所示: private修飾子:成員資料或成員方法只能在類別本身呼叫或存取。

16、public修飾子:成員資料或方法是此類別建立物件對外的使用介面,可以讓其它類別的程式碼呼叫此物件的實例方法或存取實例變數。,5-2-3 物件的使用介面 - 成員方法 (說明),在Java類別的成員方法如果宣告成public,表示這些方法是物件的使用介面,但是有一些方法,例如:第5-2-2節程式範例的validDate()方法因為只有類別本身在呼叫,宣告成private供類別本身使用即可,這種方法稱為工具方法(Utility Methods)。,5-2-3 物件的使用介面 - 成員方法 (範例),第5-2-2節程式範例只提供設定日期資料的setDate()方法,在這一節的程式範例將新增取得日期

17、資料的方法,如下所示: public int getDay() return day; public int getMonth() return month; public int getYear() return year; ,5-3 類別的建構子,5-3-1 類別的建構子 5-3-2 使用this參考物件本身,5-3-1 類別的建構子-說明,Java的基本資料型態在宣告變數時會配置所需的記憶體空間,至於類別型態的變數並不會自動建立物件,如果類別沒有建構子,在使用new運算子建立物件時,只會配置所需的記憶體空間,但是,並不會指定實例變數的初值。 如果希望如同基本資料型態在宣告時指定變數初值,

18、在類別宣告需要新增建構子,建構子是物件的初始方法,在建立物件時會自動呼叫此方法。,5-3-1 類別的建構子-特點,從物件使用new運算子建立物件到物件不再使用的期間,稱為物件壽命(Object Lifetime),Java擁有垃圾收集(Garbage Collection)功能負責處理不再使用的物件,程式設計者並不用自行處理。 Java的建構子擁有一些特點,如下所示: 建構子與類別同名,例如:類別Date的建構子方法是Date()。 建構子沒有傳回值。 建構子支援方法的過載(Overload),詳細說明請參閱第4章,也就是說可以擁有多個同名建構子方法,只是擁有不同的參數型態和參數個數,如下所示

19、: Date(); Date(int m, int d, int y);,5-3-1 類別的建構子-UML類別圖,在UML類別圖的建構子也是位在方法清單,只是在前面加上,如下圖所示:,5-3-2 使用this參考物件本身-說明,在類別的成員和建構子方法都可以使用this關鍵字參考物件本身的實例方法和變數。,5-3-2 使用this參考物件本身-使用在方法,方法的參數列如果和實例變數名稱相同,可以使用this指明實例變數,而不是參數,如下: public boolean setDate(int day, int month, int year) if ( validDate(day, month, year) ) this.day = day;this.month = month;this.year = year; return true;else return false; ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报