首先不得不提的一個概念是, 類 與 對象; 這在 任何面向對象的語言中, 都是一個優先度極高的概念, 我首先瞭解到的概念則是: 類是對象的集合, 是對象的抽象化, 對象是類的實例, 是類的具象化. 在歸納總結中, 將具有某些共同屬性 及 方法的概念, 實物, 進行抽象化, 就是在 java 中常常談 ...
首先不得不提的一個概念是, 類 與 對象;
這在 任何面向對象的語言中, 都是一個優先度極高的概念, 我首先瞭解到的概念則是: 類是對象的集合, 是對象的抽象化, 對象是類的實例, 是類的具象化. 在歸納總結中, 將具有某些共同屬性 及 方法的概念, 實物, 進行抽象化, 就是在 java 中常常談到的類;
而在事實上, 我也是這樣做的. 如果要定義一個人:
就屬性而言, 有 name, age, sex; 就方法而言, 有 eat, sleep, work 等等;
但屬性本身的 類型定義, 方法的參數以及返回值定義, 更多的是從一種經驗主義的角度出發, 來為它們進行定義, 將類與實際生活相聯繫, 進而完成定義. 我只是定義, 卻不思考為什麼這樣定義, 如果需要作出必要的優化調整, 往往也無從下手, 類與類之間的組合依賴聚合等等關係, 也是從經驗主義出發, 說到底, 是將程式 , 類的構架本身作為一種現實場景來看待, 使用.
但在 演算法4 中, 卻從另一個角度解釋了類:
數據類型指的是一組值和一組對這些值的操作的集合, 定義和使用數據類型的過程, 又被稱為數據抽象, 而在數據抽象中的一個基礎概念: 對象是能夠承載數據類型的值得實體.
由此擴展開來, 其實從小就在一直培養, 灌輸著這樣一種概念. 在數學中, 會接觸到 : 整數, 正數, 負數, 小數, 未知數 種種概念, 而後會學習到各種各樣的 函數.
稍稍分析則會發現:
數本身就擁有值, 而對不同的數, 我們定義了不同的操作, 以及對這些相應的操作擁有不同的結果(返回值). 正數: 可以 + - * / 對這些不同的操作, 會有不同的結果, 就像在 java中調用不同的方法, 取到不同的返回值. 對於 負數, 我們又額外定義了一條操作, 兩個負數相乘, 結果為正, 對 0 又規定了 0 不能作為除數, 這種過程本身就是一種數據類型的定義, 用語言上的描述將數據類型可以進行的操作, 操作的規則進行進一步的限制與定義. 而之前卻並沒有意識到這樣的聯繫, 有所不同的是, 在編程以前, 大多是使用數據類型, 賦予數據類型最基本的屬性: 值, 並使用相應的函數操作這些值, 僅此而已.
而在編程的過程中, 由使用者變成了造物主, 我們自己定義並使用數據類型, 由我們本身來定義 它的屬性, 定義它的方法, 由方法來限定數據類型的功能, 在使用數據類型的時候, 我們的註意力集中在API描述的操作上而不會關心數據的表示; 在實現抽象數據類型時, 我們的註意則集中在數據本身, 並實現對數據的各種操作.
數據類型指的是一組值, 和對這些值操作的集合.