A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 354620815 中级黑马   /  2014-12-25 16:25  /  2573 人查看  /  27 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

学编程,学思想。有了思想,才能决定一切。思想有多大,舞台就有多大。面向对象是一种常见的设计思想,被广泛的应用于编程。(也就是用来指导我们编程的)

在很久很久。。。以前,那时候还没有面向对象。传统的程序设计方式,采用面向过程的思想,即结构化程序设计。一个程序=算法+数据结构。面向过程编程有很多的弊端,很难适应大型应用的开发。后来就有人提出了面向对象思想,面向对象程序设计:对象=算法+数据结构;程序=对象+对象+对象......+对象。从这些公式中我们可以看出:面向对象是由面向过程发展而来的,面向过程是面向对象的基础。

面向对象程序设计,模拟了我们自然界认识和处理事物的方法,把事物的行为和属性都封装在对象里面。学习面向对象首先要先弄明白类和对象。因为在程序中面向对象就是通过类和对象来实现的。什么是对象?人们常说万物皆对象。“皆”就是“都”是的意思。也就是说万物都是对象,反过来说,对象指的是世界上的所有事物。什么是类?类是一个抽象的概念,它是对同一类对象行为和属性的描述,在程序中类实际上是数据类型。千万不能说把事物的行为和属性封装在类里面,因为类是不具备执行能力的。类和对象之间的关系:类是对象的模版,对象是类的实例(副本)。

面向对象还有一些特性:像封装、继承、抽象、动态。(思考面向过程有这些特性?)

封装:隐藏事物的行为和属性,对外提供,公共的访问方式。从而提高代码的重用性和安全性,也方便了我们以后对事物的操作。封装不可以瞎封装。封装的目标是为了实现程序的高内聚和低耦合。像多个线程操作同一共享资源,如果线程任务相同,我们可以把共享资源,操作共享资源的代码,以及线程任务都封装在一起;如果线程的任务不同,我们可以把共享资源,操作共享资源的代码封装成一个资源类。再把资源对象作为参数传递给线程任务。

抽象:抽象不好说,因为类本身就是一个抽象的概念。可以说是对同一类事物进行抽取,更为关注事物的共性,而忽略了每个事物的具体特性。类、抽象类、接口都是抽象的体现。

继承:可以让类与类之间产生关系。子类或者子孙类可以共享父类的数据。父类里面有的子类可以直接拿过来用,这样就提高了代码的重用性。子类也可以覆盖父类的方法,这样就方便了我们,以后对父类的修改和扩展。同时继承也是多态的一个前提。

多态:父类或接口的引用指向子类对象,一个对象可以有多种数据类型,一个引用类型也可以指向不同的子类对象。这个引用类型到底指向哪个对象,可以在程序运行的时候决定。因为多态,所以程序变得更加灵活。前期定义的代码,可以使用后期的内容。

理解面向对象的这些基本特性,可以帮助我们更好的理解面向对象。总之面向对象就是一种设计思想。左边:学编程;右边:学思想;横批:面向对象。。。

27 个回复

正序浏览
总结得很好很到位,学习了。
回复 使用道具 举报
多谢分享
回复 使用道具 举报
多学习多思考,楼主说的还是不错了
回复 使用道具 举报
学习了!
回复 使用道具 举报
总结的很到位啊 ,学习了
回复 使用道具 举报
AnElse 中级黑马 2014-12-31 11:43:08
23#
学习了!!
回复 使用道具 举报
Piaoyu 中级黑马 2014-12-31 11:35:02
22#
学对象最好图文结合,楼主这看着好累。
回复 使用道具 举报
总结得不错,赞一个
回复 使用道具 举报
讲的很细,学习了,谢谢楼主分享
回复 使用道具 举报
实际开发中,比如你的组长要你开发一个功能,根据我所经历的,我的步骤是,①.先分析这个功能的领域模型,对每个领域模型进行属性、方法的设置,②.最后再设置各个领域模型之间的关系,那么第一步我认为是最难的,就是第一步,分析领域模型,再分析每个领域模型都有哪些属性和方法。这时候,你将面临面向对象的思想考验,比如,让你开发一个功能,这个功能是“人刹车”,首先我们肯定会制造一个“车子”对象,然后制造一个“人”对象,那么车子有哪些属性呢?无疑是颜色、型号、出厂时间、厂家等等,那么车子具备哪些方法呢?刹车算吗? 人刹车  "刹车"这个方法到底是人的方法还是车子的方法   想明白了这个问题   就大概了解了面向对象的思想    毫无疑问   如果是以面向对象的角度思考   “刹车”一定是车子对象的方法     因为具体是怎么刹车只有车子自己知道(刹车这个一系列的流程需要车子内部的机制,比如操作A,操作B、操作C一系列流程结束后,才完成了刹车动作)   人是不知道的,人只是一个外界的一个因素而已。还有就是,比如你在黑板上画圆,那么"画"是“人”的方法还是“圆”的方法?毫无疑问  以面向对象的角度思考  一定是圆的方法  至于为什么   我想你应该能悟出来了   
回复 使用道具 举报
最后一句,哈哈哈
回复 使用道具 举报
赞一个。。
回复 使用道具 举报
楼主学的很细啊。
回复 使用道具 举报
万物皆对象
回复 使用道具 举报
万事万物皆对象,女朋友也是对象
回复 使用道具 举报
叫我王大锤 来自手机 中级黑马 2014-12-25 23:23:25
13#
万物皆对象。,,
回复 使用道具 举报
刚刚学面向对象的渣 来看看大神是什么看的
回复 使用道具 举报
Bali 中级黑马 2014-12-25 22:57:44
11#
不错不错!有自己的想法!
回复 使用道具 举报
多态,时间久了才能理解,现在还是有点模糊。。唉。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马