手揣网教程/技术开发/内容

Java咖啡馆——大话面向对象(2)

技术开发2023-01-22 阅读
[摘要]虽然结构化程序设计使得程序员世界观经历了巨大变革,行之有效地解决了软件开发中的许多问题,然而,结构化程序设计并不能完全解决软件危机,人们仍然渴望生产效率更高、更可靠、易维护、易管理的开发思想和开发方...

    

  虽然结构化程序设计使得程序员世界观经历了巨大变革,行之有效地解决了软件开发中的许多问题,然而,结构化程序设计并不能完全解决软件危机,人们仍然渴望生产效率更高、更可靠、易维护、易管理的开发思想和开发方法。

  实际上,人们认识世界,是有一些基本的法则的:

  ?区分事物及其属性,如自行车和车子的颜色。
  ?区分整体对象及其组成部分,如区分自行车和车轮。
  ?不同对象类的形成及其区分,如山地自行车和两人休闲车虽然有相当的区别,但都属于自行车这个类型。

  心理学研究表明,把客观世界由许多对象组成,对象具有其属性和行为,之间存在着各种联系,这样能够更好的刻画问题域,也更接近人类的自然思维方式。这就是面向对象程序开发思想的由来。

  对象的概念最早出现于五十年代人工智能的早期著作中,而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当作指导思想。


……

相关阅读