Java咖啡館——大話面向對象(2)
發表時間:2023-08-09 來源:明輝站整理相關軟件相關文章人氣:
[摘要]雖然結構化程序設計使得程序員世界觀經歷了巨大變革,行之有效地解決了軟件開發中的許多問題,然而,結構化程序設計并不能完全解決軟件危機,人們仍然渴望生產效率更高、更可靠、易維護、易管理的開發思想和開發方...
雖然結構化程序設計使得程序員世界觀經歷了巨大變革,行之有效地解決了軟件開發中的許多問題,然而,結構化程序設計并不能完全解決軟件危機,人們仍然渴望生產效率更高、更可靠、易維護、易管理的開發思想和開發方法。
實際上,人們認識世界,是有一些基本的法則的:
?區分事物及其屬性,如自行車和車子的顏色。
?區分整體對象及其組成部分,如區分自行車和車輪。
?不同對象類的形成及其區分,如山地自行車和兩人休閑車雖然有相當的區別,但都屬于自行車這個類型。
心理學研究表明,把客觀世界由許多對象組成,對象具有其屬性和行為,之間存在著各種聯系,這樣能夠更好的刻畫問題域,也更接近人類的自然思維方式。這就是面向對象程序開發思想的由來。
對象的概念最早出現于五十年代人工智能的早期著作中,而OO(面向對象)的實際發展始于1966年的Kisten Nygaard和Ole-Johan Dahl開發的Simula語言。正如名字昭示的,Simula可以模擬客觀世界。比如在著名的銀行出納問題中,你可以創建若干個出納員對象,若干個客戶對象,還有若干錢對象以及交易對象(即把存款、提款等交易動作看成一個對象)?? 這個世界是由對象組成的。所有出納員對象,除了各自的狀態不同,都是屬于的出納員這個抽象類別。出納員對象和客戶對象之間通過消息傳遞進行交互,并且最終生成若干個交易對象,而交易對象可以操縱錢對象,完成存款或者提款的動作。
你看,這個銀行柜臺世界,是不是完全可以由對象模擬呢?從而,面向對象設計程序,主要就是設計抽象的類。
面向對象程序設計思想是一個里程碑。Alan Kay設計了世界上第一個完全面向對象的語言Smalltalk并成為圖靈獎得主,Bjarne Stroustrup明智地把面向對象和最流行的C語言結合而開發了有史以來取得最大成功的C++語言,Anders Hejlsberg把PASCAL的面向對象版本Object PASCAL結合構件的思想開發出Windows平臺上最優秀的快速程序開發(RAD)工具之一Delphi,James Gosling結合Internet背景開發了本咖啡館賴以謀生計的Java語言,Bill Gates把.Net體系結構完全構筑在面向對象之上……
黃糖故事 “面向對象”與“物件導向”
閱讀臺灣技術作家的文章時經常會遇到“物件導向”一詞。實際上,這是港澳臺地區的計算機科學家對“Object Oriented”的翻譯,與我們所說的“面向對象”是一回事情。不過,如果仔細從OO的理念品評一下兩者的味道,似乎“物件導向”這個翻譯更雅,更原汁原味。
雖然面向對象只是從語法上引入為面向對象服務的封裝、繼承、多態等概念,但是必須看到,OO并非一種特殊的規定或者行業規范,而是一個優秀的理念,學習Java,應該把OO當作指導思想。