抽象過程
- 概念
????所有編程語言都提供抽象機制沼瘫,人們所能解決問題的復(fù)雜性直接取決于抽象的類型和質(zhì)量。這里類型指的是抽象的是什么 - 應(yīng)用歷程
????大致分為以下幾個- 匯編語言
????匯編語言是對底層機器的輕微抽象。 - 所謂“命令式“語言
????對匯編語言的抽象稽煤,但他所做的抽象要求在解決問題是要基于計算機的結(jié)構(gòu)岳服,而不是基于要解決的問題的結(jié)構(gòu)來考慮。
????程序員需要建立起在“機器模型”和“實際待解問題的模型”之間的關(guān)聯(lián)吆视。
????解問題是指位于“解空間”內(nèi)典挑,對問題建模的地方,例如計算機啦吧。
????實際待解問題的模型是指位于“問題空間之內(nèi)您觉,也就是問題存在的地方,例如一項業(yè)務(wù)”授滓。 - 早期編程語言
????只針對解問題建模琳水,例如LISP與APL,考慮世界的某些特定視圖般堆。PROLOG則將所有問題都轉(zhuǎn)換為決策鏈在孝。 - 面向?qū)ο蠓绞骄幊陶Z言
????將問題空間之中的元素及其在解空間中的表示稱之為“對象”。
????面向?qū)ο蠓绞酵ㄟ^向程序員提供“表示問題空間中的元素的工具”而更近了一步淮摔。
????這種思想的實質(zhì)是:程序員可以通過添加新類型的對象使自身適用于某個特定給的問題私沮。
- 匯編語言
- Smalltalk的五個基本特性
- 萬物皆為對象
????將對象視為奇特的變量,他可以存儲數(shù)據(jù)和橙,還可以在自身上執(zhí)行操作仔燕。理論上可以將帶求解問題的任何概念化構(gòu)建表示為對象。 - 程序是對象的集合魔招,他們通過發(fā)送消息來告知彼此所要做的
????要想請求一個對象晰搀,就必須對該對象發(fā)送一個消息“彀撸可以把消息想想為對某個特定對象的方法的調(diào)用請求外恕。 - 每個對象都有自己的有其他對象所構(gòu)成的存儲
????換句話說,可以通過創(chuàng)建包含現(xiàn)有對象的包的方式來創(chuàng)建新類型的對象。 - 每個對象都擁有其類型
???? 每個對象都是某個類(class)的一個實例(instance)鳞疲。 每個類最重要的區(qū)別于其他類的特性就是“可以發(fā)什么樣的消息給他” - 某一特定累心過的所有對象都可以接收同樣的消息罪郊、
????“圓形”類型的對象同時也是“幾何形”類型的對象,所以一個“圓形”對象必定能接受發(fā)送給“幾何形”隊形對象的消息建丧。這就是OOP最強有力的一個概念之一“可替代性”排龄。
- 萬物皆為對象
- 總結(jié)
????對象具有狀態(tài)、行為和表示翎朱。
????這意味著每一個對象都可以擁有內(nèi)部數(shù)據(jù)(他們給出了該對象的狀態(tài))和方法(他們產(chǎn)生行為)橄维。并且每一個對象在內(nèi)存中都有一個唯一的地址。
每個對象都有一個接口
- 亞里士多德提出類型的概念
????所有的對象個都是唯一的拴曲,但同時也是具有相同的特性和行為的對象所歸屬的類的一部分争舞。 - 類與對象概述
????創(chuàng)建抽象數(shù)據(jù)類型(類)是面向?qū)ο蟪绦蛟O(shè)計的基本概念之一,類描述了具有相同特性(數(shù)據(jù)元素)和行為(功能)的對象集合澈灼,每一個對象都屬于定義了特性和行為的某個特定的類竞川。
????面向?qū)ο蠹夹g(shù)可以將大量的問題很容易的講解為一個簡單的解決方案叁熔,他所面臨的一個挑戰(zhàn)就是在問題空間的元素和解空間對象之間創(chuàng)建一對一的映射委乌。
????那么如何定義有用的對象呢?必須有某種方式產(chǎn)生對對象的請求荣回,是對象完成各種任務(wù)遭贸。而每個對象都只能滿足某些請求,這些請求有借口(interface)所定義心软,決定接口的便是類型壕吹。
????接口決定了對某一特定對象所能發(fā)出的請求。當(dāng)然也就必須有滿足這些請求的代碼删铃,這些代碼與隱藏的數(shù)據(jù)一起構(gòu)成了實現(xiàn)耳贬。當(dāng)想對象發(fā)送請求時,與之相關(guān)聯(lián)的實現(xiàn)就會被調(diào)用猎唁。這個過程為: 向某個對象“發(fā)送消息(產(chǎn)生請求)”咒劲,這個對象便知道此消息的目的,然后執(zhí)行對應(yīng)的程序代碼诫隅。