去年的这个时候,心血来潮写了篇《简述面向对象技术》,先在看来不由的会想:这都是写的什么跟什么啊?(ps:虽然现在写的博客依然不咋地)但是,Java的学习中又一次不得不再一次面向对象,所以,奉上一篇《再谈面向对象》,做为新年的一盘开胃菜。
面向对象是相对于面向过程而言,是一种思想。
区别于面向过程:
面向过程是以函数为基础,完成各种操作,强调的是过程,而面向对象是以对象为基础,强调的是对象。
比如说把大象装进冰箱分为几步,宋丹丹是这样说的:三步呗,
第一步:打开冰箱门,
第二步:把大象装进去,
第三步:关上冰箱门。
其中“打开”“存储”“关上”都是功能行为,在代码中的直观体现就是函数或者方法,这就是一种面向过程的以功能行为为主体的思想体现。
而用面向对象的思想来分析则步骤如下:
第一步:冰箱打开,
第二步:冰箱存储,
第三步:冰箱关闭。
我们可以看到,所有的操作都是以“冰箱”为主体,把功能封装进冰箱(对象)。也就是说,冰箱自己已经具备了“打开”、“存储”、“关上”的行为功能,我们只需要让冰箱执行它具备的功能就可以了。
举一个生活中对象的例子:例如手机就是一个对象,手机拥有多种特性,如手机有高度、宽度、厚度、颜色、重量等特性,这些特性被称为对象的属性。同时手机还有很多功能,如手机可以听音乐、打电话、发信息、看电影等工作功能,这些功能被称为对象的方法。
特点:
1. 是一种更符合人们思考习惯的思想 (基于这点,还没有想太明白)
2. 可以将复杂的事情简单化
3. 将程序员从执行者转换成了指挥者。
开发过程:
不断的创建对象,使用对象,指挥对象做事情。
设计过程:
就是在管理和维护对象之间的关系。运用设计模式或者对象之间的其它联系,使对象能够紧密的关联起来,更加高效的使用对象。
如何使一个程序能够面向对象:
1. 分析该系统中包含哪些对象?
2. 明确每个对象可以做什么?
3. 明确每个对象间的关系。
特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
在学习面向对象时,如果能够领会这些比较基础的知识,就能够驾轻就熟的来面向对象了。做了个导图如下。
小结
面对对象作为一种编程思想已经不断被人们开发和认识,其中包含的东西还有很多,笔者也不太了解,上述提到的要点会在今后的学习中不断的补充和深化拓展,以满足自己一颗饥渴求知的心,其中的收获往往也是丰富的,也许在不就的将来,随着理解的深入,笔者还会写一个《三谈面向对象》(⊙o⊙)…突然想起了阿甘所说的一句话,在新年的第一天与大家共勉:Life is like a box of chocolates, you never konw what you're going to get.