OO翻译与理解:
OO,Object-Oriented,业内翻译为面向对象,似乎不够直观,不能够让人快速心领神会。
再看另外两个相似的英文词汇翻译:
people-oriented,以人为本
customer-oriented 顾客为本
可以看出XXX-oriented是以 XXX 为中心,以XXX 为本的意思,所以Object-Oriented更直观的理解是以对象为中心,以对象为本的意思。
那object又是什么意思呢?
中文解释:
n. 物体; 目标; 宾语; 客体; 对象.
[e.g.] Subject and object is an essential issue in the study of philosophy. 主体和客体是哲学研究的一个重要问题。
哲学上,客体(object )是可感知或可想象到的任何事物。客体既包括客观存在并可以主观感知的事物(具体的如树木、房屋,抽象的如物价、自由),也包括思维开拓的事物 。
英文解释:
1.a tangible and visible entity,an entity that can cast a shadow.[看得到,摸得到,并且有影子的实物]
2.(computing) a discrete item that provides a description of virtually anything known to a computer[可分离项,提供了对计算机任何已知的虚拟物的描述]
[e.g.] in object-oriented programming, objects include data and define its status, its methods of operation and how it interacts with other objects[在面向对象编程中,对象包含了数据和定义它的状态、操作的方法和如何与其他对象交互]
所以,从哲学概念上理解object更加准确些,当你定义类的时候,可以通过验证是否满足哲学上object概念来判断定义的类是否合理。
OO的定义:
在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance)。
OO方法学,认为客观世界是由各种"对象"所组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,每一个对象都属于某个对象"类",都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构成的。不同对象的组合及相互作用就构成了我们要研究、分析和构造的客观系统。
OO的历史
1967年前后,OOD和SD(Structured Design,结构化设计,面向过程的设计,比如C语言) 的概念几乎同时诞生,它们分别以不同的方式来表现数据结构和算法。
最早于在60年代后期,对象作为编程实体由Simula-67语言引入思维。Simula这一语言是Ole-Johan Dahl和Kristen Nygaard在挪威奥斯陆计算机中心为模拟环境而设计的。
到70年代,施乐PARC研究所发明的Smalltalk语言将面向对象程序设计的概念定义为,在基础运算中,对对象和消息的广泛应用。Smalltalk的创建者深受Simula 67的主要思想影响,但Smalltalk中的对象是完全动态的——它们可以被创建、修改并销毁,这与Simula中的静态对象有所区别。此外,Smalltalk还引入了继承性的思想,它因此一举超越了不可创建实例的程序设计模型和不具备继承性的Simula。
直到80年代中期,Smalltalk和另外几种面向对象语言仍然只停留在实验室里。
到90年代,OOD突然就风靡了整个软件行业,大批比较实用的OOPL的涌现,例如C++、Objective-C、Object Pascal等,这绝对是软件开发史上的一次革命。1996年,UML0.9和UML0.91相继面世;1997年,Rational公司向OMG提交UML1.0标准文本,1997年11月,OMG宣布接受UML,认定为标准建模语言
到了现在,在编程方面,普遍采用语言、类库和可视化编程环境相结合的方式,例如Visual C++,Java等。面向对象的分析与设计方法已多达数十种,这些方法都各有所长,现在趋于统一。UML作为一种面向对象的建模语言,在软件产业界获得了很大的支持。