【中低階級】-[物件導向]-介紹

更新於 發佈於 閱讀時間約 6 分鐘
  物件導向(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值後,再進入到運算式中進行處理,一樣的道理。
一開始要先設計類別,欄位、屬性、方法這些先規劃好後,再來寫主程式,那麼程式的執行流程就會是:
建立類別(Class)格式圖示
主程式去使用類別(Class)圖示
說明:
1.目前這個建立還未進入主程式喔!只是先建立Class的格式而已

2.主程式想要使用Class,就要去建立這樣個格式才可以操作,因此要new一個Class,並且裡面要有一些資料參數才可以真正建立成一個完整的物件

3.主程式想要讓剛剛輸入到Class中的資料去做列印這個動作,那麼就可以使用「.列印」("."就是去做什麼事的意思),也就是一開始我們在Class中所設計的格式去建立屬於它的方法,只有這個Class才可以使用的方法哦!因為是在這個Class下所建立的,若有其他的Class就無法使用了。

二、為什麼要有物件導向?

  程式一寫下去可能就好幾百行、好幾千行,甚至更多,那麼物件導向就是把程式用物件的方式做類別的區分主程式在執行過程只要把相同類別的東西利用我們所建立的類別(Class)格式,拉進來去建立成物件就可以使用,之後也就可以一直重複使用相同格式的程式碼,主程式就可以簡短很多,幾乎寫程式都會運用到物件導向,所以非常的重要一定要把物件導向學好。

三、什麼時候會用到它?

  只要程式有物件導向這個功能就幾乎都會用到它,像是C#、Java就都有物件導向,所以使用機率很高。

四、如何使用它?

一開始要先設計程式架構去做分門別類的事,接著再進行主程式的編寫。

Step1建立類別(Class)

加入類別
類別命名

Step2類別內容設計

建立類別格式-1
建立類別格式-2

Step3:主程式再開始寫

主程式使用類別

Step4:程式執行結果

執行結果
執行後,因為我們主程式有做「成績單去列印」這件事,所以在我們「成績單」這個類別(Class)的方法(Method)是在做下面這件事
Console.WriteLine(id + name + "成績單去列印囉~");
因此也就會對應到在主控台就會顯示「當初給予的資料(座號與名字)+成績單去列印囉~」這樣的文字出來。

即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
21會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
橙果杏的沙龍 的其他內容
亂數是要做什麼用的?生活中其實有很多有關亂數的事,例如說:樂透摸彩、抽籤、驚喜包、中獎者、擲骰子等等都是跟亂數有關哦!它們都是將所有的數都丟進去一個空間裡再隨機抽取,在不重複的狀況下每一個數抽到的機率都是一樣的。 在程式中也有這個玩法哦!但是說是這麼說到底怎麼用,咱們來看看: 語法: 在隨機抽取的時
資料集中除了陣列這個外,還有另一個好幫手就是List,它跟陣列很像,我們直接來看一下怎麼用: 它的語法: 1.給予值 (1)單一新增: (2)陣列式新增: 例子: 2.取值 (1)foreach迴圈方式 (2)單一取值 3.取得List有多少個內容值 4.排序 想要反轉就再使用↓ 5.插入 6.複製
陣列運用、擷取字串   對於陣列裡的內容值除了把資料存進去外,若想要知道陣列維度、陣列大小、複製陣列的值到另一個陣列中、清除陣列的值等等的相關處理,甚至比較常用到的可能還需要做資料排列、查找資料等等,此時C#有一些屬性方法可以幫助到我們,不用寫複雜的迴圈,來看一看有哪些吧~
  陣列就陣列怎麼還有不規則陣列呢?一維陣列就一排沒什麼大問題,但是!二維以上的多維陣列不知道有沒有發現大家的長度都是一致的?用三維來說組合起來的箱子不是四邊形,就是長(正)方體,那麼不規則陣列組合起來就不一定是完整的長(正)方體了,可能就會出現東缺一腳、西缺一角的情形發生,我們用三維的圖形來表示:
上一篇的一維陣列是指一排箱子,二維陣列就會往上疊變成兩排箱子,那麼三維呢?並不是再往上疊三排箱子就是三維而是又多了後面深度,也就是三個維度。用圖示: 這樣有比較懂嗎?!沒關係!之前用箱子,那現在用數學來說明好了, 一維是x軸(長度) 二維是xy軸(長度+高度) 三維是xyz軸(長度+高度+深度) 四
在使用陣列時一開始也是需要做宣告的,那麼這次說的內容是一維陣列,因此一維陣列宣告內容包括:資料型態、陣列名稱、以及陣列的大小。那麼我們就來看一下它的語法是如何的: 說明:等號左邊是做宣告,而右邊是做建立的動作。 一、初始值設定 那麼初始值要怎麼設定呢?這邊有幾種方法,用例子帶大家來看一看: 1.有給
亂數是要做什麼用的?生活中其實有很多有關亂數的事,例如說:樂透摸彩、抽籤、驚喜包、中獎者、擲骰子等等都是跟亂數有關哦!它們都是將所有的數都丟進去一個空間裡再隨機抽取,在不重複的狀況下每一個數抽到的機率都是一樣的。 在程式中也有這個玩法哦!但是說是這麼說到底怎麼用,咱們來看看: 語法: 在隨機抽取的時
資料集中除了陣列這個外,還有另一個好幫手就是List,它跟陣列很像,我們直接來看一下怎麼用: 它的語法: 1.給予值 (1)單一新增: (2)陣列式新增: 例子: 2.取值 (1)foreach迴圈方式 (2)單一取值 3.取得List有多少個內容值 4.排序 想要反轉就再使用↓ 5.插入 6.複製
陣列運用、擷取字串   對於陣列裡的內容值除了把資料存進去外,若想要知道陣列維度、陣列大小、複製陣列的值到另一個陣列中、清除陣列的值等等的相關處理,甚至比較常用到的可能還需要做資料排列、查找資料等等,此時C#有一些屬性方法可以幫助到我們,不用寫複雜的迴圈,來看一看有哪些吧~
  陣列就陣列怎麼還有不規則陣列呢?一維陣列就一排沒什麼大問題,但是!二維以上的多維陣列不知道有沒有發現大家的長度都是一致的?用三維來說組合起來的箱子不是四邊形,就是長(正)方體,那麼不規則陣列組合起來就不一定是完整的長(正)方體了,可能就會出現東缺一腳、西缺一角的情形發生,我們用三維的圖形來表示:
上一篇的一維陣列是指一排箱子,二維陣列就會往上疊變成兩排箱子,那麼三維呢?並不是再往上疊三排箱子就是三維而是又多了後面深度,也就是三個維度。用圖示: 這樣有比較懂嗎?!沒關係!之前用箱子,那現在用數學來說明好了, 一維是x軸(長度) 二維是xy軸(長度+高度) 三維是xyz軸(長度+高度+深度) 四
在使用陣列時一開始也是需要做宣告的,那麼這次說的內容是一維陣列,因此一維陣列宣告內容包括:資料型態、陣列名稱、以及陣列的大小。那麼我們就來看一下它的語法是如何的: 說明:等號左邊是做宣告,而右邊是做建立的動作。 一、初始值設定 那麼初始值要怎麼設定呢?這邊有幾種方法,用例子帶大家來看一看: 1.有給
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
這一節談的是用物件導向程式設計(object-oriented programming, OOP)的方式來實作隨機漫步。
※ class類別 什麼是class? class是創造consturctor function時的語法糖,本質上與使用function創造物件(object)的行為沒有不同。 class的作用: 用來定義、描述要創造的物件(object)具有那些屬性、行為的一個表達式。就像是「車子的設計圖
※ Object(物件) & Constructor Function(建構式函式) Object(物件)是什麼? 物件是一種「可以將資料、程式碼包含在其中」的資料結構。 Object(物件)的兩種創造方式: 匿名物件:直接使用"{}"。沒有特別的名字,直接從Object中繼承過來的一個物件
※ OPP(Object-oriented programming)簡介 什麼是OPP? OPP是一種軟體開發的風格方式。 是一種撰寫程式時的思考模式。 OPP的目的: 企圖將電腦世界的資料類比到現實中「物件」的概念。 將函數化的資料處理方式用類比到現實世界的互動關係,來簡化思考的難度。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
在使用類別創建實例時,輸入的屬性的都要定義好資料型態,例如dog_1 = Dog("Buddy", 3),有沒有輸入一段字串讓他自己判斷的方法阿? 有的就是使用classmethod: classmethod 是一種裝飾器,它用於定義類別方法。類別方法與實例方法不同,它們被綁定到類別而不是實例。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
這一節談的是用物件導向程式設計(object-oriented programming, OOP)的方式來實作隨機漫步。
※ class類別 什麼是class? class是創造consturctor function時的語法糖,本質上與使用function創造物件(object)的行為沒有不同。 class的作用: 用來定義、描述要創造的物件(object)具有那些屬性、行為的一個表達式。就像是「車子的設計圖
※ Object(物件) & Constructor Function(建構式函式) Object(物件)是什麼? 物件是一種「可以將資料、程式碼包含在其中」的資料結構。 Object(物件)的兩種創造方式: 匿名物件:直接使用"{}"。沒有特別的名字,直接從Object中繼承過來的一個物件
※ OPP(Object-oriented programming)簡介 什麼是OPP? OPP是一種軟體開發的風格方式。 是一種撰寫程式時的思考模式。 OPP的目的: 企圖將電腦世界的資料類比到現實中「物件」的概念。 將函數化的資料處理方式用類比到現實世界的互動關係,來簡化思考的難度。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
在使用類別創建實例時,輸入的屬性的都要定義好資料型態,例如dog_1 = Dog("Buddy", 3),有沒有輸入一段字串讓他自己判斷的方法阿? 有的就是使用classmethod: classmethod 是一種裝飾器,它用於定義類別方法。類別方法與實例方法不同,它們被綁定到類別而不是實例。