iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0

學習目標

  • 何謂「物件導向程式設計」?

  • 為何使用「物件導向程式設計」?

  • 用不用「物件導向」差在哪裡?

  • 物件導向程式的寫法

  • 物件導向專有名詞

  • 物件導向三大特色


何謂「物件導向設計」

  • 把資料與操作該資料的函數綁在一起的語法

https://ithelp.ithome.com.tw/upload/images/20191012/20120926oayVkgRBAS.png

為何使用「物件導向」?

  • 方便程式碼重用

https://ithelp.ithome.com.tw/upload/images/20191012/20120926kF6eWhMyYj.png
https://ithelp.ithome.com.tw/upload/images/20191012/2012092616p5pNXHRR.png

用不用「物件導向」差在哪裡?

  • 不使用物件導向描述一件事

https://ithelp.ithome.com.tw/upload/images/20191012/20120926DofTuprV1c.png

  • 使用物件導向描述一件事

https://ithelp.ithome.com.tw/upload/images/20191012/201209264Bk10jRzsf.png

  • 用「物件導向」優點

    • 便於程式碼「重用」

    • 把程式細節隱藏在物件內,

    • 讓主程式變短,

    • 簡化主程式邏輯

  • 用「物件導向」缺點

    • 「基礎建設」較繁雜龐大,

    • 寫個簡單程式需要比傳統寫法,還要更多行

https://ithelp.ithome.com.tw/upload/images/20191012/20120926m6SDE7VVJs.png

物件導向程式的寫法

  • 先定義好參與這件事的物品有哪些(這些物品叫做 “物件”)

  • 再定義這些物品所需的數量及行為(這些數量及行為叫做 “屬性”與“方法”)

  • 接下來就可用物品間的互動行為 來描述整件事情是如何發生的(這部份的描述稱為“主程式”)

https://ithelp.ithome.com.tw/upload/images/20191012/20120926eDtFiP6hJo.png

物件導向專有名詞

  • 屬性(Properties)vs. 方法(Methods)

https://ithelp.ithome.com.tw/upload/images/20191012/20120926dGOlpc9Jd3.png

  • 類別 (Class):物件的設計藍圖

  • 物件 (Object):根據類別所建造出來的實體 (Instance)

    • 利用「類別」產生出「物件」,我們稱此動作為「實體化(Instantiation)」

https://ithelp.ithome.com.tw/upload/images/20191012/20120926DTWebMD3KJ.png

物件導向三大特色

  • 封裝 (Encapsulation)

    • 將資料 (屬性) 與操作此資料的函數 (方法) 包在一起的特性

  • 繼承 (Inheritance)

    • 承接另一個物件所有屬性與方法,並可以加以改造的特性

  • 多型 (Polymorphism)

    • 修改繼承下來的函數,使之名稱相同,但行為卻不同的特性(覆寫Overwriting)

    • 在一個類別內定義多個同名函數,隨著傳入值或呼叫方法不同而有不同行為(多載Overloading)


重點整理

  • 為何使用「物件導向程式設計」

    • 方便程式碼「重用」

  • 屬性 vs. 方法

    • 屬性:物件內的「資料」

    • 方法:物件內的「函數」

  • 類別 vs. 物件

    • 類別:物件的「設計藍圖」

    • 物件:由類別建造出來的一個「實體」

  • 物件導向三大特性

    • 封裝(Encapsulation):讓你把「資料」與「函數」打成一包

    • 繼承(Inheritance):讓你輕易拷貝另一個類別所有屬性與方法

    • 多型(Polymorphism):覆寫(Overwriting)+ 多載(Overloading)


上一篇
Day25-複合資料結構:字典
下一篇
Day27-物件導向設計 :封裝部分
系列文
從不懂,到玩上手的Python語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言