1. 程式人生 > >C# 學習筆記-面向物件基礎語法

C# 學習筆記-面向物件基礎語法

面向物件的概念

  • 面向過程:面向的是完成這件事的過程,強調的是完成這件事的動作;
    把大象塞進冰箱裡:
    1、開啟冰箱;
    2、把大象塞進去;
    3、關閉冰箱門。

    如果我們用面向過程的思想來解決這件事兒,當執行這件事的人不同的時候,我們需要為每個不同的人量身定做解決事情的方法。

  • 面向物件:找個物件幫你做事兒?
    面向物件的好處是可以寫出比較通用的程式碼。

  • 面向過程與面向物件的區別
    來自知乎:https://www.zhihu.com/question/28790424/answer/42102986
    面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候一個一個依次呼叫就可以了。面向物件是把構成問題的事物分解成多個物件,建立物件的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。
    以五子棋為例,面向過程的設計思路就是首先分析問題的步驟:
    1、開始遊戲;
    2、黑子先走;
    3、繪製畫面;
    4、判斷輸贏;
    5、輪到白子;
    6、繪製畫面;
    7、判斷輸贏;
    8、返回步驟2,9;
    9、輸出最後結果。
    把上面每個步驟寫成一個函式,問題就解決了。

而面向物件的設計則是從另外的思路來解決問題。整個五子棋可以分為:
1、黑白雙方,這兩方的行為是一模一樣的
2、棋盤系統,負責繪製畫面;
3、規則系統,負責判定諸如犯規、輸贏等;

第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子佈局的變化,棋盤物件接收到了棋子的變化就要負責在螢幕上面顯示出這種變化,同時利用第三類物件(規則系統)來對棋局進行判定。

  • 靜態與非靜態的區別
    1、在非靜態類中,既可以有例項成員,也可以有靜態成員
    2、在呼叫例項成員的時候,需要使用物件名.例項成員
    在呼叫靜態成員的時候,需要使用類名.靜態成員名
    總結:靜態成員必須使用類名去呼叫,而例項成員使用物件名呼叫。
    靜態成員只能訪問靜態成員,不允許訪問例項成員。
    例項函式中,既可以使用靜態成員,也可以使用例項成員。

使用:
1) 如果想要類當做一個“工具類”去使用,這個時候可以考慮將類寫成靜態類。//避免建立物件。
2) 靜態類在整個專案中資源共享。//

  • 靜態儲存區

    釋放資源。GC Garbage Collection 垃圾回收器。
    選中屬性,Ctrl+R,E可以自動生成屬性的程式碼。

    這裡寫圖片描述

  • 建構函式
    作用:幫助我們初始化物件
    是一個特殊的方法:
    1)建構函式沒有返回值,連void也不能寫,而且必須是public訪問修飾符
    2)建構函式的名稱必須與類名一樣
    3)在建立物件的時候呼叫這個方法
    new 關鍵字:
    1)在記憶體中開闢了一塊空間
    2)在開闢的空間中建立物件
    3)呼叫建構函式
    建構函式可以過載

  • this關鍵字
    1)代表當前類的物件
    2)在類當中顯式的呼叫本類的建構函式//過載建構函式時,避免冗餘程式碼

 //建構函式,欄位,屬性,方法
        public Student(string name,int age,char gender,int chinese,int math,int english)
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
            this.Chinese = chinese;
            this.Math = math;
            this.English = english;
        }

        public Student(string name,int chinese,int math,int english):this(name,0,'c',chinese,math,english)
        {

        }
  • 解構函式
    ~Student():~加類名
    當程式結束的時候,解構函式才執行,幫助我們釋放資源。
    與GC的區別是解構函式釋放資源的速度比較快。