View
254
Download
3
Category
Preview:
Citation preview
Java@Ch8. OBJECTS AND CLASSES
2010.12.03
Outline
• Object-Oriented Programming• 類別的宣告 & 物件的實作• Defining Classes for Objects• 為什麼要物件導向 ?• 物件導向的好處• Constructors• Displaying GUI Components
[Sample code]
Car.java + TestCar.java 、 p.300 Listing 8.5
Object-Oriented Programming
(OO 、 OOP 物件導向程式語言 )
Java 比擬為一部電影,要有:
1.導演 : 想劇情2.編劇 : 安排劇中角色、道具、場景的人3.演員 : 舞台上照著劇本實際演出的人
西遊記 導演 : 你角色 : 猴子、豬、雲演員 : 孫悟空、小猴子 A 、小猴子 B 、豬八戒、雲 A 、
雲 B
表情位置
孫悟空
表情位置
小猴子 A
表情位置
小猴子 B
顏色位置
雲 A
七十二變
搥背 搥背 飄動
表情位置
豬八戒
吃東西
名稱
屬性
行為
顏色位置
雲 B
飄動
小猴子 A
小猴子 B
豬八戒
雲 A雲 B
孫悟空
我會七十二變
我會搥背
我會搥背
我會吃東西
我會飄動我會飄
類別的宣告 & 物件的實作 • 物件的實作
猴子 小猴子 A = new 猴子 (); 小猴子 A. 表情 = 大笑 ; 小猴子 A. 位置 = 地上 ; 小猴子 A. 搥背 (); // 開始搥背
• 類別的宣告 :
class 猴子 { 表情 位置 public 搥背 () { 幫別人搥背 ; } }
“猴子、豬、雲 “是類別 (class)
“孫悟空、小猴子 A 、小猴子 B 、豬八戒、雲 A 、雲 B”
是由類別實做出來的物件 (object)
“狀態、位置”是類別的屬性 (state 、 properties 、 attribute)
“七十二變、搥背、飄動、吃東西”是類別的行為 (behavior 、 actions)
參考程式 : TV.java + TestTV.java ( 課本
p.292~293)
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 來定義 .
程式練習 :
Car.java + TestCar.java
1. 加入車子”耗油率”的屬性 rate (ex: 公里 / 公升 )
2. 加入計算油耗的 Method
OilConsume(int oil) ( 讓使用者傳入公升數 , 印出車子總共可以跑幾公里 )
為什麼要物件導向 ?
• 物件導向是近年來發展出的一套程式設計的開發概念,基於程式撰寫越來越龐大,參予的開發人員更多,程序式的結構 (procedure-oriented) 缺乏效率和可讀性,而且無法有效發展 GUI 軟體,因此發展出的一套具物件概念的語言結構。
• 例: C++ , JAVA
物件導向的好處:• 1. 抽象化 ( Abstraction )
思考物件的思維, 用抽象化的思維來思考複雜的程式, 注重物件與外界溝通的行為, 可達到資料隱藏的目的。
• 2. 封裝 ( Encapsulation )
將資料包裝在類別內部, 限定特定的函數存取, 使別人無法得知物件內的運作情形。
• 3. 繼承 ( inheritance )
將繼有類別的功能, 透過繼承的方式, 將此功能繼承給新的類別使用。
• 4. 多型 ( polymorphism )
允許相同名稱的函數針對引數的不同而有不同的處理動作。• 5. 動態繫結 ( Dynamic binding )
將物件的方法函式位址建立成一個虛擬表格 (Virtual Table) , 在執行階段時,判斷該呼叫哪一個物件的方法函式, 以達到物件多型 (polymorphism) 的目的。
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.
程式練習 :
1. 在 Car.java 裡面加上一個沒有參 數的 Constructor
2. 並在 Constructor 裡印出車子名稱 3. 最後在 TestCar.java 裡呼叫它
( 參考 p.289 Figure8.3 、 p.290 Listing 8.1)
new ClassName(arguments);
• 只有在 class 裡完全沒有定義 constructor 的時候 , Java才會自動產生一個預設的 constructor, 且它沒有argument
• 沒有 argument 的 Constructor, 稱為 no-arg 或是 no-argument constructor
• no-argument constructor 通常沒有 body, 而這種沒有body 的 constructor 叫作 default constructor
Displaying GUI Components
JFrame
JButton
JRadioButton
JComboBox
程式練習 :
p.300 Listing 8.5
Recommended