面向对象的理解

阿紫 posted @ 2012年6月27日 17:40 in c/c++ , 1312 阅读

    过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作。c语言理念是将大型程序分解成小型、便于管理的任务。过程性编程强调算法,OOP强调数据。面向对象最重要的是类。在c++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。例如类可以描述公司员工的基本特征(姓名、职位、工资等),而对象则代表特定的员工(小王、工程师、5000¥)。类规定了可以使用哪些数据来表示对象以及可以对这些数据执行哪些操作。 OOP程序设计方法首先设计类,类表示了程序要处理的东西。类定义描述了对每个类可执行的操作。OOP编程不是将重点放在任务上,而是放在表示概念上。 OOP编程不仅是数据和方法合并为类定义,还有助于创建可重用的代码。

    面向对象包括3个特征:继承、封装、多态。

    面向对象的主要目的之一就是提供可重用的代码。类继承,它能够从已有的类(基类)派生出新类,而派生类继承了基类的特征,包括方法。可以通过继承完成的工作:1、可以在已有类的基础上添加功能;2、可以给类添加数据;3、可以修改类方法的行为。

    封装是指类把所有的操作都封闭起来,仅仅提供接口供他人使用。使用的人没必要弄清楚类里面的操作,只需懂得操作接口就可以了。 信息隐藏可以保护数据,使其免受不当的访问。

    多态可以为操作符和函数创建多个定义,通过上下文确定使用哪个定义。旨在能够用同名的函数来完成相同的基本操作。多态与重载指的是同一回事,通常使用重载。

    面向对象设计的原则:

    1、“开闭”原则:

      一个软件实体应该对扩展开放,对修改关闭。即设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。在面向对象中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。实现开闭原则的关键步骤是抽象化,基类和子类之间的继承关系就是抽象化的体现。

    2、里氏代换原则:

      如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换为O2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。也就是说,在软件里面,把基类都替换成它的子类,程序的行为没有变化。反过来不成立,如果一个软件实体使用的是一个子类的话,那么它不一定适用于基类。里氏代换原则是对实现抽象化的具体步骤的规范。

    3、依赖倒转原则:

      依赖倒转原则就是依赖于抽象,不要依赖于实现。要针对接口编程,不要针对实现编程。传统的过程性编程的设计方法倾向于使高层次的模块依赖于低层次的模块,抽象层次依赖于具体层次。倒转原则就是把这个错误的依赖关系倒转过来。

    4、合成/聚合复用原则:

      在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。聚合表示整体和部分的关系,表示“拥有”,合成是一种更强的拥有,部分和整体的生命周期一样。

    5、迪米特法则:

      一个软件实体应当尽可能少的与其他实体发生相互作用,这样,当一个模块修改时,就会尽量少的影响其他模块。

    6、接口隔离原则:

      使用多个专门的接口比使用单一的总接口好,也就是说,一个类对另外一个类的依赖性应当使建立在最小的接口上。

    对面向对象设计的原则的理解还不是很深刻,以后在实践中慢慢理解^_^

    

    

  • 无匹配
seo service UK 说:
2024年1月16日 17:23

I learn some new stuff from it too, thanks for sharing your information.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter