所有編程語言的最終目的都是提供一種“抽象”方法。一種較有爭議的說法是:解決問題的復(fù)雜程度直接取決于抽象的種類及質(zhì)量。
編程語言發(fā)展歷史簡介:
機(jī)器語言:是一種指令集的體系,這種指令集毅桃,稱機(jī)器碼(machine code),是電腦的CPU可直接解讀的數(shù)據(jù)准夷。例如钥飞,0000 代表 加載(LOAD)
匯編語言:對基礎(chǔ)機(jī)器的少量抽象,是匯編指令集衫嵌、偽指令集和使用它們規(guī)則的統(tǒng)稱读宙,使用具有一定含義的符號為助憶符,用指令助憶符楔绞、符號地址等組成的符號指令稱為匯編格式指令结闸。例如,mov b,a 代表賦值酒朵,把a的值賦給b
命令式語言:是基于動作的語言桦锄,以馮諾依曼計算機(jī)體系結(jié)構(gòu)為背景,機(jī)器語言和匯編語言是最早的命令式語言蔫耽。用命令式程序設(shè)計語言編寫程序结耀,就是描述解題過程中每一步的過程,程序的運行過程就是問題的求解過程匙铡,因此也稱為過程式語言图甜。Fortran、ALGOL慰枕、COBOL具则、C、Ada具帮、Pascal等都是命令式程序設(shè)計語言。與匯編語言相比低斋,這些語言已有了長足的進(jìn)步蜂厅,但它們的抽象原理依然要求我們著重考慮計算機(jī)的結(jié)構(gòu),而非考慮問題本身的結(jié)構(gòu)膊畴。例如掘猿,C語言,int x,y,z; printf("請輸入xyz\n"); scanf ("%d%d%d",&x,&y,&z);
面向?qū)ο笳Z言:是一類以對象作為基本程序結(jié)構(gòu)單位的程序設(shè)計語言唇跨,指用于描述的設(shè)計是以對象為核心稠通,而對象是程序運行時刻的基本成分衬衬。Smalltalk、C++改橘、Java滋尉、C#等都是OOP語言。OOP 允許我們根據(jù)問題來描述問題飞主,而不是根據(jù)方案狮惜。
面向?qū)ο蟪绦蛟O(shè)計方法是什么樣的
(1) 所有東西都是對象÷凳叮可將對象想象成一種新型變量碾篡;它保存著數(shù)據(jù),但可要求它對自身進(jìn)行操作筏餐。理論上講开泽,可從要解決的問題身上提出所有概念性的組件,然后在程序中將其表達(dá)為一個對象魁瞪。
(2) 程序是一大堆對象的組合穆律。通過消息傳遞,各對象知道自己該做些什么佩番。為了向?qū)ο蟀l(fā)出請求众旗,需向那個對象“發(fā)送一條消息”。更具體地講趟畏,可將消息想象為一個調(diào)用請求贡歧,它調(diào)用的是從屬于目標(biāo)對象的一個子例程或函數(shù)。
(3) 每個對象都有自己的存儲空間赋秀,可容納其他對象利朵。或者說猎莲,通過封裝現(xiàn)有對象绍弟,可制作出新型對象。所以著洼,盡管對象的概念非常簡單樟遣,但在程序中卻可達(dá)到任意高的復(fù)雜程度。
(4) 每個對象都有一種類型身笤。根據(jù)語法豹悬,每個對象都是某個“類”的一個“實例”∫狠“類”(Class)是“類型”(Type)的同義詞瞻佛。一個類最重要的特征就是“能將什么消息發(fā)給它?”娇钱。
(5) 同一類所有對象都能接收相同的消息伤柄。這實際是別有含義的一種說法绊困,大家不久便能理解。