物件導向
物件導向
每一支程式都是在解決某個問題
你不該隨心所欲地去撰寫你的程式,你會陷入泥沼
你該有結構化的思考你想解決問題
當你正確的使用物件,你的程式會更容易閱讀和修改
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好厲害,我想加入這個功能, 你是不是需要一次改兩個地方
利用物件解決你的問題

如此,你就不必維護兩份一樣的程式碼了
從類別建立物件,稱為類別的實例(Instance)

物件的屬性記錄其狀態,物件的方法定義其行為
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")