一、面向对象程序设计概述

    科技2025-04-11  16

    1.1什么是面向对象程序设计

    1.1.1一种新的程序设计范型

    程序设计范型是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。 面向对象程序的主要结构特点: 1.程序一般由类的定义和使用两部分组成。 2.程序中的一切操作都是通过面向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。 对于C++来说,他是一款具有面向过程设计范型ihe面向对象程序设计范型的混合型程序设计语言。

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

    1.对象 在现实世界中,任何事物都是对象,比如一名学生,一本书,一张桌子等等。 对象一般可以表示为:属性+行为。例:小明168CM,12岁,可以吃饭,跑步。 现实世界中的对象,具有以下特征: (1)每一个对象必须有一个名字以区别于其他对象; PS:人的姓名 (2)用属性来描述对象的某些特征; PS:他200斤,他很胖 (3)有一组操作,每组操作决定对象的一种行为; PS:小明可以跑,可以吃饭 (4)对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。PS:小明锻炼身体,小明打了小红一巴掌。 面向对象和程序设计采用了以上人们所熟悉的这种思路。在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

    2.类 “类”是一组具有相同属性和行为的对象的抽象。 人类就是一个类,每一个人是人类的一个实例,也就是一个对象。 类在现实世界中并不存在。 在面向对象程序设计中,“类”就是具有相同的数据和相同的操作(函数)的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。 在C++中,把类中的数据称为数据成员,类中的操作是用函数来实现的,这些函数称为成员函数。 在面向对象程序设计中,总是先声明类,再由类生成其对象。类是建立对象的“模板”。

    3.消息和方法 在面向对象程序设计中,对象之间也需要联系,称为对象的交互。面向对象程序设计技术必须提供一种机制允许一个对象与另一个对象的交互。这种机制叫消息传递。 一般情况下,称发送消息的对象为发送者或者请求者,接收消息的对象为接收者或目标对象。对象中的联系只能通过消息传递过来进行,接收对象只有在接收到消息时,才能被激活,被激活的对象会根据消息的要求完成相应的功能。 消息具有以下3个性质: (1)同一个对象可以接收不同形式的多个消息,做出不同的响应; (2)相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的; (3)对消息的响应不是必须的,对象可以响应消息,也可以不响应。 对象所能实现的行为(操作),在程序设计方法中称为方法,它们是通过调用响应的函数来实现的。 消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应响应的消息。

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

    面向对象程序设计的4个基本特征

    1.抽象 抽象是将有关事物的共性归纳、集中的过程。 举个例子:把所有具有大学学籍的人归为一类,称为“大学生”,这就是一个抽象。 抽象是通过特定的对象抽取共同性质后形成概念的过程。 对于一组具有相同属性和行为的对象,可以抽象成一种类型,在C++中,这种类型就称为类(class),类是对象的抽象,而对象是类的实力。 举个例子:学生成绩管理系统 (1)共同的属性:姓名、学号、成绩

    string name; int number; float score;

    (2)共同的行为:数据录入、数据修改和数据输出

    input() //数据录入函数 modify() //数据修改函数 print() //数据输出函数

    如果我们开发一个学生健康档案程序,所关心的特征就有所不同了。可见,即使对同一个研究对象,由于所研究问题的侧重点不同,就可能产生不同的抽象结果。

    2.封装 在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。对象好像是一个不透明的黑盒子,表示对象属性的数据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,更不能从外面直接访问或修改这些数据及代码。 举个例子:比如洗衣机,我们只需要知道它的按钮,并不需要知道它内部是如何工作的。

    C++对象中的函数名就是对象的对外接口,外界可以通过函数名来调用这些函数来实现某些行为(功能)。 封装是面向对象程序设计的一个重要特征,封装具有两方面的含义:一是将有关的数据和操作代码封装在一个对象中,各个对象相对独立、互不干扰;二是将对象中某些数据与操作代码对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息,这种对外界隐蔽的做法称为信息隐蔽。 信息隐蔽有利于数据安全,防止无关人员访问和修改数据。

    3.继承 在继承链中,每个类继承了它前一个类的所有特征 若类之间具有继承关系,则它们之间具有下列几个特性: (1)类间具有共享特征(包括数据和操作代码的共享); (2)类间具有差别或新增部分(包括非共享的数据和操作代码); (3)类间具有层次结构。 假设有两个类A和B,若类B继承类A,则类B包含了类A的特征(包括数据和操作),同时也可以加入自己所特有的新特性。这时,称被继承类A为基类或父类;而称继承类B为类A的派生类或子类。同时,我们还可以说,类B是从类A中派生出来的。

    如果有类B是从类A派生出来的,而类C又是从类B派生出来的,就构成了类的层次。这样,又有了直接基类和间接基类的概念。类A是类B的直接基类,是类C的间接基类。类C不但继承它的直接基类的所有特性,还继承它的所有间接基类和特征。

    继承的作用有两个:其一是避免公用代码的重复开发,减少代码和数据冗余;其二是通过增强一致性来减少模块间的接口和界面。

    从继承源上分,继承分为单继承和多继承。 单继承是指每个派生类只直接继承了一个基类的特征。 多继承是指多个基类派生出一个派生类和继承关系。 多继承的派生类直接继承了不止一个基类的特征。

    4.多态 面向对象系统的多态性是指不同的对象收到相同的消息时执行不同的操作。 PS:多态比较难以理解,后续我会放到代码中帮助大家理解。

    1.2 为什么要使用面向对象程序设计

    1.2.1 传统程序设计方法的局限性

    1.传统程序设计开发软件的生产效率低下 2.传统程序设计难以应付日益庞大的信息量和多样的信息类型 3.传统程序设计难以适应各种新环境

    1.2.2 面向对象程序设计方法的主要优点

    1.可提高程序的重用性 2.可控制程序的复杂性 3.可改善程序的可维护性 4.能够更好地支持大型程序设计 5.增强了计算机处理信息的范围 6.能很好地适应新的硬件环境

    1.3 面向对象程序设计的语言

    1.3.1 面向对象程序设计语言的发展概况

    第一个真正面向对象程序设计语言是Smalltalk,它被誉为面向对象程序设计语言发展的里程碑。

    1.3.2 几种典型的面向对象程序设计语言

    Smalltalk语言Simual语言C++语言Java语言C#语言
    Processed: 0.008, SQL: 8