明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java咖啡館——大話面向?qū)ο螅?)

[摘要]雖然結(jié)構(gòu)化程序設(shè)計(jì)使得程序員世界觀經(jīng)歷了巨大變革,行之有效地解決了軟件開發(fā)中的許多問題,然而,結(jié)構(gòu)化程序設(shè)計(jì)并不能完全解決軟件危機(jī),人們?nèi)匀豢释a(chǎn)效率更高、更可靠、易維護(hù)、易管理的開發(fā)思想和開發(fā)方...

    

  雖然結(jié)構(gòu)化程序設(shè)計(jì)使得程序員世界觀經(jīng)歷了巨大變革,行之有效地解決了軟件開發(fā)中的許多問題,然而,結(jié)構(gòu)化程序設(shè)計(jì)并不能完全解決軟件危機(jī),人們?nèi)匀豢释a(chǎn)效率更高、更可靠、易維護(hù)、易管理的開發(fā)思想和開發(fā)方法。

  實(shí)際上,人們認(rèn)識(shí)世界,是有一些基本的法則的:

  ?區(qū)分事物及其屬性,如自行車和車子的顏色。
  ?區(qū)分整體對(duì)象及其組成部分,如區(qū)分自行車和車輪。
  ?不同對(duì)象類的形成及其區(qū)分,如山地自行車和兩人休閑車雖然有相當(dāng)?shù)膮^(qū)別,但都屬于自行車這個(gè)類型。

  心理學(xué)研究表明,把客觀世界由許多對(duì)象組成,對(duì)象具有其屬性和行為,之間存在著各種聯(lián)系,這樣能夠更好的刻畫問題域,也更接近人類的自然思維方式。這就是面向?qū)ο蟪绦蜷_發(fā)思想的由來。

  對(duì)象的概念最早出現(xiàn)于五十年代人工智能的早期著作中,而OO(面向?qū)ο?的實(shí)際發(fā)展始于1966年的Kisten Nygaard和Ole-Johan Dahl開發(fā)的Simula語言。正如名字昭示的,Simula可以模擬客觀世界。比如在著名的銀行出納問題中,你可以創(chuàng)建若干個(gè)出納員對(duì)象,若干個(gè)客戶對(duì)象,還有若干錢對(duì)象以及交易對(duì)象(即把存款、提款等交易動(dòng)作看成一個(gè)對(duì)象)?? 這個(gè)世界是由對(duì)象組成的。所有出納員對(duì)象,除了各自的狀態(tài)不同,都是屬于的出納員這個(gè)抽象類別。出納員對(duì)象和客戶對(duì)象之間通過消息傳遞進(jìn)行交互,并且最終生成若干個(gè)交易對(duì)象,而交易對(duì)象可以操縱錢對(duì)象,完成存款或者提款的動(dòng)作。

  你看,這個(gè)銀行柜臺(tái)世界,是不是完全可以由對(duì)象模擬呢?從而,面向?qū)ο笤O(shè)計(jì)程序,主要就是設(shè)計(jì)抽象的類。

  面向?qū)ο蟪绦蛟O(shè)計(jì)思想是一個(gè)里程碑。Alan Kay設(shè)計(jì)了世界上第一個(gè)完全面向?qū)ο蟮恼Z言Smalltalk并成為圖靈獎(jiǎng)得主,Bjarne Stroustrup明智地把面向?qū)ο蠛妥盍餍械腃語言結(jié)合而開發(fā)了有史以來取得最大成功的C++語言,Anders Hejlsberg把PASCAL的面向?qū)ο蟀姹綩bject PASCAL結(jié)合構(gòu)件的思想開發(fā)出Windows平臺(tái)上最優(yōu)秀的快速程序開發(fā)(RAD)工具之一Delphi,James Gosling結(jié)合Internet背景開發(fā)了本咖啡館賴以謀生計(jì)的Java語言,Bill Gates把.Net體系結(jié)構(gòu)完全構(gòu)筑在面向?qū)ο笾稀?/p>

  黃糖故事 “面向?qū)ο蟆迸c“物件導(dǎo)向”

  閱讀臺(tái)灣技術(shù)作家的文章時(shí)經(jīng)常會(huì)遇到“物件導(dǎo)向”一詞。實(shí)際上,這是港澳臺(tái)地區(qū)的計(jì)算機(jī)科學(xué)家對(duì)“Object Oriented”的翻譯,與我們所說的“面向?qū)ο蟆笔且换厥虑。不過,如果仔細(xì)從OO的理念品評(píng)一下兩者的味道,似乎“物件導(dǎo)向”這個(gè)翻譯更雅,更原汁原味。

  雖然面向?qū)ο笾皇菑恼Z法上引入為面向?qū)ο蠓⻊?wù)的封裝、繼承、多態(tài)等概念,但是必須看到,OO并非一種特殊的規(guī)定或者行業(yè)規(guī)范,而是一個(gè)優(yōu)秀的理念,學(xué)習(xí)Java,應(yīng)該把OO當(dāng)作指導(dǎo)思想。