2011年上软件工程课写的一篇关于面向对象的博客
2015-10-09 17:31
330 查看
面向对象概念
今天上了从开学来的第二次软件工程课。好久没见赵老师了,今天一见,给很多人的第一感觉是我们换老师了。因为今天老师是带着浓貌的胡子来的,而且传的好像是车间工人穿的工装,根本不像一位大学教师。给我的感觉就是,不愧是做工程的。
赵老师讲课的开始问了一个问题:有谁知道啥是面向对象?问完,大家都很安静。稍后,赵老师调了两位同学来回答,结果是没答上来。我在心里暗想,啥是面向对象?其实我也说不清。然后赵老师就说,大致是,你们学完了面向对象程序设计,但是还不知道啥是面向对象,真是中国教育的悲哀。接下来他花了一堂课的时间来解释这个概念,我听完后感觉受益匪浅,所以有必要记录一下。
赵老师首先解释了计算机中的对象,即指内存中的对象,面向对象中的对象就是内存中的对象。然后引出面向对象的三大核心特性:封装、继承、多态。
封装,以前我真的不知道啥是封装,为啥有封装?赵老师首先介绍了一下面向过程程序设计所遇到的一些重要问题,我听到的最多就是有关变量命名的困难。在大一点的工程中,变量命名确实是一个头痛的事情,这点我有一点小感触,虽然没有做过大项目。赵老师说,为了解决这个问题,程序员想了很多解决方法,最终找到了新建一个class数据类型,说这是软件工程中质的变化,由此数据便可以封装在class中了,从而在一定程度上解决了变量命名的问题了。
然后赵老师解释了重载。重载就是函数名相同,但是函数中的形式参数的个数(说个细节,在回答问题时,有的同学说参数,意指形参。但是赵老师说工程讲究的是准确,从现在起你们都有学会准确用语。)或形式参数的属性不同(只要有一个不同),这n个同名函数就是不同的函数。这不是多态。
继承。赵老师说这是面向对象中最核心的。然后讲了父类子类,以及继承的方式(用C ++做的例子)。讲了父类和子类的关系,讲了父类中private、protected、public这三个关键词的功能。子类不能继承父类中private属性的变量或函数,protected和public属性的都可以。其实对于继承,大家对概念都理解了,只是缺乏实际编程的感受,至少我是这种感觉。
多态。赵老师说重载是一个类中的,而多态是子类和父类之间的。多态是子类中的函数继承父类中的函数,继承的函数和被继承的函数的名字和参数相同。我以前以为重载就是多态,原来不是的。
到目前为止,听赵老师的课,可以感到他的讲课内容是在讲述他的经历和做项目感触。对我还是很有受益的。
今天上了从开学来的第二次软件工程课。好久没见赵老师了,今天一见,给很多人的第一感觉是我们换老师了。因为今天老师是带着浓貌的胡子来的,而且传的好像是车间工人穿的工装,根本不像一位大学教师。给我的感觉就是,不愧是做工程的。
赵老师讲课的开始问了一个问题:有谁知道啥是面向对象?问完,大家都很安静。稍后,赵老师调了两位同学来回答,结果是没答上来。我在心里暗想,啥是面向对象?其实我也说不清。然后赵老师就说,大致是,你们学完了面向对象程序设计,但是还不知道啥是面向对象,真是中国教育的悲哀。接下来他花了一堂课的时间来解释这个概念,我听完后感觉受益匪浅,所以有必要记录一下。
赵老师首先解释了计算机中的对象,即指内存中的对象,面向对象中的对象就是内存中的对象。然后引出面向对象的三大核心特性:封装、继承、多态。
封装,以前我真的不知道啥是封装,为啥有封装?赵老师首先介绍了一下面向过程程序设计所遇到的一些重要问题,我听到的最多就是有关变量命名的困难。在大一点的工程中,变量命名确实是一个头痛的事情,这点我有一点小感触,虽然没有做过大项目。赵老师说,为了解决这个问题,程序员想了很多解决方法,最终找到了新建一个class数据类型,说这是软件工程中质的变化,由此数据便可以封装在class中了,从而在一定程度上解决了变量命名的问题了。
然后赵老师解释了重载。重载就是函数名相同,但是函数中的形式参数的个数(说个细节,在回答问题时,有的同学说参数,意指形参。但是赵老师说工程讲究的是准确,从现在起你们都有学会准确用语。)或形式参数的属性不同(只要有一个不同),这n个同名函数就是不同的函数。这不是多态。
继承。赵老师说这是面向对象中最核心的。然后讲了父类子类,以及继承的方式(用C ++做的例子)。讲了父类和子类的关系,讲了父类中private、protected、public这三个关键词的功能。子类不能继承父类中private属性的变量或函数,protected和public属性的都可以。其实对于继承,大家对概念都理解了,只是缺乏实际编程的感受,至少我是这种感觉。
多态。赵老师说重载是一个类中的,而多态是子类和父类之间的。多态是子类中的函数继承父类中的函数,继承的函数和被继承的函数的名字和参数相同。我以前以为重载就是多态,原来不是的。
到目前为止,听赵老师的课,可以感到他的讲课内容是在讲述他的经历和做项目感触。对我还是很有受益的。
相关文章推荐
- pycharm使用笔记
- 获取项目的访问地址
- easyui
- MySQL的DATE_FORMAT()函数
- android 仓库物流app调研
- hadoop、zookeeper、hbase整合,使用java查询hbase数据报错org.apache.hadoop.hbase.client.NoServerForRegionException:
- 重定向并带参数
- 编程实践 2015-09-10
- UE4为什么使用C++替代UnrealScript?
- 通过testlink官网demo体验最新版本
- android 实践 - 2015-7-12
- JAXB与XStream
- MyBatis的foreach语句详解
- oracle recyclebin详解
- java 并发与性能优化
- java 堆栈
- gpio模拟i2c驱动
- ArcGIS教程:等值线
- nginx各种常用的配置
- 图像处理代码优化:经典例子