What is object oriented design?

物件導向設計是什麼

  • 定義
  • 三大特性
  • 多重繼承與單一繼承的優缺點
  • 單一繼承的缺點如何用界面解決

物件導向設計定義

物件導向設計為一種軟體設計的方法以物件為基本組塊(單元),物件中包含屬性與操作。此方法強調系統可分解為獨立、可重用的元件,通過它們之間的互動達到複雜功能。

物件導向設計的三大特性

口訣:瘋雞有多個頭

1. 封裝(encapsulation):
- 物件導向程式語言將資料(狀態)與方法(行為)封裝在一個物件內
- 使得物件可以隱藏其內部實現細節,只向外部提供一個清晰的介面。
- 這有助於保護資料的完整性,並提高程式碼的模組化和可維護性。

2. 繼承(Inheritance):
- 物件導向語言支援繼承機制,允許建立新的類別,從現有的類別繼承其屬性和方法。
- 這促進了程式碼的重用,減少了重複性,
- 同時也建立了階層結構,有助於更好地組織和管理程式碼。
- 繼承方式:java支持單一繼承,c++支持多重繼承
- 建構子執行順序:先做父類別建構子,再做子類別建構子(記做父子關係),有祖父類別其建構子不會執行。

3. 多型
- 多型允許不同物件以相同的介面呼叫方法,但執行的行為可能因實際物件的類型而異
- 這增加了程式的靈活性,讓程式能夠更動態地適應不同的物件

多重繼承與單一繼承的優缺點

多重繼承優點

- 允許一個類別同時繼承多個父類別的屬性和行為,更容易地重用程式碼

多重繼承缺點

- 當多個父類別具同名的屬性或方法時,可能導致衝突和不清晰的程式碼

- 隨著繼承關係的增加,繼承的層次結構可能變得複雜,難以理解。

**單一繼承**(Single Inheritance)的優點:

- 簡化了繼承體系,減少了可能的衝突和二義性。

- 提供了清晰的繼承的層次結構,更容易理解程式碼。

**單一繼承**的缺點:

- 限制了類別的重用,因為每個類別只能繼承一個父類別。

- 在某些情況下,可能需要重複編寫某些程式碼,以達到所需的功能。


單一繼承的缺點如何用界面解決

**介面**在單一繼承中的作用是提供一種方式來實現類別之間的共享行為,同時解決了多重繼承可能帶來的問題。在 Java 中,一個類別可以實現多個介面,這種方式稱為多重實作(Multiple Implementation)。


舉例來說,假設有一個形狀(Shape)類別和一個可縮放(Scalable)介面,介面可以用來定義縮放行為。然後,不同類別(例如圓形和矩形)可以實現 Scalable 介面,以定義它們各自的縮放行為。


```java

public interface Scalable {

void scale(double factor);

}


public class Circle implements Scalable {

// 實現 Scalable 介面的縮放方法

@Override

public void scale(double factor) {

// 實作縮放邏輯

}

}


public class Rectangle implements Scalable {

// 實現 Scalable 介面的縮放方法

@Override

public void scale(double factor) {

// 實作縮放邏輯

}

}

```


這樣,我們可以在不引入多重繼承的情況下,實現不同類別的共享行為,同時避免了多重繼承可能帶來的問題。

Comments

Popular posts from this blog

How to write data into a excel file using vbscript

Format date as yyyy-mm-dd using vbscript