什么是面向对象?

什么是面向对象?

阅读到一本书叫《程序员的自我修养》,当看到“面向对象”一词时,我感觉到既熟悉又陌生。在本科大二时候学习Java课程的时候第一次知道了这个词,当时就觉得面向对象是相对于面向过程而言的,有继承、封装、多态三种特性。至于究竟什么是面向对象,未曾深究。
在《程序员的自我修养》中提到“很多程序员错误的认识了面向对象。比如,他们会想当然的认为,面向对象就是把任何实体描绘为一个DTO(Data Transfer Object),用Getter、Setter方法去存取它们的属性,然后在其他业务组件中去处理它们。这的确是一个常见、也在大部分编程书籍中被作为代码示例的应用模式,但我想说DTO真的被滥用了。“作者认为DTO只是面向对象中描述对象的一种形式,我们应该以更高的高度去判断一个实体应该如何表现。

我们看看维基百科中的解释:

面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。[1]
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。
目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。 此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。
当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。

下面我总结一下并举个”大象进冰箱“的例子


总结:

  • 面向对象是一种思想,具有三大特征:继承、封装、多态。
  • 面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其他对象。
  • 面向对象语言中的类,在面向过程语言中是没有的,也恰好给了我们另一种编程思想,即面向对象的思想。面向过程的语言由一个一个的函数执行不同的功能堆砌而成,而面向对象的编程,把问题抽象成一个一个的对象,对这些对象进行分工合作来解决一个问题,下面举个栗子。

栗子:

面向过程

大象几步能进冰箱的小品大家肯定都看过,那对于程序员来说,要把大象装进冰箱里,需要几个步骤:

  • 把冰箱门儿打开。
  • 把大象装进去。
  • 把冰箱门儿关上

上面每一个步骤都需要对应一个函数,问题方能得到解决。程序员以为问题结束了,之后再遇到如下问题
「我要把大象装微波炉里」
「我要把狮子也装冰箱里」
「我要把大象装冰箱,但是门别关,敞着就行」

面向对象

岂不是每一个问题需要写相应的函数进行组合?NO,现在对象有了,如何进行面向对象的编程呢?很简单,针对上面第一个问题,依次向不同的对象发送命令就可以了。

  • 向冰箱下达「开门」的命令。
  • 向大象下达「进冰箱」的命令。
  • 向冰箱下达「关门」的命令。

对其他的问题呢,只需要利用对象的特征,很容易就能解决了。


以上是本人的愚见,如有错误欢迎指正,谢谢啦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值