目录
【考核内容】
面向对象的基本概念,面向对象的模型(用例图、类图、状态图、顺序图或事件跟踪图)的符号及其作用;面向对象设计框架;软件重用的概念与重用级别;面向对象编程、面向对象测试。
【考核要求】
(1)掌握面向对象的基本概念;
(2)掌握面向对象的软件工程方法;
(3)掌握对象模型的结构、对象模型的建立、动态模型的建立、功能模型的建立;
(4)掌握面向对象设计系统的基本框架;
(5)理解软件重用的概念与软件重用的内容;
(6)了解面向对象程序设计语言的特点。
一、面向对象的基本概念
传统软件工程方法学适用于中小型软件产品开发;
面向对象软件工程方法学适用于大型软件产品开发。
1. 面对对象方法学概念
1.1 对象
定义:具有相同状态的一组操作的集合,对状态和操作的封装。
1.2 类
对具有相同状态和相同操作的一组相似对象的定义。 类是一个抽象数据类型。
1.3 实例
实例是由某个特定类所描述的一个具体对象。
1.4 消息
要求某对象执行某个操作的规格说明。
三部分:
- 接收消息的对象
- 消息名
- 0或多个变元
quadrilateral1.move(1,3)
1.5 方法和属性
- 方法
对象执行的操作,即类中定义的服务。
如:draw(),要给出实现代码。 - 属性
类中所定义数据,对客观世界实体具体性质的抽象。
如:Quadrilateral类中的point1、point2、point3point4。
1.6 继承
子类自动共享基类中定义的属性和方法的机制。
1.7 多态
在类等级不同层次可共享一个方法名,不同层次每个类按各自需要实现这个方法。
优点:
- 提高程序可复用性(接口设计的复用,不是代码实现复用)
- 派生类的功能可被基类指针引用,提高程序可扩充性和可维护性。
1.8 重载
- 函数重载
在同一作用域内,参数特征不同的函数可使用相同的名字。优点:- 程序易于阅读和理解。
- 调用者不需记住功能雷同函数名,方便用户;
- 运算符重载
同一运算符可施加于不同类型操作数上面。
例:23+24 23.0+24.0
2. 与传统方法学比较
3. 面向对象方法学优点
- 与人类习惯思维方法一致
对象是对现实世界正确抽象,问题空间和解空间结构一致。 - 稳定性好
软件系统结构根据问题领域模型建立,功能需求变化不会引起软件结构整体变化,作局部性修改。如从已有类派生新子类实现功能扩充或修改。 - 可重用性好
传统软件重用技术:标准函数库。
面向对象重用技术:类,派生类和创建类的实例 - 易开发大型软件产品
封装性好,易于分解,易于合作开发。 - 可维护性好
稳定性好、容易修改、容易理解、易于测试和调试。
二、面向对象的模型
UML 全称为 Unified Modeling Language目前最流行的面向对象建模语言
1. UML简介
1.1 建模必要性
建模是捕获系统本质的过程.
建模必须使用,标准图形记法 --UML
- 捕获商业流程
- 促进沟通
- 管理复杂性
将模型划分成不同的视图(结构、行为等);
用包(Package)将视图组织成一棵抽象层次渐深的树形结构. - 定义软件构架
- 促进软件复用
1.2 UML发展
1.3 UML视图
1.用例视图
定义了系统的外部行为,是最终用户、分析人员和测试人员所关心。该视图定义了系统的需求,因此约束了描述系统设计和构造的某些方面的所有其他视图。
2.设计视图
描述的是支持用例视图中规定的功能需求的逻辑结构。它由程序组件的定义,主要是类、类所包含的数据、类的行为以及类之间交互的说明组成。
3.实现视图
描述构造系统的物理组件,这些组件包括如可执行文件、代码库和数据库等内容。这个视图中包含的信息与配置管理和系统集成这类活动有关。
4.进程视图
进程视图包括形成并发和同步机制的进程和线程。
5.部署视图
部署视图描述物理组件如何在系统运行的实际环境(如计算机网路)中分布
2. 用例图
用例图描述外部执行者(actor)与系统的交互,表达系统功能,即系统提供服务。
主要元素:用例和执行者。
用例:执行者与计算机一次典型交互,代表系统某一完整功能。
执行者:描述与系统交互的人或物,代表外部实体(如用户、硬件设备或其它软件系统)。
建立用例模型
2.1 发现执行者
- 谁使用该系统;
- 谁改变系统的数据;
- 谁从系统获取信息;
- 谁需要系统的支持以完成日常工作任务;
- 谁负责维护、管理并保持系统正常运行;
- 系统需要应付那些硬件设备;
- 系统需要和那些外部系统交互;
- 谁对系统运行产生的结果感兴趣
2.2 获取用例
向执行者提出问题获取用例:
- 执行者需获取何种功能,需要作什么;
- 执行者需读取、产生、删除、修改或存储
- 系统中某种信息;系统发生事件和执行者间是否需要通信。
2.3执行者间关联
泛化关系
2.4 用例间关联
泛化关系
一般与特殊关系
有父用例的行为,可出现在父用例出现的任何地方。添加自己行为(前者检查文本密码,后者检查用户视网膜)。
扩展关系
允许一个用例扩展另一用例提供的功能,与泛化关联类似,有更多规则限制:
基本UseCase必须声明若干“扩展点”,扩展UseCase只能在扩展点上增加新行为。
扩展用例 指向 基本用例
包含关系
一个基本UseCase行为包含另一个UseCase行为。
Check Credit检查输入的信用卡号是否有效,有足够资金。处理Purchase Ticket用例,总运行Check Credit用例
基本用例 指向 包含用例
3. 类图
类图是面向对象建模最常用的图,描述类与类间的静态关系。
3.1 类属性的语法
[可见性] 属性名[:类型][=初值]
可见性:公有(+)、私有(-)、保护(#)
- 公有:可被外部对象访问
- 私有:不可为外部对象访问,只能为本类对象使用
- 保护:可为本类对象和子类对象访问。
3.2 类操作的语法
[可见性]操作名[(参数列表)] [:返回类型]
3.3 类的版型
(1)边界类
位于系统与外界的交界处
- User interface boundary class
窗体(form)、对话框(dialog box)、报表(report) - External system boundary class
- 表示通讯协议(如TCP/IP)的类
- 直接与外部设备交互的类
- 直接与外部系统交互的类
(2)控制类
每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。
(3)实体类
用于对必须存储的信息和相关行为建模的类。
(4)接口类
描述一个类或构件服务的操作集,不含属性,只包含方法的声明。