ch06-面向对象与UML
面向对象技术与UML
假设有一个“动物”类,我们可以创建一个“狗”类来继承“动物”类,并添加特定的狗的行为。这样 ,如果需要添加其他动物类型,我们可以轻松地创建新的子类,而不需要修改“动物”类的代码。
里氏替换原则
定义
如果S是基类,T是派生类,则程序中使用S类型的对象的地 方都可以用T类型的对象来替换,而不会改变程序的行为。
案例二:复杂类的UML表示
定义一个复杂的类"Employee",包含属性"name"、"age"、 "department"和"position",以及方法"work"、"getSalary"和 "setSalary"。
使用UML类图表示该类,并使用聚合关系表示Employee类与 Department类之间的关系。
示例
一个“用户管理”类可能负责管 理用户信息、用户权限等。如果 它还负责处理订单或管理库存, 那么它就违反了单一职责原则。
开闭原则
定义
软件实体应该通过扩展来增加功能,而不是修改已有的代码。
解释
开闭原则鼓励使用继承和多态来实现软件的可扩展性。这意味着当需要添加新功能时,可以通过创建新的子类或实现 新的接口来扩展现有代码,而不是修改已有的代码。
确定方法
为每个类确定其方 法,包括私有、保 护和公共方法。
确定关联关系
使用实线和虚线表 示类之间的关联关 系。
类图的阅读与分析
阅读
01
首先从上到下、从左到右阅读类图,了解各个类的属性和方法。
分析
02
分析类之间的继承和关联关系,理解系统的层次结构和交互关
系。
工具
第4章 面向对象与UML
系统名称
用例名
系统边界
用例
参与者
关联
图4.8 用例图的组成符号
4.3 静态建模
4.3.1 用例图与用例模型 2.建立用例图
保险商务系统
保险商务系统的用例图
4.3 静态建模
4.3.1 用例图与用例模型
3.用例之间的关系 (1)扩展关系(extend) 基础用例提供了一组扩展点,在这些新的扩展点中可以 添加新的行为,而扩展用例提供了一组插入片段,这些片段 能够被插入到基础用例的扩展点上。基础用例的执行不会涉 及到扩展用例,只有特定的条件发生,扩展用例才被执行。
4.3 静态建模
4.3.1 用例图与用例模型
3.用例之间的关系 (2)包含关系(include) 当一个用例的行为包含另一个用例的行为时,这两个用 例之间就构成了包含关系。
4.3.2 类图和对象图
1.类图和对象图 (1)类图 类描述同类对象的属性和行为。类图可表 示类(包括类名、类的属性和操作)和类之 间的关系。
销售部:部门
成员
4.2.1 UML的组成
3.图和视图 UML是用来描述模型的,它用模型来描 述系统的结构或静态特征以及行为或动态特 征。它从不同的视角为系统建模型,形成不 同视图,每个视图由一组图构成,图中包含 了强调系统某一方面的信息,显示了这个系 统中一个特定的方面。UML中包含两类图和 5种视图。
③ 进程视图
用途:考虑资源的有效利用、代码的并行执行以及系统环境中 异步事件的处理。 进程视图用于展示系统的动态行为及其并发性。 使用者:主要是开发人员和系统集成人员。
组成:状态图、时序图、协作图、活动图、构件图、部署图来 描述。
4.2.1 UML的组成
面向对象的方法与UML
状态图能够清晰地表示出对象在不同状态下的行为,以及对象如何响 应外部事件或消息。
分析和设计复杂系统
对于复杂的系统,状态图可以帮助开发人员理解和分析系统的行为, 从而更好地进行系统设计。
测试和验证
状态图可以作为测试和验证系统行为的依据,通过比较实际行为与预 期行为的一致性来验证系统的正确性。
随着云计算、大数据等技术的发展,面向对 象方法和UML也需要不断适应新的应用场景 和技术趋势,例如分布式系统、微服务架构 等。
未来可能会出现更加智能化的建模工 具,能够自动或半自动地生成UML模 型,减少手动建模的工作量。
面向对象方法和UML的培训和教育也将更 加重要,帮助开发人员掌握正确的建模方 法和工具,提高开发效率和软件质量。
条件判断
在某些情况下,状态迁 移可能需要根据特定条 件进行判断。条件判断 可以用一个菱形表示, 菱形内部标注判断条件 ,箭头从菱形指向满足
条件后的目标状态。
动作执行
在状态迁移过程中,可 能需要执行某些动作或 操作。这些动作可以在 箭头上方或下方标注, 表示在状态迁移过程中
需要执行的操作。
活动图概念及作用
要点二
扩展关系
表示一个用例(基础用例)在特定条 件下可以被另一个用例(扩展用例) 扩展或修改。在UML中,使用带箭头 的虚线表示,箭头指向基础用例,并 在箭头上标注《extend》。
要点三
泛化关系
表示一般与特殊的关系,即一个较通 用的用例(父用例)可以被特化出更 具体的用例(子用例)。在UML中, 使用带空心三角形的实线表示,三角 形指向父用例。
PART 01
面向对象方法概述
面向对象思想
封装
将数据和操作封装在一起,形成 “对象”,隐藏内部实现细节,
面向对象设计与UML建模
面向对象设计与UML建模随着软件开发的不断发展和复杂性的增加,面向对象设计和UML建模成为了软件开发过程中重要的工具和方法。
面向对象设计是一种以对象为中心的开发方法,它将问题领域中的事物抽象为对象,通过定义对象之间的关系来解决问题。
UML (统一建模语言)是一种图形化的语言,用于描述软件系统的结构和行为。
在面向对象设计中,最核心的概念是类和对象。
类是一种抽象的数据类型,用于描述一类具有相同属性和行为的对象。
对象是类的一个实例,具有特定的属性和行为。
在设计过程中,需要首先识别对象,然后定义对象之间的关系和交互。
UML提供了多种图形表示法,用于描述软件系统的结构和行为。
其中最常用的有类图、对象图以及活动图。
类图用于表示系统中的类和它们之间的关系,包括继承、聚合、关联等。
对象图用于展示系统中对象的实例及其关系。
活动图则用于描述系统的行为流程,包括活动、动作、决策等。
在使用UML建模时,需要注意几个重要的原则。
首先是简化原则,即在建模过程中要保持简洁和清晰,尽量避免冗余和过度复杂。
其次是一致性原则,即保持模型的一致性,确保不同图之间的关系和对象的属性是一致的。
另外还有可维护性原则,即建立易于维护和修改的模型,使得软件开发过程更加高效和可靠。
面向对象设计和UML建模的优势主要体现在以下几个方面。
首先是可重用性,面向对象设计将系统划分为多个独立的对象,这些对象可以在不同的系统中被重复使用,提高了开发效率和代码质量。
其次是可扩展性,通过定义对象之间的关系和交互,系统可以方便地进行扩展和修改,适应不断变化的需求。
另外还有可维护性,通过使用UML建模可以清晰地描述系统的结构和行为,使得维护和修改更加简单和可靠。
当然,面向对象设计和UML建模也存在一些挑战和限制。
首先是复杂性,系统的复杂性会随着对象的增加而增加,特别是当系统规模较大时,需要花费更多的时间和精力来进行建模和设计。
其次是技术难度,面向对象设计和UML建模需要一定的技术储备和经验,对于一些初学者来说可能会有一定的难度。
面向对象方法学与UML课件
依赖关系
面向对象方法学与UML
关联关系
• 关联(association)是一种结构关系,它描述了两 个或多个类的实例之间的连接关系,是一种特殊 的依赖。
• 关联分为普通关联、限定关联、关联类,以及聚 合与复合。
面向对象方法学与UML
关联关系——普通关联
• 普通关联是最常见的关联关系,只要类与类之间 存在连接关系就可以用普通关联表示。普通关联 又分为二元关联和多元关联。
面向对象方法学与UML
4.2 面向对象的开发方法
面向对象软件开发方法的特征 ➢方法的唯一性 即方法是对软件开发过程所有阶段进行综合 考虑而得到的。 ➢从生存期的一个阶段到下一个阶段的高度连 续性 即生存期后一阶段的成果只是在前一阶段成 果的补充和修改。 把面向对象分析(OOA)、面向对象设计 (OOD)和面向对象程序设计(OOP)集成到生 存期的相应阶段。
面向对象方法学与UML
消息通信(Message Communication)
• 消息是一个对象与另一个对象的通信单元,是要求 某个对象执行类中定义的某个操作的规格说明。
• 发送给一个对象的消息定义了一个方法名和一个参 数表(可能是空的),并指定某一个对象。
• 一个对象接收到消息,则调用消息中指定的方法, 并将形式参数与参数表中相应的值结合起来。
• 但在某些情况下,需要对关联关系的语义做详细的定义、 存储和访问,为此可以建立关联类(association class),用来描述关联的属性。
• 关联中的每个链与关联类的一个实例相联系。关联类通过 一条虚线与关联连接。
面向对象方法学与UML
关联关系——聚合
• 聚合(Aggregation)也称为聚集,是一种特殊 的关联。它描述了整体和部分之间的结构关系。
面向对象设计与UML建模
面向对象设计与UML建模面向对象设计是一种软件开发方法,它将现实世界的实体抽象为对象,并以对象之间的相互关系来组织和描述系统的行为。
而UML(统一建模语言)是一种用于可视化、规范化软件系统设计的标准建模语言。
本文将从面向对象设计的概念入手,介绍面向对象设计与UML建模的关系及应用。
一、面向对象设计的概念面向对象设计(Object-oriented Design)是一种以对象为中心的软件开发方法。
在面向对象设计中,将系统中的各个对象抽象出来,通过定义对象之间的属性和方法,以及对象之间的关系,来描述系统的功能和行为。
面向对象设计的核心思想是将现实世界的实体抽象为对象,对于每个对象,描述其属性和方法,并通过对象之间的交互来实现系统的功能。
这样的设计方式使得系统更加模块化,易于扩展和维护。
二、UML建模的概念UML(Unified Modeling Language)是一种用于规范化、可视化软件系统设计的标准建模语言。
它提供了一套丰富的符号和约定,用于描述系统的结构、行为和交互。
UML建模是面向对象设计的重要工具之一,它能够帮助开发人员更好地理解和设计系统。
通过使用UML,开发人员可以绘制出类图、时序图、用例图等各种类型的图表,来描述系统的不同方面和视角。
三、面向对象设计与UML建模的关系面向对象设计与UML建模是紧密相关的。
面向对象设计将系统抽象为对象,定义了对象的属性和方法,以及对象之间的关系。
而UML建模则是通过各种类型的图表来表示和描述这些对象、属性、方法和关系。
具体来说,面向对象设计中的类可以通过UML的类图来表示。
类图用于描述系统中的类及其之间的继承、关联、聚合等关系。
类图能够清晰地展示系统的结构,有助于开发人员对系统进行整体把握和分析。
此外,面向对象设计中的时序和交互可以通过UML的时序图、活动图和通信图来表示。
时序图用于描述对象之间的交互顺序,活动图用于描述系统的流程和行为,通信图用于描述对象之间的消息传递。
面向对象技术与UML
继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。
UML与面向对象设计的关系与对比解析
UML与面向对象设计的关系与对比解析在软件开发领域,UML(统一建模语言)和面向对象设计是两个重要的概念。
它们之间存在着密切的关系,同时也有一些区别。
本文将对UML与面向对象设计的关系进行分析,并对它们的对比进行解析。
1. UML的概述UML是一种用于软件开发的图形化建模语言,它提供了一套丰富的符号和图形表示方法,用于描述软件系统的结构、行为和交互。
UML可以帮助开发人员更好地理解和沟通软件系统的设计和实现。
它包括了用例图、类图、时序图、活动图等多种图形表示方法,每种方法都有其特定的用途和表达能力。
2. 面向对象设计的概述面向对象设计是一种软件开发方法,它以对象为基本单位,通过封装、继承和多态等特性来组织和管理软件系统。
面向对象设计将系统分解为一系列的对象,每个对象都具有自己的属性和行为,并且可以通过消息传递来进行交互。
面向对象设计强调系统的可扩展性、可维护性和可重用性,它使得软件系统更易于理解和修改。
3. UML与面向对象设计的关系UML与面向对象设计有着密切的关系,它们可以相互促进和支持。
首先,UML提供了一种通用的建模语言,可以用于描述和分析面向对象设计中的各个方面。
开发人员可以使用UML来绘制类图、时序图等,以更好地理解和表达系统的结构和行为。
同时,UML也提供了一些规范和准则,可以帮助开发人员在进行面向对象设计时遵循一定的原则和约束。
另外,UML还可以作为面向对象设计的工具,帮助开发人员在系统设计和实现过程中进行可视化建模。
通过使用UML工具,开发人员可以快速创建和修改类图、时序图等,从而更好地组织和管理系统的结构和行为。
UML工具还提供了一些辅助功能,如代码生成、自动化测试等,可以提高开发效率和质量。
4. UML与面向对象设计的区别尽管UML与面向对象设计密切相关,但它们之间仍然存在一些区别。
首先,UML是一种建模语言,它更多地关注于系统的描述和分析,而不是具体的设计和实现。
UML提供了一些符号和图形表示方法,用于描述系统的结构和行为,但它并没有规定具体的设计和实现方式。
面向对象的概念与UML
1
第三章 面向对象方法与UML
3.1 面向对象系统的概念 3.2 统一建模语言UML概述 3.3 UML的模型元素 3.4 UML的图 3.5 UML的元模型结构
2
3.1 面向对象系统的概念
❖ 客观世界中的应用问题面对的主体都是物理的或 概念的实体。
❖ 从这些实体出发,分析实体的作用、责任以及它 们之间协作,从而找出问题的解,是很自然的。
9
quadrilateral1
(46, 37) (50, 45) (60, 35) (56, 10)
draw move(x, y) contains(aPoint)
quadrilateral2
(35, 60) (35, 85) (50, 85) (50, 60)
draw move(x, y) contains(aPoint)
▪ 继承是使用已有的类定义做为基础建立新类的定 义技术。
▪ 已有的类可当做泛化类(父类)来引用,则新类 相应地可当做特化类(子类)来引用。
▪ 子类自动共享父类中的数据和方法
14
❖ 建立继承结构的好处: 易编程、易理解 代码短, 结构清晰 易修改 共同部分只要在一处修改即可 易增加新类 只须描述不同部分
Private int age; Float height;
//C++中数据成员
………………. Public
Void growup;
//C++中成员函数
…………..
}
11
基本概念-实例
实例(Instance):特定类中的一个具体对象,称为实 例。 如Zhang是Humanbeing中的一个实例。 Class Humanbeing
面向对象和UML
课程取消 系统应允许注册员取消课程。通常,注册员在注册期结束前检查所有的 课程,并取消那些没有任课教师或者选课人数少于 3 人的课程。课程 注册员通过电话或邮件通知选择了被取消课程的学生。 学生收费 在注册期结束后,系统将给收费系统发出通知。这些通知应包括学生姓 名、地址、所选课程和收费金额。 输入、更新和查看教授信息 系统应接受和更新教授信息,包括姓名、地址、电话、传真和电子邮件 地址。教授信息应能够让教授和课程注册员查看。 查看学生成绩 系统应允许学生查看某门课程的成绩或全部的成绩报告单。同时,系统 应保护学生的成绩信息,除了学生本人和教授以外的其他用户不能访 问这些信息。 选择要讲授的课程 系统应使教授能够在注册期结束前登记要讲授的课程。 输入、更新和查看学生信息 系统应接受和更新学生信息,包括学生的 ID、姓名、地址、电话、和电 子邮件地址。学生信息应能够让教授和课程注册员查看。系统应确保 学生只能访问他(她)本人的信息。注册员维护学生信息。
实例:大学课程注册系统
登录: 学生、教授和课程注册员都必须提供有效的 ID 和口令才能 进入课程注册系统。当用户申请进入学院时,他们将得到 ID 和临时口令。系统应允许用户修改他们的临时口令。 课程注册 系统根据学生的请求向学生显示可选的课程。学生应可以 根据课程名称、课程代码和所在系来对课程进行查询。系 统将接受学生的课程注册,并根据课程的开设情况、课程 表冲突和完成必修课程等情况来进行核实。如果课程注册 没有成功,那么系统应立即通知学生。 在注册期结束以前,系统应允许学生更改课程选择。
课程信息
用例
用例是对一组动作序列的描述,系统执行 该动作序列来为参与者产生一个可观察的 结果值。用例用一个椭圆表示。用例描述 的是一个系统做什么,而不是怎么做。 用例间的关系:include,extend 实例中的用例:
UML与面向对象设计的关系与区别
UML与面向对象设计的关系与区别UML(Unified Modeling Language)是一种用于软件开发的标准建模语言,它提供了一套丰富的图形符号和规则,用于描述软件系统的结构、行为和交互。
而面向对象设计是一种软件开发方法,它将现实世界中的对象抽象成软件中的类,并通过类之间的继承、关联、聚合等关系来构建软件系统。
UML与面向对象设计之间存在着紧密的关系,同时也有一些区别。
本文将从不同的角度探讨UML与面向对象设计的关系与区别。
1. 角色与目的:UML是一种建模语言,它的主要目的是帮助开发人员在软件开发的不同阶段进行沟通和交流。
通过使用UML,开发人员可以更清晰地表达他们的设计想法,从而减少误解和沟通障碍。
而面向对象设计则是一种开发方法,它的主要目的是使用面向对象的思想来构建软件系统,提高系统的可维护性和可扩展性。
2. 表达方式:UML使用图形符号来表示软件系统的结构和行为,包括类图、对象图、时序图、活动图等。
这些图形符号可以直观地展示系统的组成部分和它们之间的关系。
而面向对象设计则更注重于类的设计和组织,通过类的继承、关联、聚合等关系来描述系统的结构和行为。
3. 范围和应用:UML可以应用于不同的软件开发阶段,包括需求分析、系统设计、详细设计等。
它可以帮助开发人员在不同的阶段进行建模和分析,从而提高系统的质量和可靠性。
而面向对象设计主要应用于系统设计阶段,它通过抽象和封装的方式来构建系统的模块和组件,从而实现系统的可维护性和可扩展性。
4. 重点和关注点:UML更注重于系统的整体结构和行为,通过类图和对象图等方式来描述系统的组成部分和它们之间的关系。
它强调系统的静态结构和动态行为,从而帮助开发人员更好地理解和分析系统。
而面向对象设计则更注重于类的设计和组织,通过类的继承、关联、聚合等关系来描述系统的结构和行为。
它强调系统的模块化和可重用性,从而提高系统的可维护性和可扩展性。
5. 工具和技术:UML可以使用各种建模工具来进行建模和分析,包括Enterprise Architect、Rational Rose等。
第1章 UML与面向对象
面向对象的软件开发
• 面向对象的分析(OOA):从问题域中 获取需要的类和对象,以及它们之间的 关系,主要表达“做什么”。
• 面向对象的设计(OOD):建立可靠的 、可实现的系统模型,完善OOA的成果 ,表达“怎么做”。
• 面向对象的编程(OOP):利用某种支 持面向对象的语言实现系统中的类,对 象,并使得系统能够正常运行。
• 概括地说,面向对象方法的基本思想包括两个主 要方面。一方面是从现实世界中客观存在的事务出 发来构造软件系统,并在系统的构造中尽可能地运 用人类的自然思维方式。开发一个软件是为了解决 某些问题,这些问题所涉及的业务范围称为该软件 的问题域。面向对象方法强调直接以问题域中的事 物为中心来思考问题、认识问题,并根据这些事物 的本质特征把它们抽象为系统中的对象,以对象作 为系统的基本构成单位。这可以使系统直接地映射 问题域,保持问题域中的事物及其相互关系的本质 。
1
本章学习要点:
• 理解面向对象概念 • 了解OO开发 • 熟悉OO开发的优点 • 掌握OO开发三层设计 • 了解模型的作用 • 了解面向对象的主要概念 • 了解UML的发展 • 掌握UML四层结构 • 了解统一的含义 • 理解UML视图和图的关系 • 掌握UML模型元素内容 • 理解UML通用机制 • 了解UML建模在软件开发中应用
8
6.多态性
同一个方法在不同的场合表现出不同的功能。
private void button1_Click(object sender, EventArgs e)
{
label1.Text = add(38,48).ToString();
}
private int add(int x, int y)
{
第4章 面向对象与UML
第4章 面向对象与UML Chapter 4 Object-Oriented & UML
4.1 面向对象概述 4.1.1 对象和类
行不同的处理,称为多态。
4.1.3 面向对象开发的优点
1.提高软件系统的可复用性
2.提高软件系统的可扩展性 3.提高软件系统的可维护性
4.2 UML简介 ●面向对象的思想起源于60年代末期 ,至80年代 已出 现了一些早期的面向对象语言,如Smalltalk 等。从 1986年开始,面向对象方法得到迅猛的发展,相继诞
4.2.1 UML的组成
1.UML的模型元素
UML定义了两类模型元素:一类用于表
示模型中的某个概念(实体),如类、
对象、构件、用例等;另一类用于表示
模型元素之间相互连接的关系,如关联、
泛化、依赖、聚集 等。
2.UML的元模型结构(略)
3. 图和视图 (1) 图(Diagram ): UML提供了两大类的 图—静态图和动态图,共计9种不同的图。 ① 静态图(Static Diagram ) :包括用例 图、类图、对象图、构件图和部署图。 ② 动态图(Dynamic Diagram ) :包括 状态图、时序图、协作图和活动图。 (2) 视图(View) :包括用例视图、逻辑视图、 并发视图、构件视图和部署试图。
类图表示类以及类之间的相互关系。
●类图由划分成3格的长方形表示(长式表示),
下面2个格子可省略(短式表示)。图形符号如下:
①类的长式表示 类名 可见性 属性名: 类型 = 默认值 …… 可见性 操作名(参数表):返回类型 ……
面向对象与UML1
统一建模语言
UML概述
UML是一种语言 UML是一种可视化语言
UML是一种可用于详细描述的语言
UML是一种构造语言 UML是一种文档化语言
事物
结构事物 行为事物 分组事物 注释事物
依赖 关联 泛化 实现 聚集
关系
图 类图 对象图 包图 组合结构图 构件图 部署图 制品图
公共机制
规格说明 修饰 公共分类 扩展机制
用例图(用例) 顺序图/序列图 通信图/协作图 定时图 状态转换图 活动图 交互概览图
18
抽象
数据抽象
制造商 模块数 类型 转动方向
插入 灯 类型 数量 重量
打开机制
实现为一个数据结构
19
抽象 过程抽象
进门细节 算法
用与进门有关的对象的“知识” 来实现 20
封装
封装 属性和操作统一为一体,隐藏内部构造。 提高对象的独立性 公开可以让外部调用的操作(接口) 接口相同的话对象可自由组合
接口 对象A
对象B 交换可能 对象C
7
面向对象的优点(3)
对应变化很强。即易扩展,维护性强
由于有封装性,多态性等,
即便数据的型或数有变化,只需变更自己的操作(方法)的算法。 操作的用法(接口)没有变化的话,对其他对象没有影响。 容易通过差分编程进行扩张。
没有影响
对象
对象
操作 即便属性或操作逻辑发生变更, 可在对象自身内吸收。 属性
第四章面向对象与UML
需求模型概述
结构化需求模型 面向对象需求模型 画用例图 写用例规约 描述补充规约 编写术语表
面向对象的需求建模
数据模型 数据流图 数据定义...... 数据字典
E-R图
加工说明 判定树 判定表 PDL 状态转换图 行为模型 控制流图和控制说明
用例建模
绘制和检查用例图
按UML标准画用例图 检查用例图 内容包括:
细化每个用例的用例规约
简要说明 事件流 特殊需求 前置条件和后置条件
用例模型的检查
功能需求的完备性 模型是否易于理解 是否存在不一致性 避免二义性语义
用例建模示例
选课系统问题陈述
开发一个学生选课系统。通过这个系统,学生可以选课和查看成绩 报告单,教授可以选择所教的课和记录学生的成绩。学校保留原有的 “课程目录”数据库系统来维护课程信息,但该系统的性能是有限的。 所以新系统必须确保能及时访问旧系统上的数据。但新系统只能读取旧 系统的课程信息,不能更新。每学期开始时,学生请求查看本学期开设 的课程目录。有关课程的信息,包括教授名和所开设的系等,将帮助学 生做出决定。系统允许学生每学期选择4门课,如果学生没有选到主要的 课程,还有两门备选课程可选。每门课的学生人数限3到10人。不满3人 的课程将被取消。另外,每个学期有一段时间让学生更改课程表。学生 可在该时段内访问系统并添加/删除课程。某个学生的选课一旦结束,选 课系统即将此学生本学期的账单信息送到财务系统。如果在选课时某门 课已经人满,学生在提交信息前必须被告知。学期结束,学生可进入系 统查看自己的成绩。成绩属于隐秘信息,系统必须提供额外的安全措施 阻止未授权的访问。教授必须能访问系统查询他们主讲课程。他们也需 要知道是哪些学生选择了自己的课程。另外,教授也能登记学生的成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息系统分析与设计
三、为什么要面向对象?
2.面向对象更符合模块化要求
模块的特征 模块的基本特征是抽象和实现信息隐藏。模块分模块界 面和模块体两部分。模块对外的联系和相互作用只能通 过模块接口进行。模块体是模块的具体实现细节,对外 是不可见的。 抽象和信息隐藏正是面向对象的主要特征。 模块化原则 可分解性:降低系统的复杂程度;模块应该具备一定的 层次结构。 可组合性:组合的模块中有些是可以复用的;模块必须 具备较高的通用性和适用性,具备规范的接口,易于组 装。 可理解性:模块必须具有完整的语义特征,易于理解。 第6章 面向对象与UML 信息系统分析与设计 面向对象正好满足模块化的要求。
第6章 面向对象与UML
逻辑视图 (Logic view)
实现视图 (Implementation view) 用例视图 (Use case view)
进程视图 (Process view)
部署视图 (Deployment view)
信息系统分析与设计
第三节 UML图
UML图
UML提供了九种不同的图(Diagrams),分为静态图和动态图两大 类。 静态图(结构图) 用例图(Use case diagram)
第6章 面向对象与UML 信息系统分析与设计
二、面向对象的基本概念 7.多态性 多态性(polymorphism)指相同的操作(或 函数,过程)可作用于多种类型的对象并获得不 同的结果。在面向对象方法中,可给不同类型的 对象发送相同的消息,而不同的对象分别做出不 同的处理。例如给整数对象和复数对象定义不同 的数据结构和加法运算,但可以给它们发送相同 的消息“做加法运算”,整数对象接收此消息后 做整数加法运算,复数对象则做复数加法运算, 产生不同的结果。多态性增强了软件的灵活性、 重用性、可理解性。
第6章 面向对象与UML 信息系统分析与设计
三、为什么要面向对象?
1. 面向对象技术采用主体-动作模式来刻画世界,符合人类认识世界的 规律。 现实世界就是由普遍联系的对象构成的。
系统的易变性和稳定性
功能数据流实体对象(过程抽象数据抽象) 需求容易变; 外部界面容易变; 数据属性容易变; 问题空间的对象是稳定的。
第6章 面向对象与UML
信息系统分析与设计
第二节 UML简介
一、UML概述
1.UML背景 UML 是这些最好的建模方法中最好部分的集成
第6章 面向对象与UML
信息系统分析与设计
一、UML概述
2.UML简介 UML是一种建模语言
UML是一种可视化的语言
UML是一种可用于详细描述的语言 UML是一种构造语言
第6章 面向对象与UML
第一节 面向对象方法
面向对象方法
所谓面向对象技术,顾名思义,就是以对象观点来分析现 实世界中的问题。从普通人认识世界的观点出发,把事物 归类、综合,提取共性并加以描述。 在面向对象的系统中,世界被看成是独立对象的集合,对 象之间通过过程(在面向对象术语中称之为“消息”)相 互通信。 面向对象方法是一种运用对象、类、继承、封装、聚合、 消息传送和多态性等概念来构造系统的软件开发方法。 面向对象是近20年来国内外IT行业最为关注的技术之一, 面向对象技术是一种按照人们对现实世界习惯的认识论和 思维方式来研究和模拟客观世界的方法学。
第6章 面向对象与UML
信息系统分析与设计
二、面向对象的基本概念 1.对象 在面向对象方法中,对象是一组数据(属性)和 施加于这些数据上的一组操作代码(操作)构成 的独立类体。 换言之,对象是一个有着各种特殊属性(数据) 和行为方式(方法)的逻辑实体。 对象是一个封闭体,它向外界提供一组接口界面, 外界通过这些接口与对象进行交互,这样对象就 具有较强的独立性、自治性和模块性,从而为软 件的重用奠定了坚实的基础。
三、为什么要面向对象?
3.对象封装和继承可以很好地支持软件复用。 对象封装允许应用开发者将对象模块视作黑匣子,通过界 面去理解和操作对象,而不去关心实现细节;(接口复用) 对象继承容许对象实现复用具有相同特性的其它对象的代 码,而不要去重复开发。(代码复用) 基于对象的统一的语义模型,对象技术可提供统一的机制 (如对象总线)将对象模块组装在一起,极大地复用已有的 对象,满足各种应用需求。除了各种可复用的公共对象模 块外,信息化社会的进步还要求人们开发满足各种应用需 求的领域对象。(对象复用)
第6章 面向对象与UML
信息系统分析与设计
二、面向对象的基本概念
5.继承 继承是对象类间的一种相关关系,指对象继承它所在类的 结构、操作和约束,也指一个类继承另外一个类的结构、 操作和约束。继承体现了一种共享机制。 继承机制既是一个对象类获得另一对象类特征的过程,也 是一个以分层分级结构组织、构造和重用类的工具。它是 解决客观对象“相似但又不同”的妙法。 继承机制具有能清晰体现相似类间的层次结构关系;能减 小代码和数据的重复冗余度,大大增强程序的重用性;能 通过增强一致性来减少模块间的接口和界面,大大增强程 序的易维护性等特点。
“A Fool with a Tool is Still a Fool!” UML只是我们表达建模思想的工具,其背后的思想才是最重要的。
第6章 面向对象与UML 信息系统分析与设计
二、UML体系结构
视图(view):表示系统建模的多个方面,多个视图应 该保持一致性; 用例视图(use case view):用于描述系统应该具 备的功能集合,它是从系统的外部用户角度出发对 系统的抽象。(描述系统做什么) 主要使用用例图;偶尔使用活动图。 逻辑视图(logical views):描述系统的静态结构 和动态行为(描述系统怎么做的) 类图、对象图(静态建模机制),状态图、序 列图、协作图、活动图(动态建模机制) 进程视图(Process view) :进程视图体现了系 统的动态或行为特征,进程视图描述将系统分解为 进程和任务,以及这些并发元素之间的通信与同步。 由动态建模机制中的图组成 实现视图(Implementation view):实现视图体 现了系统实现的结构和行为特征,描述用于组建系 统的物理组件。 由构件图构成 部署视图(deployment view):显示系统的物理结 构 由部署图构成
第6章 面向对象与UML
信息系统分析与设计
三、为什么要面向对象?
4.面向对象方法使开发的系统更易维护 软件开发过程不同阶段应该采纳相同的系统模型,使得不 同阶段之间的信息不会因为转移而发生变形;如果发生变 形,软件的追踪性就无法得到保证,软件的验证非常困难。 面向对象的系统开发各阶段都是使用统一的建模方法。 企业信息系统必须适应环境的经常性变化,应该根据企业 内部的真实对象对系统进行建模,这样当系统的功能发生 变化时,只需要对真实对象的功能进行改变,而其接口可 以不发生变化。
第6章 面向对象与UML
信息系统分析与设计
二、面向对象的基本概念 4.类 在面向对象的软件技术中,类可以定义为由数据 结构及相关操作所形成的集合,或所有相似对象 的状态变量和行为构成的模板。 类是对一组对象的抽象归纳与概括,更确切地说, 类是对一组具有相同数据成员和相同操作成员的 对象的定义或说明。而每个对象都是某个类的一 个具体实例。
第6章 面向对象与UML
信息系统分析与设计
1. OO方法的产生和发展 面向对象的思想首先出现在程序设计的语言中, 即面向对象的程序设计方法(ObjectOriented Programming, OOP) 真正的面向对象设计(OOP)还是来源于Alan Keyz主持设计的Smalltalk语言 20世纪80年代中期,也就是C++ 语言十分热 门的时候,面向对象分析(OOA)的研究开始发 展,进而延伸到面向对象设计(OOD)
结构化分析方法:面向功能
程序=(算法)+(数据结构)
软件结构严重依赖于功能,而功能是软件开发中最不稳定的因素。 数据和操作相分离 面向对象将系统变化限制在对象范围内,并加以控制,变化对系统的影 响范围小。
对象=(算法+数据结构) 程序= 对象 + 关系
第6章 面向对象与UML
第6章 面向对象与UML 信息系统分析与设计
二、面向对象的基本概念 3.方法 “方法”对应于对象的能力,它是实现对象所具 有的功能操作代码段,是响应消息的“方法”。 方法是类中定义的成员函数,它是该类对象所能 执行的操作的算法实现。 方法与消息是一一对应的,每当对象收到一个消 息,方法正是与对象相连决定怎么做的操作执行 代码。所以方法是实现每条消息具体功能的手段。
第6章 面向对象与UML 信息系统分析与设计
一、用例图(Use Case Diagram)
Use Case
Actor
用例图是显示一组用例、参与者,以及它们之间关系的图 用例图以一种可视化的方式描述系统的功能需求 用例图从用户角度描述系统功能 用例图是其他模型的基础 用例图只能静态地描述系统功能,为了描述系统的行为, 可以使用活动图、顺序图等。 用例图多用于静态建模阶段(主要是业务建模和需求建模)。
UML是一种文档化语言
总之,UML 是一种基于面向对象的、可视化的、可用于开 发全过程的标准建模语言。 具有面向对象、表示能力强、独立于开发过程和程序语言 等特点。
第6章 面向对象与UML 信息系统分析与设计
一、UML概述
3.UML主要内容 UML体系比较复杂,但主要有三个方面的内容: (1)UML基本图素。它是构成UML模型图的基本元素。 (2)UML模型图及建模规则。UML基本图素按特定的规则有 机地组合而成模型图,从而构成一个有机的、完整的 UML 模型图。 (3)UML的扩展机制。 UML具有很广的应用领域,其中最常用的是为软件系统建模, UML还可用来描述其他非软件系统,如一个机构的组成或 机构中的工作流程等。