玩轉C#之【物件導向】

by NickChi
Object-oriented

介紹

在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。

Q: 什麼是【物件】?
A:【物件】會包含以下這四個特性:

  1. 抽象(Abstraction)
  2. 封裝(Encapsulation)
  3. 繼承(Inheritance)
  4. 多型(Polymorphism)

抽象(Abstraction)

  • 將真實世界的需求轉換成為OOP中的類別
  • 類別可以包含狀態(屬性)與行為(方法)。

封裝(Encapsulation)

  • 隱藏/保護內部實作的細節,並可以對屬性或方法設定存取層級(Public,Private,Protected)

繼承(Inheritance)

  • 可以讓您建立新類別以重複使用、擴充和修改其他類別中定義的行為。

多型(Polymorphism)

  • 在相同介面下,可以用不同的型別來實現。
  • 多型有分成好幾種不同類型。

透過”繼承”來重複利用、擴充和修改基底類別的定義

在C#中所有類都是”多型”

  • 在設計時期(Design Time)
    • 基底類別可以定義和實作【虛擬】屬性或方法(virtual)
    • 衍生類別可以【覆寫】這些虛擬的屬性或方法(override)
  • 在執行時期(Runtime)
    • 當呼叫基底類別的虛擬方法時,會改呼叫子類別覆蓋的方法
  • 在C#中,所有類型都是多型類型
    • 因為所有類型(包誇使用者定義的類型)都是繼承自Object
  • 如果再C#中設計防止衍生類別覆蓋虛擬成員
    • public sealed override void Dowork(){}
  • 多載(Overloading)比較有點爭議(有些人認為這不算多型)

程式開發的流程

第一步:
從需求或規格中進行”抽象化”的過程,透過”抽象化”過程定義出類別
第二步:
對實作的細節進行”封裝”(隱藏、保護)
第三步:
透過”繼承”來重複利用、擴充和修改基底類別的定義

參考資料

維基百科-物件導向
Udemy – 保哥SOLID 課程

本篇已同步發表至個人部落格
https://moushih.com/2022ithome10/

You may also like

Leave a Comment