面向对象程序设计概念

C++ 专栏收录该内容
5 篇文章 0 订阅

一. 程序设计范型

  面向对象程序设计(object-oriented programming,OOP)是一种新的程序设计的范型。程序设计范型是设计程序的规范、模型和风格,它是一类程序设计语言的基础。
面向对象设计范型的主要特征是:

 程序=对象+消息

  面向对象程序的基本元素是对象。面向对象程序的主要结构特点是:一、程序一般由类的定义和类的使用两部分组成;二、程序中的一切操作都是向对象发送消息来实现的,对象收到消息后,启动有关方法完成相应的操作。
  需要说明的是,某一种程序设计语言不一定与一种程序设计范型相对应。实际上具有两种或多种范型特征的程序设计语言,即混合型语言。例如,C++就不是纯粹的面向对象程序设计范型的语言,而是具有面向过程程序设计范型和面向对象设计范型的混合性设计语言。

二. 面向对象程序设计的基本概念

1. 对象
 现实中的对象,具有以下特征:

  1. 每个对象必须有一个名字以区别其他对象;
  2. 用属性来描述对象的耨些特征;
  3. 有一组操作,每一组操作决定对象的一种行为;
  4. 对象的行为可以分为两类:一类作用于自身的行为,另一类作用与其他对象的行为。

2. 类
  类是一组具有相同属性和行为的对象的抽象。类与对象之间的关系是抽象与具体的关系。类是对多个对象进行综合抽象的结果。

3. 消息与方法
  面向对象程序设计中,对象之间也需要联系,称为对象的交互。面向对象程序设计技术必须提供一种机制允许一个对象与另一个对象的交互。这种机制称为消息传递。
  对象所能实现的行为(操作),在程序设计方法中称为方法。它们是通过调用相应的函数来实现的,在C++语言中方法是通过成员函数来实现的。方法包括界面和方法体两部分。方法的界面给出了方法名和调用协议(相对于C++中的成员函数的函数名和参数表);方法体则是实现某种操作的一系列计算步骤,也就是一段程序(相对于C++中成员函数的函数体)。

三. 面向对象程序设计的基本特征

1. 抽象
  抽象是通过特定的实例(对象)抽取共同性质后形成概念的过程。面向对象程序设计中的抽象包括两个方面:数据抽象和代码抽象(或称为行为抽象)。前者描述某类对象的属性或状态,也就是此类对象区别于彼类对象的特征物理量:后者描述了某类对象的共同行为特征或具有的共同功能。对于一组具有相同属性和行为的对象,可以抽象成一种类型,在C++中,这种类型就称为类(class),类是对象的抽象,而对象是类的实例。
  抽象在系统分析、系统设计以及程序设计的发展中一直起着重要的作用。在面向对象程序设计方法中,对一个具体问题的抽象分析的结果,是通过类来描述和实现的。

2. 封装
  在现实世界中,所谓封装就是把某个事物包围起来,使外界不知道该事物的具体内容。在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。对象好像是一个不透明的黑盒子.表示对象属性的数据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,更不能从外面直接访问或修改这些数据及代码。使用一个对象的时候,只需知道它向外界提供的接口而无需知道它的数据结构细节和实现操作的算法。
  C++对象中的函数名就是对象的对外接口,外界可以通过函数名来调用这些函数来实现某些行为(功能)。封装的好处是可以将对象的使用者与设计者分开,大大降低了人们操作对象的复杂度。使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口的功能即可自由地操作对象。封装的结果实际上隐藏了复杂性,并提供了代码重用性,从而减轻了开发软件系统的难度。
  封装是面向对象程序设计方法的一个重要特性,封装具有两方面的含义:一是将有的数据和操作代码封装在一个对象中,各个对象相对独立、互不干扰;二是将对象中某此据与操作代码对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界消息,这种对外界隐蔽的做法称为信息隐蔽。信息隐蔽有利于数据安全,防止无关人员访和修改数据。

3. 继承
  继承是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 从继承源上分,继承又分为单继承和多继承。

4. 多态
  面向对象系统的多态性是指不同的对象收到相同的消息时执行不同的操作。
  C++语言支持两种多态性即编译时的多 态性和运行时的多态性。 编译时的多态性是通过函数重载(包括运算符重载)来实现的,运行时的多态性是通过虚函数来实现的。
  多态性增强了软件的灵活性和重用性,为软件的开发与维护提供了极大的便利。尤其是采用了虚函数和动态联编机制后,允许用户以更为明确、易懂的方式建立通用的软件。

  • 5
    点赞
  • 0
    评论
  • 18
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

Make the best of things

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值