软件工程课件Ch_6 面向对象基础
合集下载
06 面向对象软件工程基础
2.类的关系 2.类的关系 在客观世界中有若干类,这些类之间有一定的结构关系, 通常有两种主要的结构关系,即一般具体结构关系及整体 成员结构关系。 一般具体结构称为分类结构,也可以说是“ 一般具体结构称为分类结构,也可以说是“或”关系,是 “is a”关系。例如,汽车和交通工具都是类。它们之间的 a” 关系是一种“ 关系是一种“或”关系,汽车“是一种”交通工具。类的 关系,汽车“是一种” 这种层次结构可用来描述现实世界中一般化的抽象关系, 通常越在上层的类越具有一般性和共性,越在下层的类越 具体、越细化。 整体成员结构称为组装结构,它们之间的关系是一种“ 整体成员结构称为组装结构,它们之间的关系是一种“与” 关系,是“ 关系,是“has a”关系。例如,汽车和发动机都是类,它们 a” 之间是一种“ 之间是一种“与”关系,汽车“有一个”发动机。类的这 关系,汽车“有一个” 种层次关系可用来描述现实世界中的类的组成的抽象关系。 上层的类具有整体性,下层的类具有成员性。在类的结构 关系中,通常上层类称为父类或超类,下层类称为子类。
class A { public: public: void Func1(void); Func1(void); }; void Test(A*a) { a->Func1(); >Func1(); } class B:public A B: { … }; class C:public A C: { … }; //Example
6.1.1 类与对象 1.类与对象 1.类与对象
家具 桌子 属性 属性 对象(Object)是类(Class)的一个实例(Instance)。如 对象(Object)是类(Class)的一个实例(Instance)。如 价格 价格 果将对象比作房子,那么类就是房子的设计图纸。所以面 尺寸 尺寸 向对象程序设计的重点是类的设计,而不是对象的设计。 重量 重量 位置 类可以将数据和函数封装在一起,其中函数表示了类的行 位置 颜色 颜色 public 为(或称服务)。类提供关键字public、protected和 为(或称服务)。类提供关键字public、protected和private 服务 服务 用于声明哪些数据和函数是公有的、受保护的或者是私有 购买 购买 的。这样可以达到信息隐藏的目的,即让类仅仅公开必须 销售 销售 要让外界知道的内容,而隐藏其它一切内容。例如图6 要让外界知道的内容,而隐藏其它一切内容。例如图6-1的 称重 称重 “家具”类。 家具” 移动 移动 图6-1 类图示例
《面向对象基础》课件
单例模式和工厂模式
详细解释单例模式和工厂模式的设计思想和实现方式,以及它们在实际项目 中的应用及优势。
解释什么是类和对象,并对它们之间的关系进行阐述。讲解如何定义类、创建对象以及如何使用类和对 象实现代码的重用。
封装性和信息隐藏
详细介绍封装性的概念和作用,以及如何通过信息隐藏提高程序的可维护性 和安全性。
继承和多态
深入研究继承和多态的概念,讲解如何使用继承创建基于现有类的新类,并 探讨多态在面向对象编程中的应用和优势。
抽象和接口
探讨抽象的概念和作用,以及接口的定义和使用。说明抽象类和接口在面向 对象编程中的区别和用途。
对象关系
讨论对象之间的关系,包括关联、聚合、组合和依赖。解释不同关系的特点和使用场景。
策略模式和状态模式
介绍策略模式和状态模式的概念和应用场景,说明它们如何帮助我们实现灵 活的行为和状态管理。
《面向对象基础了解面向对象的基础知识,从概述开始,逐步探 讨类和对象、封装性和信息隐藏、继承和多态等概念,最后会介绍一些常用 的设计模式和原则。
面向对象概述
学习面向对象编程的重要性和优势,探讨面向对象的基本概念和特征,了解面向对象程序设计的思想和 方法。
类和对象
《面向对象的》课件
多态
允许一个接口多种形态存 在,即一个接口可以有多 个实现方式,增强了代码 的灵活性和可扩展性。
面向对象与面向过程的区别
面向对象强调的是对象之间的交互和关系,注重的是系统的整体性和复用性;而面 向过程则更注重程序的执行流程和算法的实现。
面向对象编程将数据和操作封装在一起,形成具有特定属性和行为的对象,更符合 人类的思维习惯;而面向过程编程则更注重功能模块的划分和调用。
C#
总结词
C#是一种面向对象的编程语言,由微软公司开发,具有语法严谨、易于上手的特点。
详细描述
C#语言支持类和对象的概念,提供了丰富的API和库,广泛应用于Windows桌面应用程序开发、游戏 开发等领域。C#还支持跨平台开发,可以在其他操作系统上运行。
04
面向对象的应用领域
游戏开发
游戏策划
面向对象编程有助于更好地设计和组 织游戏策划,将游戏的各种元素(如 角色、物品、关卡等)视为对象,便 于管理和扩展。
详细描述
继承是面向对象编程中的重要概念,它允许创建分等级的类。基类(也称为父类 )定义了共享的属性和方法,派生类(也称为子类)继承这些属性和方法,并可用变量来引用子类对象,调用子类 重写的方法。
详细描述
多态允许一个接口被多个类实现,一个接口引用变量可以指 向任何实现该接口的类的对象。当通过接口引用变量调用方 法时,将根据实际对象的类型来决定调用哪个实现类的方法 。
面向对象编程通过类和对象的概念实现代码的重用和扩展,提高了软件的可维护性 和可复用性;而面向过程编程则更注重程序的执行效率和算法的优化。
02
面向对象的主要技术
类与对象
总结词
类是对象的抽象,对象是类的实 例。
详细描述
软件工程 6 面向对象分析
例:复查“图书借阅管理系统“中的参与者与用 例
建立用例图
第六章 面向对象分析
标题 用例名称: 用例标识号: 简要说明: 前置条件:
基本事件流:
其他事件流:
异常事件流:
后置条件:
编写用例描述
说明
借阅图书。
UC204
读者可通过此用例借阅图书,借阅成功后修改读者和图书的状态。
读者选择要借阅的图书。
⒈ 判断该读者的状态是否为正常。 ⒉ 判断该图书的状态是否为正常可借。 ⒊ 判断读者是否还能借阅图书,即是否已到最大借阅数。 ⒋ 上述条件都满足时,修改读者的状态和图书的状态,完成借阅过程。 ⒌ 用例结束。
需求人员事前准备 访谈内容的设计,列出大纲 访谈方式 可以全面了解用户的业务 不适用于大规模用户
访谈-用户访谈问题大纲第六章 面向对象分析
1. 用户情况
姓名:
(用户姓名)
公司及部门:
(用户所在公司及部门)
职务:
(用户在公司中的职务)
主要职责:
(用户在公司中所负的主要职责)
(注:多留些空白,以记录其他基本情况)
第六章 面向对象分析
访谈-用户访谈问题大纲(续)
4. 反馈理解情况 业务问题理解: 有否补充问题: 5. 询问非功能需求 可靠性预期: 性能预期: 维护和服务预期: 安全需求: 安装和配置需求: 其它需求: 6. 总结 访谈之后如何联系: 用户参加需求审阅: 需求优先级:
(对刚才询问用户的业务问题,用自己的话复述问题,以确认问题没有被误解) (用户对刚才的理解是否有需要补充之处)
用例向与之关联的角色输出什么信息? 用例需要对哪些硬件设备进行操作? 例:“图书借阅管理系统“中类的识别
第六章 面向对象分析
建立用例图
第六章 面向对象分析
标题 用例名称: 用例标识号: 简要说明: 前置条件:
基本事件流:
其他事件流:
异常事件流:
后置条件:
编写用例描述
说明
借阅图书。
UC204
读者可通过此用例借阅图书,借阅成功后修改读者和图书的状态。
读者选择要借阅的图书。
⒈ 判断该读者的状态是否为正常。 ⒉ 判断该图书的状态是否为正常可借。 ⒊ 判断读者是否还能借阅图书,即是否已到最大借阅数。 ⒋ 上述条件都满足时,修改读者的状态和图书的状态,完成借阅过程。 ⒌ 用例结束。
需求人员事前准备 访谈内容的设计,列出大纲 访谈方式 可以全面了解用户的业务 不适用于大规模用户
访谈-用户访谈问题大纲第六章 面向对象分析
1. 用户情况
姓名:
(用户姓名)
公司及部门:
(用户所在公司及部门)
职务:
(用户在公司中的职务)
主要职责:
(用户在公司中所负的主要职责)
(注:多留些空白,以记录其他基本情况)
第六章 面向对象分析
访谈-用户访谈问题大纲(续)
4. 反馈理解情况 业务问题理解: 有否补充问题: 5. 询问非功能需求 可靠性预期: 性能预期: 维护和服务预期: 安全需求: 安装和配置需求: 其它需求: 6. 总结 访谈之后如何联系: 用户参加需求审阅: 需求优先级:
(对刚才询问用户的业务问题,用自己的话复述问题,以确认问题没有被误解) (用户对刚才的理解是否有需要补充之处)
用例向与之关联的角色输出什么信息? 用例需要对哪些硬件设备进行操作? 例:“图书借阅管理系统“中类的识别
第六章 面向对象分析
软件工程面向对象技术概述PPT教学课件
UML是一种定义良好,易于表达, 功能强大且普遍实用的建模语言。
UML的开发历程 UML2.0
UML 1.3 OMG采用,11/97 OMG修正,9/97 UML 1.1
OMG审核,1/97 UML 1.0
OMG认证
10/96 & 9/96 UML 0.9&0.91
UML同行 专家意见
10/95ຫໍສະໝຸດ UML 0.8同阶段。
UML的应用
UML是一种建模语言,不是一 种方法,它独立于过程。利于它建模 时,可遵循任何类型的建模过程。
UML的主要内容
(1)UML融合了Booch、OMT和OOSE方法 中的基本概念,而且这些基本概念与其他面向 对象技术中的基本概念大多相同;
(2)UML不仅仅是上述方法的简单汇合,而 是扩展了现有方法的应用范围;
(2) UML表示法
定义UML符号的表示法,为开发者或开发工 具使用这些图形符号和文本语法为系统建模提 供了标准。这些图形符号和文字所表达的是应 用级的模型,在语义上它是UML元模型的实例。
模型内容的组织和UML表述
UML的用于描述模型的基本词汇(“构造块”):
• 事物(Things) • 关系(Relationships) • 图 (Diagrames)
• Booch方法 • Coad-Yourdon方法 • Rumbaugh 方法(简称OMT)
(Object Modeling Technology)
• Jacobson 方法(简称OOSE) • 由Rumbaugh 、 Booch 、 Jacobson
提出的统一建模语言 (Unify Modeing Language简称UML)
Booch’93 OMT-2
UML的开发历程 UML2.0
UML 1.3 OMG采用,11/97 OMG修正,9/97 UML 1.1
OMG审核,1/97 UML 1.0
OMG认证
10/96 & 9/96 UML 0.9&0.91
UML同行 专家意见
10/95ຫໍສະໝຸດ UML 0.8同阶段。
UML的应用
UML是一种建模语言,不是一 种方法,它独立于过程。利于它建模 时,可遵循任何类型的建模过程。
UML的主要内容
(1)UML融合了Booch、OMT和OOSE方法 中的基本概念,而且这些基本概念与其他面向 对象技术中的基本概念大多相同;
(2)UML不仅仅是上述方法的简单汇合,而 是扩展了现有方法的应用范围;
(2) UML表示法
定义UML符号的表示法,为开发者或开发工 具使用这些图形符号和文本语法为系统建模提 供了标准。这些图形符号和文字所表达的是应 用级的模型,在语义上它是UML元模型的实例。
模型内容的组织和UML表述
UML的用于描述模型的基本词汇(“构造块”):
• 事物(Things) • 关系(Relationships) • 图 (Diagrames)
• Booch方法 • Coad-Yourdon方法 • Rumbaugh 方法(简称OMT)
(Object Modeling Technology)
• Jacobson 方法(简称OOSE) • 由Rumbaugh 、 Booch 、 Jacobson
提出的统一建模语言 (Unify Modeing Language简称UML)
Booch’93 OMT-2
软件工程课件Ch_6 面向对象基础
详细描述的(Specifying)
详细描述意味着建立精确的和无歧义的模型 UML 为所有重要的分析、设计和实现决策提供 了精确的、无歧义的和完整的描述。
33
6.3.1 什么是UML
构造的( Constructing )
UML 不是一种可视化的编程语言,但它所描述的 模型可以映射成不同的编程语言,如 JAVA、C++ 和 Visual Basic 。 正向工程:从 UML 模型到编程语言的代码生成。 逆向工程:由编程语言代码重新构造 UML 模型
12
6.2.1 面向对象基本概念
属性是用来描述对象静态特征的一个数据 项。 服务是用来描述对象动态特征(行为)的 一个操作序列。
13
6.2.1 面向对象基本概念
2.类(Class)是具有相同属性和服务的一组 对象的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在 客观世界中实际存在的类的实例。 类体现了人们认识事物的基本思维方法: 分类 问题:类还是对象?
软件开发的常见问题
需求的错误
• 不完整、不一致、不明确 • 开发人员和用户无法以同样的方式说明需求
需求的变化
• 需求在整个项目过程中始终发生变化 • 设计后期发生改变
持续的变化
• 系统功能不断变化 • 许多变化出现在项目后期 • 维护过程中发生许多变化
系统结构的崩溃
• 系统在不断的变化中最终变得不可用
1
问题的解决方法
解决方法
严格的需求和规划阶段 设计系统结构使其适应变化
分析
问题域相对而言是稳定的
银行系统:帐户、客户、ATM
系统功能和数据表示极有可能发生变化
--面向对象软件工程基础
面向对象方法
• 面向对象方法把问题论域中的主要实体做为系 统开发的起点,主要考虑对象的行为而不是必 须执行的一系列动作。
– 在面向对象方法中,对象是数据抽象与过程抽象的 综合。 – 系统状态保存在各数据抽象所定义的数据存储中。 – 控制流包含在各个数据抽象中的操作内。 – 在面向对象体系结构,消息从一个对象传送到另一 个对象。算法被分布到各种实体中。 在使用面向对象方法开发的系统之中,系统结构基于对象 间的交互。系统中某一部分的改变仅仅产生局部影响。
即:OOSD = OOA + OOD + OOP。
面向对象方法发展
• 面向对象并非是一个新的概念,实际上它已有30 多年的历史。寻其根源可追溯到60年代的挪威, 当时挪威计算中心的Kristen Nygaard和OleJohan Dahl开发了一种称作Simula67的语言。 Simula67首次引入了类、协同程序、子类(虽然 没有继承)和虚过程等概念,这很象今天的面向 对象语言。 • 70年代中期,Xerox Palo Alto研究中心的研究人 员Alan Kay团队设计了Smalltalk语言,该语言 的每个元素都被当作一个对象来实现,其程序设 计环境及相关的各个方面都是面向对象的。
软件工程
--面向对象软件工程基础
内容提要
面向对象方法基本原理 面向对象软件工程基础 案例分析—图书馆管理系统
传统的软件工程方法曾经给软件产业带来了巨
大进步,部分缓解了软件危机。但随着人们对 软件产品的需求日日益增加,其缺点越来越突 出; 为了克服传统软件开发方法的缺点,20世纪70 年代提出了面向对象方法; 面向对象方法经过40多年的发展已经深入到计 算机科学技术的许多领域,其影响甚至已经深 入到计算机软件以外的一些领域。 面向对象软件工程是面向对象方法在软件工程 领域运用的结果。
软件工程基础-6面向对象技术与UML(参考)
GRASP包括4个基本模式和5个扩展模式,描述了对象设计和职 责分配的基本原则
职责是一个类的契约或义务 “做”型职责是通过类的方法来实现的 “知道”型职责是通过类内部封装的属性以及类间关系来 体现
GRASP是如何设计一个面向对象系统的基础
GRASP的9个模式
专家 :应该将职责分配给信息专家(谁的数据谁负责) 创建者 :创建对象的职责(何时,由谁来创建和销毁) 低耦合 :类间的关系代表了类之间的耦合程度 高内聚 :一个类的职责之间的相关程度和集中程度 控制者 :把协调处理系统消息的职责分配给不同控制类 多态 :为不同的派生类分配具体的工作,具有相同接口 纯虚构 :非实体类,从其他类中抽取相关高内聚职责 中介者 :隔离藕合度过大的多个类,可能是虚构的 受保护变化:把易于变化部分封装起来便于扩展
过度的抽象
系统变得过于复杂 代码读起来让人困惑 调试变得更加困难
在系统分析和设计过程中,进行 “适当的”抽象是问题的关键
基本特性之封装
对象向外界隐蔽内部的实现细节,可以看成是一个黑盒
外界通过接口来访问对象
private int _age = 0; public int Age {
读存取器 写存取器
多态
含义同面向对象的基本特性中的多态 当相关的可选择的方法或行为随着类型变化时,将行为的职责
分配给那些行为变化的类型 典型编程应用:用多态的方法判断具体应该用哪个类,而不是
用if来判断类该执行什么行为 指导:尽量对抽象层编程
纯虚构
纯虚构与纯虚函数意思相近 高内聚低耦合是系统设计的终极目标 从某种角度看,内聚和耦合永远都是矛盾对立的 高内聚要求拆分出更多的类,但对象之间需要更多的协作来完
小结
软件系统当中的类和对象是对现实事物的裁剪和变通 抽象是对事物本质特征的精炼和抽取 封装可以隐藏实现细节,使得代码模块化,用于代码复用 继承可以扩展已存在的代码模块(类),用于代码复用 多态通过抽象类和抽象方法等技术,运用运行时绑定技术,实
职责是一个类的契约或义务 “做”型职责是通过类的方法来实现的 “知道”型职责是通过类内部封装的属性以及类间关系来 体现
GRASP是如何设计一个面向对象系统的基础
GRASP的9个模式
专家 :应该将职责分配给信息专家(谁的数据谁负责) 创建者 :创建对象的职责(何时,由谁来创建和销毁) 低耦合 :类间的关系代表了类之间的耦合程度 高内聚 :一个类的职责之间的相关程度和集中程度 控制者 :把协调处理系统消息的职责分配给不同控制类 多态 :为不同的派生类分配具体的工作,具有相同接口 纯虚构 :非实体类,从其他类中抽取相关高内聚职责 中介者 :隔离藕合度过大的多个类,可能是虚构的 受保护变化:把易于变化部分封装起来便于扩展
过度的抽象
系统变得过于复杂 代码读起来让人困惑 调试变得更加困难
在系统分析和设计过程中,进行 “适当的”抽象是问题的关键
基本特性之封装
对象向外界隐蔽内部的实现细节,可以看成是一个黑盒
外界通过接口来访问对象
private int _age = 0; public int Age {
读存取器 写存取器
多态
含义同面向对象的基本特性中的多态 当相关的可选择的方法或行为随着类型变化时,将行为的职责
分配给那些行为变化的类型 典型编程应用:用多态的方法判断具体应该用哪个类,而不是
用if来判断类该执行什么行为 指导:尽量对抽象层编程
纯虚构
纯虚构与纯虚函数意思相近 高内聚低耦合是系统设计的终极目标 从某种角度看,内聚和耦合永远都是矛盾对立的 高内聚要求拆分出更多的类,但对象之间需要更多的协作来完
小结
软件系统当中的类和对象是对现实事物的裁剪和变通 抽象是对事物本质特征的精炼和抽取 封装可以隐藏实现细节,使得代码模块化,用于代码复用 继承可以扩展已存在的代码模块(类),用于代码复用 多态通过抽象类和抽象方法等技术,运用运行时绑定技术,实
面向对象的软件工程PPT
1.4 设计模式介绍
桥(Bridge)模式
动机
思考上述问题的症结所在:事实上,由于Tank类型的固有逻辑, 使得Tank类型具有了两个变化的维度——一个维度的变化为型号的变 化,一个维度的变化是运行平台的变化。
如何应对这种“多维的变化”?如何运用面向对象的技术使得 Tank 类型可以轻松地沿着“型号”和“平台”两个方向来变化,而不引 入额 外的复杂度?
//坦克接口
//各种不同功能的组合
public interface ITank{ public class Tank1A implements ITank,IA
public void shot(); public class Tank2A implements ITank,IA
//……
}
//各种坦克的型号
简单工厂(Simple Factory)模式
工厂模式的缘起
• 变化点在对象创建,因此就封装对象创建。 • 面向接口编程——依赖接口,而非依赖具体实现。
Simple Factory模式(又称Static Factory模式)就是应用的这种 方式。一个Simple Factory生产成品,而对客户端隐藏产品产生的细 节。实现时定义一个产品接口(interface),并透过特定静态方法 来建立成品。
1.4 设计模式介绍
适配器(Adapter)模式
将一个类的接口转换成客户希望的另一个借口。Adapter模式使 得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。
——《设计模式》GoF
类适配器(Adapter)模式的UML结构图如下所示:
1.4 设计模式介绍
Adapter模式的几个要点
动机:
在软件系统中,由于应用环境的变化,常常需要将“一些现存的 对 象”放在新的环境中应用,但是新环境要求的接口是这些现存对象 所 不满足的。 如何应对这种“迁移的变化”?如何既能利用现有对象的良好实 现,同时又能满足新的应用环境所要求的接口?
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6. 多态性(Polymorphism)是指在父类中 定义的属性或服务被子类继承后,可以具 有不同的数据类型或表现出不同的行为。
多态性机制为软件的结构 设计提供了灵活性,减少 了信息冗余,明显提高了 软件的可复用性和可扩充 性。
22
知识回顾
软件工程中的形式化方法 面向对象基本概念
类(Class)和对象(Object) 封装(Encapsulation) 继承(Inheritance) 消息(Message) 多态性(Polymorphism)
10
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基本概念 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
11
6.2.1 面向对象基本概念
1.对象(Object)是系统中用来描述客观事 物的一个实体,它是构成系统的一个基本 单位,由一组属性和对这组属性进行操作 的一组服务组成。
将 OOA 模型直接变成 OOD 模型,并且补充一些与实现有 关的部分,如:人机界面、数据存储、任务管理等。
面向对象编程( Object Oriented Programming,OOP)
用一种面向对象的编程语言将 OOD 模型中的各个成分编写 成程序,由于从OOA→OOD→OOP实现了无缝连接和平滑 过渡,因此提高了开发工作的效率和质量。
一种基于对真实世界中的概念进行抽象而思考问 题的方法
“面向对象方法”不是
使用面向对象编程语言( C++, Eiffel, Smalltalk ) 使用面向对象的符号进行设计
软件工程学家Codd和Yourdon认为:
面向对象=对象 + 类 + 继承
+通信
7
6.1.1 面向对象方法的发展历史
初始阶段
29
6.2.2 软件建模概念
30
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基础 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
31
6.3.1 什么是UML
- 1960’s: Simula 编程语言 - 1970’s: Smalltalk 编程语言
发展阶段
- 1980’s: 理论基础,许多 OO 编程语言(如 C++, Objective-C 等)
成熟阶段
- 1990’s: 面向对象分析和设计方法( Booch, OMT, OOSE 等),java语言 - 1997: OMG(Object Management Group) 组织的统一建 模语言(UML) - 逐渐替代了传统的结构化方法
在面向对象的系统分析和设计中,并不需 要逐个对对象进行说明,而是着重描述代 表一批对象共性的类。
15
6.2.1 面向对象基本概念
16
6.2.1 面向对象基本概念
3. 封装(Encapsulation)是把对象的属性和服务结 合成一个独立的系统单位,并尽可能隐藏对象的内 部细节。 封装的作用
23
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基本概念 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
24
6.2.1 面向对象基本概念
7. 对象之间的联系
面向对象软件维护( Object Oriented Software
Maintenance,OOSM)
在面向对象方法中,各阶段采用的表示是一致的,从而 大大降低了理解的难度,无论是从程序中的错误追溯到 问题域,还是需求的变化需要从问题域追溯到程序,整 个过程都是平坦的。另外,对象的封装性使得一个对象 的修改对其他对象的影响很小,不至于牵一发而动全身。
9
6.1.2 面向对象的软件工程方法
面向对象的测试( Object Oriented Testing,OOT )
面向对象测试是指对于运用 OO 技术开发的软件,在测 试过程中继续运用 OO 技术进行以对象概念为中心的软 件测试 以类作为基本测试单位,集中检查在类定义之内的属性、 服务和有限的对外接口,大大减少了错误的影响范围。
26
6.2.1 面向对象基本概念
消息连接
消息连接是对象之间的通信联系,它表现了对 象行为的动态联系。 一个对象需要另一个对象的服务,便向它发出 请求服务的消息,接收消息的对象响应消息, 触发所要求的服务操作。 消息连接是在具有交互的对象之间的一种基本 联系。
27
6.2.2 软件建模概念
模型
5
6.1 面向对象方法概述
面向对象模型更接近于问题域
以问题域中的对象为基础建模 • 以对象、属性和操作对问题进行建模
•
反复细化高层模型直到可以实现的程度
• 努力避免在开发过程中出现大的概念跳变
将模型组织成对象的集合
• 真实世界中的具体事物
驾驶执照、信用卡、飞机等
6
6.1 面向对象方法概述
将所有信息封装在对象中 “面向对象方法”是
• • • •
分类结构:一般与特殊的关系 组成结构:部分与整体的关系 实例连接:对象之间的静态联系 消息连接:对象之间的通信联系
分类结构
• 分类结构表示的是事物的一般与特殊的关系(“is
•
a”),在面向对象术语中,将一般与特殊的关系称为 泛化(Generalization)联系。 如果在分类结构中存在多继承,将形成一个类的网格 结构。
一个对象向另一个对象发出 消息请求某项服务,接收消息 的对象响应该消息,激发所要 求的服务操作,并将操作结果 返回给请求服务的对象。
20
例如:用户通过遥控器转换电视频道 用户发出的消息包括:
接受者:电视机 要求的服务:转换频道 输入信息:转换后的频道序号 应答信息:转换后频道的节目
21
6.2.1 面向对象基本概念
28
6.2.2 软件建模概念
模型的作用
有助于问题的简化,通过抽象降低复杂性 有助于和其他开发小组成员、各种用户以及系统相关 者进行交流 有助于维护人员了解软件设计的思路和细节,为以后 的维护和升级提供了文档。
模型的类型
数学模型:采用精确的数学公式来描述系统 描述模型:采用自然语言以一种精确的方式描述系统 的某一方面,诸如备忘录、报表、结构化英语、伪码 等。 图形模型:以直观的方式示意性地表示系统的某些方 面。
4. 继承(Inheritance)是指子类可以自动拥 有父类的全部属性和服务。 继承的作用
简化了人们对现实世界的认识和描述 对于软件复用是十分有益
继承的类型
单继承:子类只从一个父类继承 多继承:子类从多个父类继承
18
6.2.1 面向对象基本概念
19
6.2.1 面向对象基本概念
5. 消息(Message)是对象发出的服务请求, 一般包含提供服务的对象标识、服务标识、 输入信息和应答信息等信息。 说明:
12
6.2.1 面向对象基本概念
属性是用来描述对象静态特征的一个数据 项。 服务是用来描述对象动态特征(行为)的 一个操作序列。
13
6.2.1 面向对象基本概念
2.类(Class)是具有相同属性和服务的一组 对象的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在 客观世界中实际存在的类的实例。 类体现了人们认识事物的基本思维方法: 分类 问题:类还是对象?
• 使对象形成两个部分:接口(可见)和实现(不可见) • 信息隐藏将所声明的功能(行为)与内部实现(细节)
分离 • 封装可以保护对象,避免用户误用;也可以保护客户端, 其实现过程的改变不会影响到相应客户端的改变。
• 可见性是指对象的属性和服务允许对象外部存取和
引用的程度。
17
6.2.1 面向对象基本概念
25
6.2.1 面向对象基本概念
组成结构
组成结构表示对象类之间的组成关系(has a),即部分与 整体关系。 组成结构体现了面向对象方法的聚合(Aggregation)原则 组成结构可以表示出复杂的对象层次结构。
实例连接
实例连接表示对象之间的静态联系,它是通过对象的属 性来表现对象之间的依赖关系。 在面向对象术语中,对象之间的实例连接称为链接 (Link),存在实例连接的对象类之间的联系称为关联 (Association)
UML 可以描述开发所需要的各种视图
概念的:业务过程和系统功能 具体的:程序中的类、数据库模式、可重用的 软件构件。
32
6.3.1 什么是UML
可视的(Visualizing)
UML 提供一组具有明确语义的图形符号,可以 建立清晰的模型便于交流,所有开发人员都可 以无歧义地解释这个模型。 UML 代替了传统的“边想边写”开发方式
3
面向对象技术(Object Oriented Technology)比较自然地模拟了人类认识 客观世界的方式,成为当前软件工程学中的 主流方法。是一种抽象思维方式。
4
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基础 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
驾驶执照 Joe Smith 信用卡 Joe 的第一次作业
14
6.2.1 面向对象基本概念
多态性机制为软件的结构 设计提供了灵活性,减少 了信息冗余,明显提高了 软件的可复用性和可扩充 性。
22
知识回顾
软件工程中的形式化方法 面向对象基本概念
类(Class)和对象(Object) 封装(Encapsulation) 继承(Inheritance) 消息(Message) 多态性(Polymorphism)
10
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基本概念 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
11
6.2.1 面向对象基本概念
1.对象(Object)是系统中用来描述客观事 物的一个实体,它是构成系统的一个基本 单位,由一组属性和对这组属性进行操作 的一组服务组成。
将 OOA 模型直接变成 OOD 模型,并且补充一些与实现有 关的部分,如:人机界面、数据存储、任务管理等。
面向对象编程( Object Oriented Programming,OOP)
用一种面向对象的编程语言将 OOD 模型中的各个成分编写 成程序,由于从OOA→OOD→OOP实现了无缝连接和平滑 过渡,因此提高了开发工作的效率和质量。
一种基于对真实世界中的概念进行抽象而思考问 题的方法
“面向对象方法”不是
使用面向对象编程语言( C++, Eiffel, Smalltalk ) 使用面向对象的符号进行设计
软件工程学家Codd和Yourdon认为:
面向对象=对象 + 类 + 继承
+通信
7
6.1.1 面向对象方法的发展历史
初始阶段
29
6.2.2 软件建模概念
30
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基础 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
31
6.3.1 什么是UML
- 1960’s: Simula 编程语言 - 1970’s: Smalltalk 编程语言
发展阶段
- 1980’s: 理论基础,许多 OO 编程语言(如 C++, Objective-C 等)
成熟阶段
- 1990’s: 面向对象分析和设计方法( Booch, OMT, OOSE 等),java语言 - 1997: OMG(Object Management Group) 组织的统一建 模语言(UML) - 逐渐替代了传统的结构化方法
在面向对象的系统分析和设计中,并不需 要逐个对对象进行说明,而是着重描述代 表一批对象共性的类。
15
6.2.1 面向对象基本概念
16
6.2.1 面向对象基本概念
3. 封装(Encapsulation)是把对象的属性和服务结 合成一个独立的系统单位,并尽可能隐藏对象的内 部细节。 封装的作用
23
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基本概念 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
24
6.2.1 面向对象基本概念
7. 对象之间的联系
面向对象软件维护( Object Oriented Software
Maintenance,OOSM)
在面向对象方法中,各阶段采用的表示是一致的,从而 大大降低了理解的难度,无论是从程序中的错误追溯到 问题域,还是需求的变化需要从问题域追溯到程序,整 个过程都是平坦的。另外,对象的封装性使得一个对象 的修改对其他对象的影响很小,不至于牵一发而动全身。
9
6.1.2 面向对象的软件工程方法
面向对象的测试( Object Oriented Testing,OOT )
面向对象测试是指对于运用 OO 技术开发的软件,在测 试过程中继续运用 OO 技术进行以对象概念为中心的软 件测试 以类作为基本测试单位,集中检查在类定义之内的属性、 服务和有限的对外接口,大大减少了错误的影响范围。
26
6.2.1 面向对象基本概念
消息连接
消息连接是对象之间的通信联系,它表现了对 象行为的动态联系。 一个对象需要另一个对象的服务,便向它发出 请求服务的消息,接收消息的对象响应消息, 触发所要求的服务操作。 消息连接是在具有交互的对象之间的一种基本 联系。
27
6.2.2 软件建模概念
模型
5
6.1 面向对象方法概述
面向对象模型更接近于问题域
以问题域中的对象为基础建模 • 以对象、属性和操作对问题进行建模
•
反复细化高层模型直到可以实现的程度
• 努力避免在开发过程中出现大的概念跳变
将模型组织成对象的集合
• 真实世界中的具体事物
驾驶执照、信用卡、飞机等
6
6.1 面向对象方法概述
将所有信息封装在对象中 “面向对象方法”是
• • • •
分类结构:一般与特殊的关系 组成结构:部分与整体的关系 实例连接:对象之间的静态联系 消息连接:对象之间的通信联系
分类结构
• 分类结构表示的是事物的一般与特殊的关系(“is
•
a”),在面向对象术语中,将一般与特殊的关系称为 泛化(Generalization)联系。 如果在分类结构中存在多继承,将形成一个类的网格 结构。
一个对象向另一个对象发出 消息请求某项服务,接收消息 的对象响应该消息,激发所要 求的服务操作,并将操作结果 返回给请求服务的对象。
20
例如:用户通过遥控器转换电视频道 用户发出的消息包括:
接受者:电视机 要求的服务:转换频道 输入信息:转换后的频道序号 应答信息:转换后频道的节目
21
6.2.1 面向对象基本概念
28
6.2.2 软件建模概念
模型的作用
有助于问题的简化,通过抽象降低复杂性 有助于和其他开发小组成员、各种用户以及系统相关 者进行交流 有助于维护人员了解软件设计的思路和细节,为以后 的维护和升级提供了文档。
模型的类型
数学模型:采用精确的数学公式来描述系统 描述模型:采用自然语言以一种精确的方式描述系统 的某一方面,诸如备忘录、报表、结构化英语、伪码 等。 图形模型:以直观的方式示意性地表示系统的某些方 面。
4. 继承(Inheritance)是指子类可以自动拥 有父类的全部属性和服务。 继承的作用
简化了人们对现实世界的认识和描述 对于软件复用是十分有益
继承的类型
单继承:子类只从一个父类继承 多继承:子类从多个父类继承
18
6.2.1 面向对象基本概念
19
6.2.1 面向对象基本概念
5. 消息(Message)是对象发出的服务请求, 一般包含提供服务的对象标识、服务标识、 输入信息和应答信息等信息。 说明:
12
6.2.1 面向对象基本概念
属性是用来描述对象静态特征的一个数据 项。 服务是用来描述对象动态特征(行为)的 一个操作序列。
13
6.2.1 面向对象基本概念
2.类(Class)是具有相同属性和服务的一组 对象的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在 客观世界中实际存在的类的实例。 类体现了人们认识事物的基本思维方法: 分类 问题:类还是对象?
• 使对象形成两个部分:接口(可见)和实现(不可见) • 信息隐藏将所声明的功能(行为)与内部实现(细节)
分离 • 封装可以保护对象,避免用户误用;也可以保护客户端, 其实现过程的改变不会影响到相应客户端的改变。
• 可见性是指对象的属性和服务允许对象外部存取和
引用的程度。
17
6.2.1 面向对象基本概念
25
6.2.1 面向对象基本概念
组成结构
组成结构表示对象类之间的组成关系(has a),即部分与 整体关系。 组成结构体现了面向对象方法的聚合(Aggregation)原则 组成结构可以表示出复杂的对象层次结构。
实例连接
实例连接表示对象之间的静态联系,它是通过对象的属 性来表现对象之间的依赖关系。 在面向对象术语中,对象之间的实例连接称为链接 (Link),存在实例连接的对象类之间的联系称为关联 (Association)
UML 可以描述开发所需要的各种视图
概念的:业务过程和系统功能 具体的:程序中的类、数据库模式、可重用的 软件构件。
32
6.3.1 什么是UML
可视的(Visualizing)
UML 提供一组具有明确语义的图形符号,可以 建立清晰的模型便于交流,所有开发人员都可 以无歧义地解释这个模型。 UML 代替了传统的“边想边写”开发方式
3
面向对象技术(Object Oriented Technology)比较自然地模拟了人类认识 客观世界的方式,成为当前软件工程学中的 主流方法。是一种抽象思维方式。
4
内容提纲
• 面向对象方法概述 – 基本思想与发展历史 – 面向对象的软件工程方法 • 面向对象基础 – 面向对象基本概念 – 软件模型的类型和作用 • 统一建模语言UML – UML语言概述 – UML语言的基本元素 – 常用的UML图
驾驶执照 Joe Smith 信用卡 Joe 的第一次作业
14
6.2.1 面向对象基本概念