好像从接触编程开始,面向对象这个词总会出现。与面向对象方法作对比的是面向过程。
在大话设计模式这本书里,为什么要讲面向对象呢?并且作者在序言里提到,先看附录里的面向对象。作者为读者简述面向对象的知识,是希望避免读者对面向对象理解欠缺造成设计模式学习的障碍。
我在看J2SE视频时,老师也通过对比面向过程的方式讲述了面向对象的知识。
下面我们重新回顾关于面向对象的知识,明确其中的基本概念,之后和曾经学过的知识产生联系,利用实例去理解。
我首先讲一下我初步的理解:面向对象,是把过程封装成一个方法,在用的时候后去调用这个方法,而不用自己再去思考过程是什么。
在大话书里,利用了“动物运动会”这个实例的演变,把面向对象中:类、对象、封装、继承、多态、接口、事件、集合等概念介绍出来。接下来赘述一下这些概念。
对象
面向对象,什么是对象?万物皆对象(生活在客观世界中的个体)
类和实例
类是具有相同的属性和功能的对象的抽象集合;
实例就是一个真实对象,实例化就是创建对象的过程,使用New关键字来创建。比如说,“动物”是一个抽象的概念,存在于想象中,很是模糊,但是实例化后,就是一个个能感受得到其存在的个体,比如猫,狗,老鼠。
方法和属性
方法是类或对象行为特征的抽象,用来完成某个功能操作,在C++语言中将方法称为成员函数。(若是类的对象能够响应让它在屏幕显示自己的消息,那么在类中必须给出成员函数的定义,即给出成员函数的实现代码)
属性指类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己的特有属性值。
抽象、封装、继承、多态
封装:把数据和实现操作的代码集中起来放在对象内部。即将对象看成是不透明的黑盒子,达到了信息隐蔽的目的,外人无法探知细节。
继承:子类从基类中直接获得已经定义的数据和方法的机制,不用重复定义,有效减少了程序的冗余信息。
多态:同样的消息在发送过程中,既可以发给父类对象,也可以发给子类对象,不分类等级。然而不同层次中的每个类按照各自的需要来实现这个方法。
从上面的概念,我的理解是:抽象,是封装、继承和多态的前提
基本概念在软件设计中如何考虑
我最近完成了学校里毕业设计。结合大话书和J2SE,在做设计前,我考虑了一些问题。1.系统里有哪些对象和类?2.对象和类拥有哪些属性?3.他们之间有什么关系,我去定义这之间的方法?
在J2SE里老师利用开车去西藏这个例子进行讲解。主体“我”,需要开车、挂挡、踩油门、经过河北、经过山西…都是“我”去做。那用面向对象方法呢?“我”只要想好去西藏的方式就可以了。