物件導向(Object Oriented Programming,又稱OOP),在程式領域中很常會看到一些英文代稱,如果不懂的話就比較會不知道在說些什麼,所以除了知道中文名稱外也要稍微知道一下它的代稱是什麼會比較好唷!
一、什麼是物件導向?
把程式寫出來的功能集合成一個類別(class),接著建立成一個物件(object),再利用物件(object)做溝通與操作,什麼意思?舉個生活上的小例子:
大家一定都有考過試吧~考完成績單也就會出來了,那麼從考試到各科成績出來最後統整出成績單,這整個流程在程式中就是「主程式」在寫的內容,也就是實際上在做的事情。
那麼成績單是怎麼生成的呢?就是一開始會有成績單的格式,既定的格式通常在腦袋中,例如說有座號、名字、各科成績、排名...這樣的項目排列,那麼為了以後可以套用此格式因此就將這樣的格式打好後存檔命名為「成績單」,這樣的命名在程式中就是命名「類別(Class)」的名稱。
也就是只要有考試才有可能會使用這樣格式的成績單,否則它只是一個毫無用處的檔案,要使用它就需要將成績單格式另存新檔(新建立出來),也就是專屬於當天考試的成績單,這個新的成績單檔案就可以使用,學生成績出來就可以把資料輸入進去。
在程式中一樣的道理,主程式在執行的時候,需要用到類別(Class)的時候再建立出來成為物件(Object)就可以了,否則它也只是裝飾品並毫無用處。
物件導向還有一些名詞要知道的,這邊就一一比喻與敘述,這樣就會更了解了。先看一下一般基本成績單的樣子。
•一開始要有一個空間才能設計成績單,如:將固定格式的成績單另存新的檔案,我們就稱它為空白的檔案,那麼「另存」這個在程式中就是建立「物件(object)」,也就是新建立一個檔案。
•學生的成績出來了就要使用成績單,那麼我們新建立出來的成績單就要為它做命名,因此就將這個檔案命名為「段考成績單」,這個「命名」在程式中也就是做「類別(Class)」的命名。
•成績單中基本會有座號、名字、各科目成績、排名,這些項目欄位在程式裡一樣也稱為「欄位(Field)」,也就是第一排的項目。
•有時候可能會有成績異動需要更改,有些不用,那麼更不更改這個狀況在程式中就稱作「屬性(Property)」,在程式中會配合get 和 set 來控制外部的存取與修改。
•當學生成績建立好的時候可能就需要去做列印,那麼去做「列印」這個動作也會是在「段考成績單」這邊去做列印,在程式中就是在類別(Class)中去做動作,那這個動作就稱為「方法(Method)」,這個方法只有在這個類別(Class)中才可以使用ㄛ!其他檔案就算有列印這個功能,但資料不會是你剛輸入的資料,所以這邊成績單列印是針對「段考成績單」這個檔案去做列印的。
這邊把這些名詞簡單的統整一下:
物件(object):建立一個具體或抽象的東西,如:檔案、學生、電腦、水、生物等等
類別(class):用來分門別類的,如:小狗、小貓、小鳥...這些就屬於「動物」類
欄位(Field):特性或屬性的名稱,例如小狗的「名字」、小狗的「年齡」、小狗的「毛色」...等
屬性(Property)值:對於欄位的各名稱給予的值,就是屬性值。如:小狗名字=「吉利」、小狗穿的衣服=「紅色」...等
方法(Method):對於物件(object)所做出來的行為動作,如:學生在「說話」、電腦在「開機」、小狗在「走路」、檔案在「列印」...等
這樣有沒有更懂一點了呢?我們來看一下圖示:
這就是主程式依照類別(Class)的格式去建立一個物件(object),那類別(class)裡面就包含著欄位(Field)、屬性(Property)、方法(Method),還有一個是建構函式(Constructor),這個是將一些資料由外部取得的資料把它拿到這個類別中可以做存取使用,也就是說把成績的資料輸入到「成績單」中。
建構函式(Constructor)就有一點像是數學的函式f(x,y)=運算式,由外面取得x、y值後,再進入到運算式中進行處理,一樣的道理。
一開始要先設計類別,欄位、屬性、方法這些先規劃好後,再來寫主程式,那麼程式的執行流程就會是:
說明:
1.目前這個建立還未進入主程式喔!只是先建立Class的格式而已
2.主程式想要使用Class,就要去建立這樣個格式才可以操作,因此要new一個Class,並且裡面要有一些資料參數才可以真正建立成一個完整的物件
3.主程式想要讓剛剛輸入到Class中的資料去做列印這個動作,那麼就可以使用「.列印」("."就是去做什麼事的意思),也就是一開始我們在Class中所設計的格式去建立屬於它的方法,只有這個Class才可以使用的方法哦!因為是在這個Class下所建立的,若有其他的Class就無法使用了。
二、為什麼要有物件導向?
程式一寫下去可能就好幾百行、好幾千行,甚至更多,那麼物件導向就是把程式用物件的方式做類別的區分,主程式在執行過程只要把相同類別的東西利用我們所建立的類別(Class)格式,拉進來去建立成物件就可以使用,之後也就可以一直重複使用相同格式的程式碼,主程式就可以簡短很多,幾乎寫程式都會運用到物件導向,所以非常的重要一定要把物件導向學好。
三、什麼時候會用到它?
只要程式有物件導向這個功能就幾乎都會用到它,像是C#、Java就都有物件導向,所以使用機率很高。
四、如何使用它?
一開始要先設計程式架構去做分門別類的事,接著再進行主程式的編寫。
Step1建立類別(Class)
Step2類別內容設計
Step3:主程式再開始寫
Step4:程式執行結果
執行後,因為我們主程式有做「成績單去列印」這件事,所以在我們「成績單」這個類別(Class)的方法(Method)是在做下面這件事
Console.WriteLine(id + name + "成績單去列印囉~");
因此也就會對應到在主控台就會顯示「當初給予的資料(座號與名字)+成績單去列印囉~」這樣的文字出來。