「幫我設計一個物件,裡面要有地方紀錄使用者輸入的文字資料,還要一個數值資料用來區別使用者輸入的資料功能類別。物件名稱是InputData。」
class InputData {
String value;
int type;
InputData(this.value, this.type);
}
看過上一篇的人應該知道「這明明是個函數」。
腦筋快的人會猜「返回的資料型態是class?」
對,但也都不對。
因為這就是物件。
用物件來做程式設計,可以大幅度地讓這個過程更貼近我們人類在現實生活成長過程所建立的生活習慣。
比如上面說到「輸入的資料功能類別」,在原來的程式,要「能輸入資料,又能記錄輸入的資料的功能類別」,可能需要這樣的程式碼...
final List<String> _listData = [];
final List<int> _typeData = [];
如果沒有特別註解、或是翻看程式碼,這樣的程式碼本身沒有意義。
但如果改寫成使用物件後,這段程式碼會變成...
final List<InputData> _listData = [];
如此一來,大家就會知道這程式裡有個「輸入的資料(資料內容與資料功能類別)」,凡是使用到這個InputData的地方,程式碼功能必然與「輸入的資料」有關,而不是單純的意義不明顯的String或Int。
需要特別知道的是:物件裡面不只可以包含資料結構,也可以包含函數。
final flutterTts = FlutterTts();
這個物件參數就是個例子,它裡面包含了一個「speak」函數,用來啟動「text to speech」的語音功能。
await flutterTts.speak('This is my text to speech demo');
這行意義可能本來不明的程式碼,現在是否能理解它其實是在說「text to speech功能物件請使用說話的功能說出下面這串文字....」
總之,物件導向可以幫助工程師寫出人腦更好理解、但程式執行起來也不慢的程式。
它的撰寫原則跟函數很像,「有個返回值形態設定」(但那不是返回值型態設定)、「有個名稱」、「有個『{』『}』區段把程式碼包起來」。
但...怎麼使用它?
下一篇講。