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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

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

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

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

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

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

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

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

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

27 个回复

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