Presentation is loading. Please wait.

Presentation is loading. Please wait.

OBJECTS AND CLASSES 2010.12.03. Outline Object-Oriented Programming 類別的宣告 & 物件的實作 Defining Classes for Objects 為什麼要物件導向 ? 物件導向的好處 Constructors.

Similar presentations


Presentation on theme: "OBJECTS AND CLASSES 2010.12.03. Outline Object-Oriented Programming 類別的宣告 & 物件的實作 Defining Classes for Objects 為什麼要物件導向 ? 物件導向的好處 Constructors."— Presentation transcript:

1 Java @Ch8. OBJECTS AND CLASSES 2010.12.03

2 Outline Object-Oriented Programming 類別的宣告 & 物件的實作 Defining Classes for Objects 為什麼要物件導向 ? 物件導向的好處 Constructors Displaying GUI Components [Sample code] Car.java + TestCar.java 、 p.300 Listing 8.5

3 Object-Oriented Programming (OO 、 OOP 物件導向程式語言 ) Java 比擬為一部電影,要有: 1. 導演 : 想劇情 2. 編劇 : 安排劇中角色、道具、場景的人 3. 演員 : 舞台上照著劇本實際演出的人

4 西遊記 導演 : 你 角色 : 猴子、豬、雲 演員 : 孫悟空、小猴子 A 、小猴子 B 、豬八戒、雲 A 、雲 B 表情 位置 孫悟空 表情 位置 小猴子 A 表情 位置 小猴子 B 顏色 位置 雲A雲A 七十二 變 搥背 飄動 表情 位置 豬八戒 吃東西 名稱 屬性 行為 顏色 位置 雲B雲B 飄動

5 小猴子 A 小猴子 B 豬八戒 雲A雲A 雲A雲A 雲B雲B 雲B雲B 孫悟空 我會七 十二變 我會 搥背 我會吃東西 我會飄動 我會飄

6 類別的宣告 & 物件的實作 物件的實作 猴子 小猴子 A = new 猴子 (); 小猴子 A. 表情 = 大笑 ; 小猴子 A. 位置 = 地上 ; 小猴子 A. 搥背 (); // 開始搥背 類別的宣告 : class 猴子 { 表情 位置 public 搥背 () { 幫別人搥背 ; }

7 “ 猴子、豬、雲 “ 是類別 (class) “ 孫悟空、小猴子 A 、小猴子 B 、豬八戒、雲 A 、雲 B” 是由類別實做出來的物件 (object) “ 狀態、位置 ” 是類別的屬性 (state 、 properties 、 attribute) “ 七十二變、搥背、飄動、吃東西 ” 是類別的行為 (behavior 、 actions)

8 參考程式 :  TV.java + TestTV.java ( 課本 p.292~293)

9 Defining Classes for Objects 物件 : 物件代表一個實體, 它是可被清楚分辨出來的 An object has a unique identity, state, and behavior. ( 課本 p.288) Ex: a student, a desk, a circle, a button. 狀態 : 物件的狀態,藉由 data field 的 current value 來表示. 行為 : 物件的行為,藉由 method 來定義.

10 程式練習 :  Car.java + TestCar.java 1. 加入車子 ” 耗油率 ” 的屬性 rate (ex: 公里 / 公升 ) 2. 加入計算油耗的 Method OilConsume(int oil) ( 讓使用者傳入公升數, 印出車子總共可以跑幾公里 )

11 為什麼要物件導向 ? 物件導向是近年來發展出的一套程式設計的開發 概念,基於程式撰寫越來越龐大,參予的開發人 員更多,程序式的結構 (procedure-oriented) 缺 乏效率和可讀性,而且無法有效發展 GUI 軟體, 因此發展出的一套具物件概念的語言結構。 例: C++ , JAVA

12 物件導向的好處: 1. 抽象化 ( Abstraction ) 思考物件的思維, 用抽象化的思維來思考複雜的程式, 注重物件與外界溝通的行為, 可達到資料隱藏的目的。 2. 封裝 ( Encapsulation ) 將資料包裝在類別內部, 限定特定的函數存取, 使別人無法得知物件內的運作情形。 3. 繼承 ( inheritance ) 將繼有類別的功能, 透過繼承的方式, 將此功能繼承給新的類別使用。 4. 多型 ( polymorphism ) 允許相同名稱的函數針對引數的不同而有不同的處理動作。 5. 動態繫結 ( Dynamic binding ) 將物件的方法函式位址建立成一個虛擬表格 (Virtual Table) , 在執行階段時,判斷該呼叫哪一個物件的方法函式, 以達到物件多型 (polymorphism) 的目的。

13 Constructors A constructor must have the same name as the class itself. Constructors do not have the return type, not even void. Constructors play the role of initializing objects.

14 程式練習 :  1. 在 Car.java 裡面加上一個沒有參 數的 Constructor 2. 並在 Constructor 裡印出車子名稱 3. 最後在 TestCar.java 裡呼叫它 ( 參考 p.289 Figure8.3 、 p.290 Listing 8.1)

15 new ClassName(arguments); 只有在 class 裡完全沒有定義 constructor 的時候, Java 才 會自動產生一個預設的 constructor, 且它沒有 argument 沒有 argument 的 Constructor, 稱為 no-arg 或是 no- argument constructor no-argument constructor 通常沒有 body, 而這種沒有 body 的 constructor 叫作 default constructor

16 Displaying GUI Components JFrame JButton JRadioButton JComboBox

17 程式練習 :  p.300 Listing 8.5


Download ppt "OBJECTS AND CLASSES 2010.12.03. Outline Object-Oriented Programming 類別的宣告 & 物件的實作 Defining Classes for Objects 為什麼要物件導向 ? 物件導向的好處 Constructors."

Similar presentations


Ads by Google