面向对象,什么是面向对象?

2020-06-08 11:02发布

8条回答

究竟什么是面向对象?这恐怕是一个比较深奥的问题。


在了解面向对象之前,需要有一点基础的编程经验,如果是零基础也没关系(因为本文不会涉及到java程序的代码)试着去理解并接受这种程序设计思想,可以了解到对象的重要性,以及怎么样使用对象进行设计。

所有编程语言都提供抽象机制,即人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。汇编语言是对底层机器的轻微抽象。接着出现的许多所谓“命令式”语言(如C)都是对汇编语言的抽象,但是它们所作的主要抽象仍要求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考虑。程序员必须建立起在机器模型(位于“解空间”内,这是你对问题建模的地方,例如计算机)和实际待解问题的模型(位于“问题空间”内,这是问题存在的地方,例如一项业务)之间的联系。


面向对象方式通过向程序员提供表示问题空间中的元素的工具更进了一步。这种表示方式非常通用,使得程序员不会受限于任何特定类型的问题。我们将问题空间中的元素及其在解空间中的表示称为“对象”。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。因此,当你在阅读描述解决方案的代码的同时,也是在阅读问题的描述。相比于面向过程的语言,这是一种更灵活和更强有力的语言抽象。故而,OOP允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题。但是它仍然与计算机有联系:每个对象看起来有点像一台微型计算机——它具有状态(属性),还具有操作(方法),用户可以要求对象去执行这些操作(调用方法)。如果要对现实世界中的对象作类比,那么说它们都具有特性和行为似乎不错。


面向对象其实是现实世界模型的自然延伸。现实世界中的任何实体都可以被看作对象。对象之间通过消息相互作用。另外,现实世界中的任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心、以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为“程序=算法+数据”;面向对象编程语言为“程序=对象+消息”。


“这个世界是由什么组成的?”这个问题如果让不同的人来回答,会得到不同的答案。如果回答该问题的人是一个化学家,他也许会告诉你:“还用问吗?这个世界是由分子、原子、离子等化学物质组成的。”如果他是一个画家,他也许会告诉你:“这个世界是由不同的颜色所组成的。”但如果让一个分类学家来考虑这个问题就有趣多了,他会告诉你:“这个世界是由不同类型的物与事所构成的。”好!作为面向对象的程序员,我们要从分类学家的角度去考虑问题:“这个世界是由动物、植物等组成的。动物又分为单细胞动物、多细胞动物、哺乳动物等,哺乳动物又分为人、大象、老虎......就这样分下去了!”


一周热门 更多>