# Java 程式設計:物件導向 ###### tags: `程式` `Java` ## 甚麼是物件導向? 在做程式競賽時,我們關注的重點通常是程式的邏輯、迴圈與函式等,但在FRC中要操縱一台機器人各個部位的馬達、管理許多感測器以及處理控制器的輸入等大量的資料時,一般的程式設計方式就會顯得太過複雜,此時物件導向程式設計(Object-Oriented Programming)就能幫上大忙。 ## 甚麼是種類、物件? 假如我要經營一家停車場,想要用一支程式紀錄停車場中車輛的特徵,比如廠牌、顏色及車牌號碼等。 若使用打競賽的邏輯,我們可以使用3個不同的陣列,儲存廠牌、顏色、車牌的字串,但在物件導向的程式設計中,我們可以自己創造一個新的資料型態,叫"Car",我們稱這種自創的資料型態"Class"(種類),其中包含三個字串資料:"brand", "color", "number",這些在class中的資料我們稱為"attribute"(屬性)。 ```java= public class App { public static void main(String[] args) throws Exception { System.out.println("Hello World!"); } } class Car { public String brand; // 車輛的品牌 public String color; // 車輛的顏色 public String number; // 車輛的車牌號碼 } ``` 在Java預設的Hello World程式後加上Car的Class 以上我們定義了Car這一個class,但還沒有實際用到。若要在主程式中創建一個屬於Car種類的物件(Object),我們可以這樣寫: ```java= public static void main(String[] args) throws Exception { Car myCar = new Car(); System.out.println("Hello World!"); } ``` 如果我想要知道myCar這一台車的車牌號碼是甚麼,可以將println()函式中的"Hello World!"改成myCar.number,接著執行程式。 可以發現程式丟給我們一個null,表示這台車的號碼是空的,若想要給予車輛以上三種屬性,我們可以使用一個叫Class Builder的東東,讓你在創建物件時就可以先提供一些資料: ```java= class Car { public Car(String _brand, String _color, String _number) { // Car的Builder brand = _brand; color = _color; number = _number; // 把資料一一填入屬性內 } public String brand; // 車輛的品牌 public String color; // 車輛的顏色 public String number; // 車輛的車牌號碼 } ``` 完成後可以發現,主程式中創建myCar的地方出現了錯誤,那是因為要創建Car種類的物件時必須要給予廠牌、顏色、車牌號碼三個資料。因此我們最後將程式改成如此: ```java= public class App { public static void main(String[] args) throws Exception { Car myCar = new Car("Toyota", "Silver", "1234AB"); System.out.println(myCar.number); } } class Car { public Car(String _brand, String _color, String _number) { // Car的Builder brand = _brand; color = _color; number = _number; // 把資料一一填入屬性內 } public String brand; // 車輛的品牌 public String color; // 車輛的顏色 public String number; // 車輛的車牌號碼 } ``` 就能夠正常輸出車牌號碼了!