iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 9
2

前言:

自己在嘗試解釋程式碼的過程中,有感於自己的基礎觀念不夠紮實,夾帶了一些似是而非的錯誤觀念,所以決定趁這個機會重新理解物件導向,把混淆釐清、把概念確立,所以筆者也會盡可能做最詳盡的探討,當然是以清楚明白好咀嚼的方式來呈現。

如果在探討課題的過程中,有不正確或有疑慮的地方,也歡迎於下方留言討論,感謝您!!


本篇擷取重點:

一、什麼是物件導向

二、物件導向的優點(目的)

三、物件導向程式設計的三大基本特性


一、什麼是物件導向

物件導向(Object Oriented,簡稱OO)程式最重要的特點,就是所有程式執行時期的功能,都需要由物件提供,所以程式需要有各種物件,每種物件負責執行不同的功能

但是這些程式中的物件,並非憑空建立出來;必須透過事先設計好的「類別 (Class) 」,才可以根據類別的定義建立物件實體,執行物件提供的功能。因此,你也可以說「物件導向的程式,是由類別構成的」。


二、物件導向的優點(目的)

  • 直觀,貼近人類思考邏輯
  • 易懂,只要知道物件提供什麼樣方法和如何使用它,套入程式就可使用
  • 隱藏,物件內部其他資訊可藉由設定權限,具隱藏及不被修改的優點
  • 重複,可以後來重複使用
  • 維護,只需要改要改的東西
  • 擴展,如果要加條件,只需要在另外增加就可以
  • 靈活,可透過條件改變一下,就可以滿足需求

==================================================================
貼心小補充:

  1. 過程導向(傳統程式設計)的思維:分析出解決問題的步驟,然後依照步驟實現。

參考資料:
https://rayfly0225.wordpress.com/2016/06/20/c%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91object-oriented%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E6%80%9D%E7%B6%AD/
(推薦,內有物件導向及程序導向的範例,可幫助我們理解)

https://www.delightpress.com.tw/bookRead/skup00007_read.pdf
https://dotblogs.com.tw/alanlun/2016/03/01/231422

==================================================================


三、物件導向程式設計的三大基本特性:

  1. 封裝

首先,封裝讓程式碼易於理解。我們可以從一個類別的名稱以及他的行為去理解與記憶它和系統之間的關係與責任,這樣的特性可以縮短日後我們重新檢視程式碼時所要花費的時間。

  1. 繼承

繼承讓程式碼可以重複使用。就以車子、汽車與卡車的例子來說吧。我們把大部分重複的程式碼寫在車子的類別裡,以後的十種汽車跟八種卡車都可以直接享用車子中已經定義好的程式碼與功能。我們因此縮短了浪費在重複性工作上的時間。

  1. 多型

多型讓程式易於擴充與維護。針對共通的介面來撰寫程式時,可以使得物件之間的關係被鬆綁,讓軟體在日後進行擴充或者個別物件修改時不需要更動到既有的程式碼。

參考資料:

https://www.ithome.com.tw/node/45903
https://blog.xuite.net/janet.jaja/1/103668432-%E8%A9%B1%E8%AA%AA%E5%BE%9E%E9%A0%AD+-+%E7%82%BA%E4%BB%80%E9%BA%BC%E8%A6%81%E4%BD%BF%E7%94%A8%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E8%A8%AD%E8%A8%88+%28OOD%29

==================================================================
貼心小補充:

封裝、繼承、多型這三者是有次序性的,沒有封裝就不可能有繼承、沒有繼承就不可能有多型。只支援封裝的語言稱為Object-Based語言(例如傳統的Visual Basic);同時支援封裝、繼承、多型的語言才能稱為OO語言(例如我們使用的 C#)。

==================================================================


明天預定探討課題為:

  1. 封裝
  2. 物件
  3. 類別


上一篇
[ASP.NET] https://網址?參數=參數值 ,URL 網址參數解析,取得網址參數
下一篇
[ASP.NET] [C#] 物件導向 - 封裝
系列文
ASP.NET Web Form 入門30天30

尚未有邦友留言

立即登入留言