iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 14
0

本篇擷取重點:

  • 物件
  • 定義類別語法
    • 如何建立物件
    • 如何存取資料成員
    • 如何存取方法成員

一、物件

一般物件導向程式最重要的特點,就是所有程式執行時期的功能,都需要由物件提供,所以程式需要有各種物件,每種物件負責執行不同的功能。但是這些程式中的「物件」,並非憑空建立出來;必須透過事先設計好的「類別 (Class) 」,才可以根據類別的定義建立物件實體,執行物件提供的功能。

程式中所謂的「物件」,指的就是事先定義好的執行單元,可以用來執行特定的指令,並且維護本身的狀態。為了要讓程式可以取得或設定物件的狀態,物件會提供屬性供程式使用;為了讓程式可以透過物件執行某種特定的功能,所以物件也會提供程式可以叫用的方法;而當物件狀態改變時,也可能會觸發特定的事件

「物件」在程式中的另外一個特點,就是每一個物件的實體 (instance) 都有自己的狀態,不會互相影響。每一個物件實體建立之後,根據不同的屬性值設定封裝不同的狀態,因此,每個物件在執行時所產生的效果也就跟著不一樣。

資料來源:
https://www.delightpress.com.tw/bookRead/skup00007_read.pdf


二、定義物件語法

  1. 如何建立物件:
    https://ithelp.ithome.com.tw/upload/images/20190912/2012005623YdToaiBn.jpg

舉個例子,我們建立一個屬於 NBClass 類別的 sun 物件實體,該物件擁有 NBClass 類別所具有的欄位、屬性和方法。

  • 宣告同時建立物件實體
NBClass sun = new NBClass();
  • 分兩行敘述:
NBClass sun;  //宣告物件  
sun = new NBClass(); //建立物件實體

  1. 如何存取資料成員
    https://ithelp.ithome.com.tw/upload/images/20190915/20120056Vnez3cqF3W.jpg

舉個例子,將 price 資料成員設為 public 公用層級,

class NBClass
    {
        public int price;
    }

可以直接使用 sun.price 存取該資料成員。

NBClass sun = new NBClass();
sun.price=25000;  //設定售價為25000 
Console.WriteLine(“sun筆電單價 : {0} ", sun.price); //取得售價

==================================================================
貼心小補充:

資料成員若宣告成 public,資料成員易被外界更改而產生不可預期結果,這樣做並不嚴謹。我們應透過統一管道存取資料成員,使資料成員受保護,達資訊隱藏目的。我們將於下個主題中,告訴你如何解決這個問題。

==================================================================


  1. 如何存取方法成員:

https://ithelp.ithome.com.tw/upload/images/20190915/20120056bS4nO3DyhE.jpg

為讓資料成員受保護以達資訊隱藏目的,

我們會將資料成員宣告成 private,再另設方法成員來設定及讀取。如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20190915/20120056WgSg8gpyYu.jpg


  • 透過 setPrice()方法設定售價

資料成員宣告成 public時,

sun.price=25000; //原本

資料成員宣告成 private時,

sun.setPrice(25000); //現在

因price 設成 private 無法參用,需透過setPrice()方法成員設定。


  • 透過 getPrice() 方法取得售價

資料成員宣告成 public時,

sun.price; //原本

資料成員宣告成 private時,

sun.getPrice(25000); //現在

因price 設成 private 無法參用,需透過getPrice()方法成員讀取


其他參考資料:
https://mr117119.wordpress.com/2012/11/04/%E6%8A%80%E8%A1%93%E9%A1%9E-c-%E5%AD%B8%E7%BF%92%E8%AA%8C-c%E9%9D%A2%E8%A9%A6%E8%80%83%E9%A1%8C-%E7%89%A9%E4%BB%B6%E3%80%81%E9%A1%9E%E5%88%A5%E3%80%81%E6%96%B9%E6%B3%95%E5%A4%9A%E8%BC%89/
https://tjchanster.pixnet.net/blog/post/13784022-oop%E6%B7%BA%E8%AB%87%EF%BC%88%E8%BB%9F%E9%AB%94%E9%9D%A9%E5%91%BD-%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%EF%BC%89



上一篇
[ASP.NET] [C#] 物件導向 - 十分鐘聽我說 類別 (二)
下一篇
[ASP.NET] [C#] 物件導向 - 繼承者們,線上看 XDD
系列文
ASP.NET Web Form 入門30天30

尚未有邦友留言

立即登入留言