SlideShare a Scribd company logo
1 of 34
Download to read offline
初探物件導向程式設計
Brad
物件導向的觀念
●整個程式的運作,就是以物件所組成
●每個物件都是由類別所產生出來
●類別就是物件的模型
●以最人性化的觀點來設計開發程式
●人類 ⇒ 一個具體的物件 ⇒ 人
o屬性(靜態):身高、體重、年齡
o方法(動態):吃喝拉撒睡
物件導向的觀念 - 類別與物件
objects
objects
girl
boy
class
class
類別的定義方式及成員
基本結構:
class 自訂類別名稱 {
… 定義類別的程式區塊
… 定義屬性
… 定義方法
}
// 屬性與方法皆為類別物件的成員
類別的定義方式及成員 - 腳踏車類別
class Byke {
// 屬性就是以變數來負責
double Speed;
// 方法定義
void addSpeed(){...定義加速的方法...}
void reduceSpeed(){...定義減速的方法...}
}
物件宣告與建立 - 建立物件實體
●類別只是定義,定義描述物件
●實際運作執行的是物件
●宣告方式
o類別名稱 物件變數;
oBike myBike;
●建立物件實體(初始化)
omyBike = new Bike();
Class
Object Object Object
物件宣告與建立
Type of value to be returned,
which can be of any type or
class. If void, the method
does not return a value.
Type of value to be returned,
which can be of any type or
class. If void, the method
does not return a value.
Name of the
method.
return type methodName( arg1, arg2, … argn) {
This is the
body of the
method
// Executable code goes here
}
物件宣告與建立
實際程式演練
物件宣告與建立 - 建構子
●當以 new 呼叫建立物件實體時的方法
●定義在類別中
●其方法定義中,沒有傳回值型態的宣告
●其名稱與類別名一樣(包含大小寫)
●只會在 new 出物件實體時呼叫
●通常用來進行設定物件實體初始化
物件宣告與建立
實際程式演練
類別成員
●並非類別物件所專屬的成員
●是屬與整個類別所共有的成員
Static Member
Static Variable Static Method
類別成員
●腳踏車類別
●定義出腳踏車物件的屬性
與方法(物件成員)
●透過該類別共產生幾個物
件實體(類別物件)
class Dog {
String name;
String toString( ) { return name; }
static int count ;
}
3
name
toString ()
“Spot”
Return“Spot”;
name
toString ()
“Rover”
Return“Rover”;
name
toString ()
“Fido”
Return“Fido”;
類別成員
實際程式演練
字串(String)物件
●字串在一般程式設計上被廣泛使用
●在大多數其他程式中視為基本型別
●在Java中字串是物件型別資料
●從字串來認識類別物件
●從字串來認識API
字串(String)物件
●String strMyName = “Brad”; // 沒有 new?
●String strUrName = new String(“Daniel”);
●由 byte[] 所構成
●由 char[] 所構成
字串(String)物件
●因為常用,而又是物件,執行效能相對不佳
●以 String Pool 進行改善
“hello”
string object
Heap
str
str2
string reference variable
string reference variable
字串(String)物件
●字串值的任何改變,都會使得原字串物件參考改變
●也就是說耗用較多記憶體空間
●適用於字串值不變的狀況下
●字串值將會改變的狀況下,建議改用
oStringBuffer
oStringBuilder ( index)
字串(String)物件
實際程式演練
以String為例來看API Document
該單元以實際瀏覽器及程式進行操作解說
以String為例來看API Document
實際程式演練
StringBuffer 與 StringBuilder
Changing a string
Java to Diva
: StringBuffer
Java
: StringBuffer
Diva
wordword
Before After
StringBuffer word = new StringBuffer (“Java”);
word.setCharAt (0, ‘D’);
word.setCharAt (0, ‘i’);
StringBuffer 與 StringBuilder
實際程式演練
StringBuffer 與 StringBuilder
StringBuffer StrigBuilder
Thread safe Not thread safe
Synchronized Not synchronized
Slower than
StringBuilder
Faster than
StringBuffer
StringTokenizer的應用
StringTokenizer的應用
實際程式演練
類別繼承關係
●新設計一種按鈕
●後來又需要另一種特殊按紐,差別是:
o有圖示顯示
o按下後有動畫效果
●但是發向特殊按鈕有80%與原先按鈕一樣
●需要重新開發嗎?
●如果使特殊按鈕繼承原先按鈕就好了
類別繼承關係 - 父類別與子類別
BicycleSuperClass
SuperClass
MountainBike RoadBike TandemBike
類別繼承關係
實際程式演練
封裝與多型
(data)
hour
minute
second
Time()
method
incrementTime()
method
setTime()
method
getTime()
method
inputoutput
封裝與多型
Shape
TriangleCircle Square
“Upcasting”
封裝與多型
實際程式演練
覆寫與覆載
●將父類別的方法改寫(改變/改善/改進)
●父類別原來被改寫的方法仍存在
●原則
o方法名稱一樣
o傳遞參數一樣
o傳回值型別
▪基本型別一樣
▪物件型別 is-a
o存取修飾字範圍大於或等於父類別
覆寫與覆載
●相同類別中,相同名稱的方法
●因為參數不同
o個數
o型別
●我是人類,我有多種不同吃東西的方法
o吃(豆腐)
o吃(青菜)
o吃(青菜、豆腐、湯)
覆寫與覆載
實際程式演練

More Related Content

Viewers also liked

Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:CollectionBrad Chao
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)Brad Chao
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:ThreadBrad Chao
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Brad Chao
 
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班力中 柯
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)力中 柯
 
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorFred Chien
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架力中 柯
 
Java8 time
Java8 timeJava8 time
Java8 timekoji lin
 
流程語法與函式
流程語法與函式流程語法與函式
流程語法與函式Justin Lin
 
AI機器人正夯
AI機器人正夯AI機器人正夯
AI機器人正夯佳新 陳
 
20140827_粉樂町_莊志維Chuang, Chih-Wei
20140827_粉樂町_莊志維Chuang, Chih-Wei20140827_粉樂町_莊志維Chuang, Chih-Wei
20140827_粉樂町_莊志維Chuang, Chih-WeiChih-Wei Chuang
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Justin Lin
 
創新數位行銷
創新數位行銷創新數位行銷
創新數位行銷Norika
 
十倍速252字根 2016年新版 241-252
十倍速252字根 2016年新版 241-252十倍速252字根 2016年新版 241-252
十倍速252字根 2016年新版 241-252gary wang
 
超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門Fred Chien
 
我的自學人生
我的自學人生我的自學人生
我的自學人生Norika
 
網路行銷配置策略與執行步驟
網路行銷配置策略與執行步驟網路行銷配置策略與執行步驟
網路行銷配置策略與執行步驟Norika
 
啟動社群行銷力 - 策劃社群導購與議題操作
啟動社群行銷力 - 策劃社群導購與議題操作啟動社群行銷力 - 策劃社群導購與議題操作
啟動社群行銷力 - 策劃社群導購與議題操作Norika
 
網路廣告基礎入門
網路廣告基礎入門網路廣告基礎入門
網路廣告基礎入門Norika
 

Viewers also liked (20)

Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:Collection
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
 
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)
 
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 Emulator
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
 
Java8 time
Java8 timeJava8 time
Java8 time
 
流程語法與函式
流程語法與函式流程語法與函式
流程語法與函式
 
AI機器人正夯
AI機器人正夯AI機器人正夯
AI機器人正夯
 
20140827_粉樂町_莊志維Chuang, Chih-Wei
20140827_粉樂町_莊志維Chuang, Chih-Wei20140827_粉樂町_莊志維Chuang, Chih-Wei
20140827_粉樂町_莊志維Chuang, Chih-Wei
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
 
創新數位行銷
創新數位行銷創新數位行銷
創新數位行銷
 
十倍速252字根 2016年新版 241-252
十倍速252字根 2016年新版 241-252十倍速252字根 2016年新版 241-252
十倍速252字根 2016年新版 241-252
 
超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門
 
我的自學人生
我的自學人生我的自學人生
我的自學人生
 
網路行銷配置策略與執行步驟
網路行銷配置策略與執行步驟網路行銷配置策略與執行步驟
網路行銷配置策略與執行步驟
 
啟動社群行銷力 - 策劃社群導購與議題操作
啟動社群行銷力 - 策劃社群導購與議題操作啟動社群行銷力 - 策劃社群導購與議題操作
啟動社群行銷力 - 策劃社群導購與議題操作
 
網路廣告基礎入門
網路廣告基礎入門網路廣告基礎入門
網路廣告基礎入門
 

Java_02:初探物件導向程式設計