11 分鐘閱讀

物件導向

每一支程式都是在解決某個問題

你不該隨心所欲地去撰寫你的程式,你會陷入泥沼

你該有結構化的思考你想解決問題

當你正確的使用物件,你的程式會更容易閱讀和修改

Phone類別圖

Phone
User
PhoneNumber
GooleMap()
UberEat()
FB()
Youtube()
Bank(string passWord)

Phone的類

你可以理解這是設計圖 裡面可以定義屬性方法


注意!以下程式碼的陳述式會根據不同程式語言有所差異,但表達的概念是一樣的


class Phone{
  public string User;
  public string PhoneNumber;
  public void GoogleMap(){...};
  public string UberEat(){...};
  public void FB(){...};
  public void Youtube(string searchName){...};
  public string Bank(string passWord){...};
}

方法分成有回傳型和無回傳型

靜態語言: (C#, C++, Java)

無回傳型

  • return 代表要退出void方法

有回傳型

  • 必須設定一個回傳型別如string,以”public string”開頭宣告的方法名,必須回傳一個string值,如return “home”;
  • 執行完return陳述式後,你可以得到你指定型別的值

動態態語言: (Python, JavaScript) 一樣有回傳型和無回傳型,差別只有不用宣告回傳型別,你想回傳就回傳,比較自由

#回傳string
def yourFunction1:
  return "home"

#退出方法
def yourFunction2:
  return

我們都有手機

今天有你跟我兩支手機

YourPhone MyPhone
User User
PhoneNumber PhoneNumber
GooleMap() GooleMap()
UberEat() UberEat()
FB() FB()
Youtube() Youtube()
Bank(string passWord) Bank(string passWord)

設計了兩個類別,也可以正常工作

不過你仔細想,我今天跟你說,ChatGPT好厲害,我想加入這個功能, 你是不是需要一次改兩個地方

利用物件解決你的問題

Object1

如此,你就不必維護兩份一樣的程式碼了

從類別建立物件,稱為類別的實例(Instance)

Object2

物件的屬性記錄其狀態,物件的方法定義其行為

Phone yourPhone = new Phone();
Phone myPhone = new Phone();

yourPhone.User = "Linda";
myPhone.User = "Bard";

建立兩個實例,兩個不會互相影響

你可以設定他們各自的使用者(屬性)

使用物件的解法

Phone yourPhone = new Phone();
Phone myPhone = new Phone();

string yourResult = yourPhone.Bank("123456");
string myResult = myPhone.Bank("pokerSos123");

如此,你可以同一份類別維護兩個人的手機,多一個ChatGPT方法,也可以只修改一份設計圖就好

實例化物件並且快速初始化

Phone yourPhone = new Phone();
Phone myPhone = new Phone();

yourPhone.User = "Linda";
myPhone.User = "Bard";

每次想要使用個物件,初始化欄位的時候,要多key好的鍵盤,特別好 還好,類別可以使用建構式來幫你省很多行程式碼

Phone yourPhone = new Phone();
Phone myPhone = new Phone();

yourPhone.User = "Linda";
myPhone.User = "Bard";

C# 使用public 類別名稱(參數1, 參數2, …)

class Phone{
    public Phone(string user){
        User = user;
    }
    public string User;
  
}

Phone yourPhone = new Phone("Linda");

python

init(self, 參數1, 參數2, …) self 這是自動設定參考到被建立的物件

class Phone:
  def __init__(self, name) -> None:
    self.name = name
}
yourPhone = Phone("Linda")

標籤:

更新時間: