《软件设计师》复习笔记(14.1)——面向对象基本概念、分析设计测试
目录
一、面向对象基本概念
对象(Object)
类(Class)
抽象(Abstraction)
封装(Encapsulation)
继承(Inheritance)
多态(Polymorphism)
接口(Interface)
消息(Message)
覆盖(Override)
函数重载(Overload)
绑定(Binding)
真题示例:
二、面向对象分析与设计
1. 面向对象分析(OOA)
2. 面向对象设计(OOD)
3. 面向对象测试
测试层次
真题示例:
一、面向对象基本概念
-
对象(Object)
- 由数据(属性)和操作(方法)构成的封装体。
- 组成:对象名、属性、方法。
-
类(Class)
- 现实世界实体的形式化描述,是对象的模板。
- 类的分类:
- 实体类:表示真实实体(如人、物、学生)。
- 接口类(边界类):提供用户与系统的交互方式(如窗口、菜单、二维码、笔、计算机)。
- 控制类:协调活动流(如业务逻辑控制、一个一个地排队)。
-
抽象(Abstraction)
- 抽取共同特征形成概念,强调主要特征,忽略次要特征。
-
封装(Encapsulation)
- 信息隐蔽技术,将数据和操作封装为整体,仅通过接口访问。
-
继承(Inheritance)
- 类之间的层次关系(父类与子类),支持单继承和多继承。
-
多态(Polymorphism)
- 同一消息不同对象产生不同结果,分为:
- 参数多态(不同参数类型)
- 包含多态(父子类关系)
- 过载多态(同名不同参)
- 强制多态(类型转换)
- 同一消息不同对象产生不同结果,分为:
-
接口(Interface)
- 定义操作规范(做什么),不定义具体实现(如何做)。
-
消息(Message)
- 对象间交互的请求(如方法调用)。
-
覆盖(Override)
- 子类重写父类同名同参的方法。
-
函数重载(Overload)
- 同名函数,参数不同(与继承无关)。
-
绑定(Binding)
- 静态绑定:编译时确定(如普通函数调用)。
- 动态绑定:运行时确定(如多态调用)。
真题示例:
一个类中可以拥有多个名称相同而参数表(参数类型或参数个数或参数类型顺序)不同的方法,称为( )。
A.方法标记 B.方法调用 C.方法重载 D.方法覆盖
- 方法重载(Overload):在同一个类中,多个方法同名但参数不同(类型、个数、顺序不同)。
- 方法覆盖(Override):子类重写父类同名同参的方法。
- 方法标记:无此术语。
- 方法调用:指执行某个方法,与定义无关。
在某销售系统中,客户采用扫描二维码进行支付。若采用面向对象方法开发该销售系统,则客户类属于()类,二维码类属于()类。
A. 接口 B. 实体 C. 控制 D. 状态
A. 接口 B. 实体 C. 控制 D. 状态
- 客户类:代表现实世界的“客户”实体,属于实体类。
- 二维码类:提供支付交互方式(扫描二维码),属于接口类(也称边界类)。
二、面向对象分析与设计
1. 面向对象分析(OOA)
-
目标:确定问题域,理解需求。
-
活动:
- 认定对象
- 组织对象
- 描述对象交互
- 确定对象操作
- 定义对象内部信息
-
组成:
- 顶层架构图
- 用例与用例图
- 领域概念模型
面向对象需求建模:
2. 面向对象设计(OOD)
-
目标:设计解决方案,生成源代码。
-
设计原则:
- 单一责任原则:一个类仅有一个变化原因。
- 开放-封闭原则:可扩展,不可修改。
- 里氏替换原则:子类可替换父类。
- 依赖倒置原则:抽象不依赖细节,细节依赖抽象。
- 接口分离原则:客户不应依赖不用的方法。
-
设计模型组成:
- 包图(软件体系结构)
- 交互图(用例实现)
- 类图(完整类结构)
- 状态图(复杂对象行为)
- 活动图(流程化处理)
3. 面向对象测试
测试层次
- 算法层:测试类中的方法(单元测试)。
- 类层:测试类内属性与方法的交互(模块测试)。
- 模板层:测试类间协作(集成测试,关注消息传递)。
- 系统层:组装子系统并测试(系统测试)。
真题示例:
面向对象的分析模型主要由顶层架构图、用例与用例图和( )构成:设计模型则包含以( )表示的软件体系机构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的( )和用以描述流程化处理过程的活动图等。
A. 数据流模型 B. 领域概念模型 C. 功能分解图 D. 功能需求模型
A. 模型视图控制器 B. 组件图 C. 包图 D. 2层、3层或N层
A. 序列图 B. 协作图 C. 流程图 D. 状态图
-
分析模型构成:
- 领域概念模型是分析阶段的核心,用于描述系统中的关键实体及其关系,区别于数据流模型(A)和功能分解图(C)。
-
设计模型表示:
- 包图(C)通过模块化组织代码结构,比组件图(B)更侧重逻辑分层,而MVC(A)是具体架构模式。
-
复杂对象描述:
- 状态图(D)适合描述对象生命周期内的状态转换,序列图(A)和协作图(B)更侧重交互流程。
在面向对象设计的原则中,( )原则是指抽象不应该依赖于细节,细节应该依赖于抽象,即应针对接口编程,而不是针对实现编程。
A. 开闭 B. 里氏替换 C. 最少知识 D. 依赖倒置
依赖倒置原则强调抽象不应依赖细节,细节应依赖抽象,通过接口编程降低耦合