面向对象的基本概念
https://www.bilibili.com/video/BV1hg411V7Bm?p=84
1)面向对象的基本概念
面向对象=对象+分类+继承+通过消息的通信
对象
程序系统中基本运行的实体,包括数据和数据的操作。
一个对象把属性和行为封装成一个整体,实现生产者与使用者的分离。
一个对象通常可由对象名、属性和方法(操作)三部分组成。
类
定义了一组大体上相似的对象。
类是对象的抽象,对象是类的具体化,是类的实例。
特殊类是一般类的子类,一般类是特殊类的父类。
继承
父类和子类之间共享数据和方法的机制。
一个父类可以有多个子类,一个子类可以继承其父类(或祖先类)中的属性和方法。
单重继承:从一个父类A得到继承
多重继承:一个子类有两个或更多个父类
重置
是一种动态绑定机制,使得子类在继承父类的前提下,用适合自己要求的实现去置换父类中的相应实现。(覆盖)
消息
对象之间的通信构造。
消息传递
当一个消息发送给某个对象时,包含要求接收对象去执行的某些活动的信息。
接收到信息的对象经过解释,然后予以响应。
在收到消息时,对象要予以响应。
不同的对象收到同一消息可以产生完全不同的结果,这一现象称为多态。
不同对象对同一消息的不同的响应。
通用多态:参数多态和包含多态
特定多态:过载多态和强制多态
通用多态对工作的类型不加限制,允许对不同类型的值执行相同的代码;
特定多态只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。
过载多态
同一个名(操作符、函数名)在不同的上下文中有不同的类型。
典型的例子是运算符重载和函数重载,属于静态多态。
2)面向对象的基本过程
面向对象分析(OOA)
- 认定对象(名词)
- 组织对象(抽象成类)
- 对象间的相互作用
- 基于对象的操作
完成对所解问题的分析,确定待开发软件系统要做什么,建立系统模型。
包括认定组织对象,描述对象间的相互作用,定义对象的操作和内部信息。
面向对象设计(OOD)
- 识别类及对象
- 定义属性
- 定义服务
- 识别关系
- 识别包
将OOA所创建的分析模型转化为设计模型,其目标是定义系统构造蓝图。
面向对象程序设计(OOP)
- 程序设计范型
- 选择一种OOPL
是采用程序设计语言,将设计模型转化为特定环境中的系统,即实现系统。
面向对象测试(OOT)
- 算法层
- 类层
- 模板层
- 系统层
对面向对象系统进行测试,查出系统错误。
主要包括算法层、类层、模板层、系统层。
考点1:类与对象
有些类之间存在一般和特殊关系,即一些类是某个类的特殊情况,某个类是一些类的一般情况。
因此,类()是其他各类的一般情况。
A、汽车
B、飞机
C、轮船
D、交通工具 √
解析:
“一般情况”指父类;
“特殊情况”指子类;
考点2:类的继承
在面向对象方法中,继承用于()。
A、利用已有类创建新类 √
B、在已有操作的基础上添加新方法
C、为已有属性添加新属性
D、为已有状态添加新状态
通过继承关系创建的子类()。
A、只有父类具有的属性
B、只有父类具有的操作
C、只能有父类所不具有的新操作
D、可以有父类的属性和方法之外的新属性和新方法 √
考点3:其他概念
采用面向对象程序设计语言C++/Java进行系统实现时,定义类S及其子类D。
若类S中已经定义了一个虚方法int fun(int a, int b),则方法()不能同时在类S中。
A、int fun(int x, double y)
B、int fun(double a, int b)
C、double fun(int x, double y)
D、int fun(int x, int y) √
解析:虚方法在Java中就是指抽象方法
D中定义方法int fun(int a, int b),这一现象称为()。
A、覆盖/重置 √
B、封装
C、重载/过滤
D、多态