iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Software Development

C#世界初探險系列 第 17

2022鐵人賽 Day 17 物件/類別介紹

  • 分享至 

  • xImage
  •  

嗨嗨~大家好啊
我們慢慢地要進入物件導向的部分啦~
在學習物件導向前我們要先簡單的介紹一下
在早期物件導向(Object Oriented)觀念未成熟之前,軟體開發大都使用程序導向(Procedure Oriented)的觀念來設計程式。
程序導向主要是採 Divide-and-Conquer來解決問題。將大問題分割成許多小問題,若小問題還是很複雜,那就再分割。若將這些小問題處理後,大問題不就解決了嗎?由於程序導向將資料和所使用的程序分開思考,程式取得資料,經處理後再將資料回存,資料是被動的,如果當程式需求越來越大時,資料和方法間相依的複雜度增加,導致程式的整合、維護和擴充的難度都會增加。所以程序導向初期開發數度快速,但越到開發後期,開發數度會因此減緩。
物件導向是另一種程式設計方法,是將資料和方法一併思考並彼此封裝在一起,成為一個物件。換句話說,他按照人類真實的想法來分析和解決問題,不需要經過任何轉換就可以讓我們更容易於瞭解和設計程式。
那甚麼是物件呢?在現實世界中,物件就是東西、物體。如:人是物件、車是物件,每個物件都有其對應的特徵跟行為,所以物件導向必須先對物件的特徵跟行為加以分類,物件特徵以屬性來描述,物件行為以方法(Methods)描述,並用程式碼來加以模擬吽。所以物件就是指具有屬性和方法的資料,傳統資料只有屬性沒有方法,那構成物件的要素有哪些呢?

  1. 物件具有屬性
    通常我們描述一個物件,都會針對物件的外觀特質加以描述,如:Tom的身高是180公分,Tom是物件名稱。身高是屬性名稱。物件的屬性值也可以由物件自行改變。
  2. 物件具有方法
    每個物件除了具有屬性外還會有些行為,像人會走路、車會跑,更重要的是物件之間可以透過這些行為進行互動,所以方法是物件可執行的動作,物件行為則是由物件的方法和介面所定義。
  3. 物件要有訊息與事件
    物件中的方法相當於一種物件本身行為或方法,用來處理由外界送進的訊息加以處理並回應之,每個物件之間藉由訊息來互相交流,所以訊息是物件活動的動力來源,沒有了訊息,物件只是死的、無意義的、無法運作的。其實事件也是物件的一種方法,只不過這種方法是由物件本身或其他物件來啟動執行的。
  4. 物件要能被識別
    同一類別的物件,在程式執行時必須能夠清楚識別到底是存取哪個物件的屬性或執行哪個物件的方法,否則程式執行時無法分辨出是哪個物件的屬性或方法。

再來說說啥是類別?
類別(class)是用來物件做分門別類,以數學角度來看類別就像是一個集合。所以類別是一群具有相同性質物件的集合。類別是一種設計的方法,相當於一個模板(template),物件就是根據類別的設計方法所製作出來的成品。由此可知,類別本身並不是實際的物件,類別是用來定義物件的結構,也就是用來描述這些類似物件的屬性和方法,而物件是只可使用的類別執行個體。
從程式設計的觀點看,類別只是一種抽象的資料型別,而物件則是屬於該種資料型別的實體變數。如:C#的int可以看做是整數類別,卻無法直接用int類別來做加減運算(方法),例如:

int A;        //宣告變數A是整數
int B;        //宣告變數B是整數
A = 10;       //正確
B = A + 5;    //正確
int = 20;     //錯誤

由上面的程式片段得知:類別(class)可透過宣告來衍生出物件(A&B),但類別本身卻不是物件,也不可用來執行。假設腳踏車物件跟摩托車物件都是同一類別(車子)衍生來的,但卻代表不同個體。
好啦,今天的文章就到這邊告一段落啦~
明天就進入物件導向了!
大家加油~
掰掰~


上一篇
2022鐵人賽 Day 16 區塊變數、區域變數、靜態變數和類別欄位
下一篇
2022鐵人賽 Day 18 物件導向程式設計特性
系列文
C#世界初探險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言