程序設計中中數據類型_函數_類_圖形界面的理解

程序設計中中數據類型_函數_類_圖形界面的理解

1.爲什麼需要有數據類型?
    數據類型的存在是爲了量化現實中的事物,如描述一個人,可以從一個人的屬性來進行描述,如年齡,身高,體重,姓名等。在計算機中表示出來就需要有具體的數據類型。

    數據類型是值的集合以及在這個幾何上操作的總稱。數據類型包含了數據的取值範圍,存儲方式,以及進行的運算。如對整數進行加減乘除取餘數運算是有意義的。對整數和對字符串進行加號+運算是不同的操作。
        簡單說來,數據類型的存在就是爲了將現實中的事物表示在計算機中存儲的具體實現。或者說,
        對上面的人的例子,則實現爲:
        ----記住:數據刻畫了對要處理問題的抽象(數據是事物的屬性抽象),並映射到計算機中。
      

         int  age;
        float tall;
        float(double) weight;
        char name[20];


        如果描述出現實中的一個人,使用結構體爲:
 

        struct Person
        {
            int  age;
            float tall;
            float(double) weight;
            char name[20];
        };

2.爲什麼需要函數?
    理解1:事物的有兩種屬性,靜態屬性和動態屬性。靜態屬性用來描述事物,如一個人年齡(age),身高(tall),體重(weight)。一個盒子(box)有長(long)寬(width)高(tall)。但是事物也有動態屬性,如一個人(person)可以奔跑,可以說話。一個箱子(box)可以裝東西,但是不能奔跑。如果進行描述一個事物的靜態屬性顯然是不夠的。那麼就需要描述動態屬性--使用函數描述。--動態屬性是建立在靜態屬性的基礎上的。

    理解2:函數是一種變換,是一個輸入數據,加工後獲取輸出數據的黑盒子。函數是建立在數據(事物屬性)的基礎上,如一個時鐘可以顯示時間,那麼他有時分秒(hour minute second)這三個屬性。如對人按照年齡從大到小進行排序,是建立在一個人有年齡這個屬性的基礎上。比較年齡大小的函數如下:

        

bool CompareAge(int age1,int age2)
        {
            if(age1>age2)
            {
                return True;
            }
            else
            {
                return False;
            }
        }

    顯示時間的函數如下:
 

       void ShowTime(int hour,int minute,int second)
        {
            cout<<"現在時間是:"<<hour<<":"<<minute<<":"<<second<<endl;
        }


3爲什麼需要類(class)?
    上面用於描述一個事物的數據和函數是分開存儲的。並沒有體現出一個整體的思想,如盒子裝東西,時鐘顯示時間,和它們的靜態屬性之間並沒有直接的關係。

    重要:我們可以把一個事物的靜態屬性(抽象的數據類型)和可以在這些上面進行的操作(動態屬性--函數)封裝在一個類裏面,用於對現實中的事物進行抽象。

        如對於人 類
      

  class Person
        {
            public:
                void Speak()
                {
                    cout<<"我是人,我會說話"<<endl;
                }
                void run()
                {
                    cout<<"我是人,我可以跑步"<<endl;
                }
            private:
                int age;
                float tall;
                float weight;
                char name[20];
        };

        對於時鐘類
        

class Clock
        {
            public:
                void ShowTime(int hour,int minute,int second)
                {
                    cout<<"現在時間是:"<<hour<<":"<<minute<<":"<<second<<endl;
                }
            private:
                int hour;
                int minute;
                int second;
        };

        對於箱子類:
      

  class Box
        {
            public:
                void MyFunction()
                {
                    cout<<"我是箱子,我可以裝東西"<<endl;
                }
            private:
                float long;
                float width;
                float tall;
        };

4.爲什麼需要類庫?(library)
    爲了代碼的複用,我們不是從頭開始設計一個類,而是在別人封裝好的類庫的技術上實現自己的功能。如在MFC中調用相應的CWND類來實現窗口,調用CDialog類來實現一個具體的對話框。


5.圖形用戶界面類是怎麼設計的?---重要思想理解
    理解1.以MFC中對話框程序進行說明,給每一個對話框界面窗口關聯一個類,對話框界面窗口中的每一個控件(如button)都相當於類中的一個屬性,(在做mfc程序的時候需要給每個控件關聯一個變量(CButton  m_button),原因在這裏),這樣可以在代碼裏面對控件進行操作,如進行數據讀取和更新等。

    對應關係如下
        對話框==類
        對話框中的控件===靜態屬性--關聯一個變量(其實是一個類對象,包含靜態屬性和動態屬性,如名字,id,雙擊操作等)
        控件的操作,如鼠標點擊--變量的動態屬性

    如qt中,通過UI調用成員屬性的方式調用對話框中的控件進行初始化

    理解2:
        mfc每一個控件都可以當作一個類,控件也可以當作一個類,對話框類中包含一個按鈕類--這裏複習類的組合(在一個類中包含另一個類的定義)。
        一個Dialog類中包含一個button類,類之間的組合,一個大容器(container)中包含一個小容器。

    總結:圖形界面也是類,複雜的圖形界面可以是類的組合定義,(一個類中包含另一個類對象),給每個控件關聯一個變量相當於由類創建一個類對象,這樣就可以調用這個類的動態屬性(方法-成員函數)實現自己的功能。如窗口的顯示和隱藏,按鈕的雙擊等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章