[C++]面向对象的基本概念

面向对象的基本概念

面向对象的方法有四个特点:抽象封装继承多态

抽象

所谓抽象,就是强调事物中与当前目标有关的本质特征,忽略非本质的次要特征,从而以共性特征作为划分依据并形成概念的过程。在面向对象的方法中,对一个问题的抽象包含两个方面:数据抽象和功能抽象。例如,就教务管理系统的开发而言,姓名,学号,班级,成绩等描述了学生的共同属性,这是数据抽象;而选课,学习等描述了学生的共性行为,这是功能抽象。用C++的变量和函数可以将上述抽象结果表示为:
数据抽象:char *name;char *studentNo;char* studentClass;int score;
功能抽象:selectCourse();study();
为了描述不同对象的相同特征,C++引入“类”的概念。类就是对具有相同属性和相同操作的一组相似对象的抽象。实例是某个特定的类所描述的一个具体对象,是类的具体化。
在类中包含两组定义:数据属性的定义和操作的定义。数据属性的定义就是说明数据属性值所属的类型,该类型限定了数据属性的取值范围和运算规则;操作的定义分为两部分:操作的规格说明(说明属于该类的对象能够进行那些操作以及操作的方式)和操作的过程说明(说明属于该类的对象如何进行这些操作)。
在类定义的基础上,可以具体说明该类的对象,例如,可以定义Student类,然后定义如"Tom",“LI”,"WANG"等属于Student类的对象。在确定对象的属性值时必须遵守该类的属性定义。同样,对象所能进行的操作以及操作的过程也只能遵守该类中的操作定义。

封装

所谓封装,就是把对象的属性和行为结合成一个独立的整体,并对外隐藏部分内部细节。

封装能带来两个好处:一是把对象的属性和行为结合为一个自治的独立单元,能够把构建系统的颗粒从函数层次提升到类层次;二是隐藏对象的内部细节,并向外界提供一组服务,使对象外部只能通过这些服务去改变对象的状态,而不能直接存取对象的内部属性,从而可以有效避免外部错误向内部传播,并降低程序调试的难度。例如:图(a)就体现了录音机的封装性————使用者只需要通过外部按键去操纵录音机的功能,无法直接改变录音机内部的状态,这样就避免的内部状态的紊乱。同时用户也不必担心内部的电子线路是如何实现各种功能的,只需了解它提供了哪些功能即可。
封装

继承

某些类之间结构和行为特征的共性,如教师和学生。但是教师和学生又有自己的特殊的属性和操作。于是,我们可以定义类"People",该类中定义教师和学生在结构和行为方面的共性的内容,然后派生出"Teacher"类和"Student"子类,相应的"People"类也称为父类。作为子类的"Teacher"类和"Student"类,只需在父类的基础上,定义自己特殊的属性和操作即可。

广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动的共享父类中定义的数据和方法的机制。

当一个类只允许有一个直接父类时,该类的继承是单重继承;当一个类有多个直接父类时,类的继承时多重继承,如图(b)和图©所示。
继承

多态

多态性是指同一消息被不同的对象接收时,可以产生多种不同的行为方式。

现实生活中这种多态现象比比皆是。例如,老师要求学生学习(即向学生发送一个study()消息),每个学生接受到这个消息之后,由于学习方法的差异,采取的行动也各不相同。具体到面向对象编程语言,多态性是指相同的函数名在不同的对象中有不同的实现方式。也就是说,多态性允许每个对象以个性化的方式去相应共同的消息。以继承性为基础的运行时多态,将继承性带来的共性化和多态性带来的个性化完美的结合起来,父类中定义共性的规范,子类以不同方式实现这一规范。这样,调用者只需按共性特征去管理众多子类对象,每个子类对象以各自的个性化去相应。这就大大提高了软件的可扩展性,当需要增加新的相应方式时,只需增加新的子类,不必修改父类以及调用者的使用方式。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值