uml类图-对象图-包图.ppt_第1页
uml类图-对象图-包图.ppt_第2页
uml类图-对象图-包图.ppt_第3页
uml类图-对象图-包图.ppt_第4页
uml类图-对象图-包图.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

类图 什么是类图 类图的应用 类图的组成 类图的建模技术 对象图 包图 实例分析图书管理系统 本次课主要内容 Example 什么是类图? 类(Class)、对象(Object)和它们之间的关 系是面向对象技术中最基本的元素。类图 技术是OO方法的核心。 类图标加上它们之间的关系就构成了类图 。 A class diagram is a graphic presentation of the static view that shows a collection of declarative (static) model elements, such as classes, types, and their contents and relationships. 类图的应用 类图用于对系统静态设计视图建模。与数据模型 不同,它不仅显示了信息的结构,同时还描述了 系统的行为。 类图中可以包含接口,包,关系等建模元素,也 可以包含对象,链等实例。 类图典型的应用在下面三类建模: 对系统的词汇建模 对简单协作建模 对逻辑数据库模式建模 类图的组成 类图通常包含下述内容: 类 接口 协作 依赖、泛化和关联关系 类图可以包含注解和约束; 类图还可以有包或子系统,二者都用于把 模型元素聚集成更大的组件。 类(Class) A class is the descriptor for a set of objects with similar structure, behavior, and relationships. 在UML中,类可视 化表示为划分成三 个格子的长方形, 如图所示: 类名 属性 操作 接口(Interface) 接口是一组用于描述类或构件的一个服务的操作 。在图形上,把接口画为一个圆;其扩展形式是 接口表示为一个构造型化类。 协作(Collaboration) 协作是一组类、接口和其他元素的群体,它们共 同工作,提供比各组成部分的功能总和更强的合 作行为。 练习:请为下面这段Java代码补充类图 pulic class Student private String name; public void setName(String name) =name; public String getName() return ; 回答问题 在学校中,一个学生可以选修多门课程,一 门课程可以由多个学生选修,那么学生和课 程之间是( )关系。 类A的一个操作调用类B的一个操作,且这 两个类之间不存在其他关系,那么类A和类 B之间是( )关系。 在MFC类库中,Window类和 DialogBox类之间是( )关系。 类的关系 类之间的静态关系主要有: 依赖:它表示类之间的使用关系(包括精化、 跟踪和绑定关系) 泛化:它把一般类连接到它的特殊类; 关联:它表示对象之间的结构关系。 类的依赖 A dependency is a relationship between two elements in which a change to one element (the supplier) may affect or supply information needed by the other element (the client). 有两个元素X、Y,如果修改元素X的定义可能会引起对另一个 元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X 。 在类中,依赖由各种原因引起,如:一个类向另一个类发消息 ;一个类是另一个类的某个操作参数类型。 练习 在一个课程注册系统中,定义了类 CourseSchedule和类Course,并在类 CourseSchedule中定义了方法add( c:Course)和方法remove(c:Course ),则类CourseSchedule和类Course 之间的关系是: A、泛化关系 B、组成关系 C、依赖关系 D、包含关系 类的泛化 泛化(Generalization)定义了一般元素和特殊元素 之间的分类关系。在UML中,泛化表示为一头为 空心三角形的连线。 A generalization is a taxonomic relationship between a more general element and a more specific element. The more specific element is fully consistent with the more general element and contains additional information. 类的泛化(Cont) 泛化意味着子类的对象可以被用在父类的对象可 能出现的任何地方,但反之不行。 泛化为“is-kind-of”的关系 多数情况,用类和接口间的泛化指明继承关系。 类的关联 关联(association) 表示两个类之间存在某种语 义上的联系,它是一种结构关系,规定了一种事 物的对象可以和另一种事物的对象相联系。 关联的图标:在类图中,关联用一条把类连接在 一起的实线表示。 关联名称 可以给关联加上关联名,来描述关联的作用。例 如Person类和Company类之间的关联可以表示 多种意义,如这个人是公司的客户、雇员、所有 者等。下图是使用关联名的一个例子: 一般地,关联的名字通常是动词或动词短语。 关联命名的原则是该命名是否有助于理解该模型 。 关联角色 关联两端的类可以某种角色参与关联。例如下图中 ,“公司”以“雇主”的角色,“人”以“雇员”的角色参与 关联。“雇主”和“雇员”称为角色名。如果在关联上 没有标出角色名,则隐含地用类的名称作为角色名 。 关联的多重性 角色还具有多重性(Multiplicity),表示可以有多少 个对象参与该关联。在下图中,雇主(公司)可以雇 佣多个雇员,表示为“0n”; 雇员只能被一家雇主 雇佣,表示为“1”。 多重性指标 练习:根据下面的陈述画出类图 1)学生包括本科生、研究生两种。 2)研究生可以利用课余时间担任助教。 3)教师包括讲师和教授两种。 4)一名助教可以为一位讲师或一位教授 助课,一位讲师只能有一名助教,一位教 授可以有5名助教。 聚集和组合 聚集(aggregation)是一种特殊形式的关联。聚 集表示类之间的整体与部分的关系。 组合(composition)是一种特殊形式的聚集, 组合关系中的整体与部分具有同样的生存期。 An aggregation is a form of association that specifies a whole-part relationship between a whole and a constituent part. A composition is a form of aggregation association with strong ownership and coincident lifetime of parts by the whole. 聚集和组合(cont) UML中聚集和组合的表示: 类图的抽象层次 在软件开发的不同阶段使用的类图具有不同的抽 象层次。一般地,类图可分为三个层次,即概念 层,说明层和实现层。 类的概念层,说明层和实现层的划分最先是由 Steve Cook和John Daniels引入的。 概念层(Conceptual)类图描述应用领域中的概念,一般地 ,这些概念和类有很自然的联系,但两者并没有直接的映射 关系。 说明层(Specification)类图描述软件的接口部分,而不是软件 的实现部分。 实现层(Implementation)类图才真正考虑类的实现问题,揭示 实现细节。 类图的三个层次的例子 概念层说明层实现层 概念类分析类设计类 建立类图的一般步骤 1. 研究分析问题领域 2. 发现对象与类,明确它们的含义和责任,确定属 性。 3. 发现类之间的关系。把类之间的关系用关联、泛 化、聚集、组合、依赖等关系表达出来。 4. 设计类与关系。调整和细化已得到的类和类之间 的关系,解决诸如命名冲突、功能重复等问题。 5. 绘制类图并编制相应的说明。 概念模型(领域) 用户访问 领域知识 现实世界经验 建立域模型 问题描绘书 如何发现类和它们之间的关系 名词-动词分析法 l找出以上来源中的名词或名词短语,作为候选 类 l对候选类进行筛选,去掉冗余的、和系统无关 的、以及非独立的类 l以动词为线索确定类之间的关系 实例分析-图书管理系统 在图书管理系统中,要为每个借阅者建立 一个账户,并给借阅者发放借阅卡(借阅 卡可以提供借阅卡号、借阅者姓名),账 户中存储借阅者的个人信息、借阅信息以 及预订信息,持有借阅卡的借阅者可以借 阅书刊、返还书刊、查询书刊信息、预订 书刊并取消预订,但这些操作都是通过图 书管理员进行的。 在借阅书刊时,需要输入所借阅的书刊名 、书刊的ISBN/ISSN号,然后输入借阅 者的图书卡号和借阅者名,完成后提交所 填表格,系统验证借阅者是否有效,若有 效,借阅请求被接受,系统查询借阅者所 借阅的书刊是否存在,若存在,则借阅者 可借出书刊,系统记录借阅记录。借阅者 还书后,系统清除借阅记录。如果借阅者 所借书刊已被借出,借阅者还可预订该书 刊。 边界类(boundary) 边界类处理系统环境与系统内部之间的通 信,为用户或另一个系统提供了接口。 边界类组成了系统中依赖于环境的部分, 边界类用于为系统的接口建模,代表了系 统和系统外的一些实体之间的接口。 边界类 实体类(entity) 实体类是模拟必须被存储的信息和关联行为的 类。 实体对象是实体类的实例,被用来保存或更新 关于某个现象的信息,通常是持久性的。 实体类通常是独立于他们的环境,对于系统环 境如何与系统通信是不敏感的。 实体类 控制类(control) 控制类是用来为特定于一个或几个用例的控 制行为建模的类。 控制对象是控制类的实例,它经常控制其他 的对象,所以控制对象的行为是协调类型的 ,控制类协调实现用例的规定行为所需要的 事件。 控制类封装了特定于用例的行为,通常依赖 于应用程序的类。 控制类 对象图(Object Diagram) 对象图是表示在某一时间点上一组对象以 及它们的关系的图。在图形上,对象图是 顶点和弧的集合。 A object diagram is a diagram that shows objects and their relationships at a point in time. 对象图与类图 对象图的模型元素有对象和链(link)。对象是类 的实例;对象之间的链是类之间的关联的实例。 对象与类的图形表示相似,UML中对象图与类图 具有相同的表示形式。 对象图实质上是类图的实例。 对象图常用于表示复杂的类图的一个实例。 对象图的使用相当有限,主要用于表达数据结构 的示例,以及了解系统在某个特定时刻的具体情 况。 对象图 包(Package) 包是用于把元素组织成组的通用机制。在图形上 , 把包画为带标签的文件夹。 A package is a general-purpose mechanism for organizing elements into groups. 包的有关说明 包名分simple name和path name两种形式。 例: lCamera lSensors:Vision:Camera 包中可以包含其它建模元素,如class, interface, component, node, use case, package, , 等。 包可以嵌套,但嵌套层次不要过深。 包没有实例,即在系统运行时见不到包。 包之间可以存在依赖关系, 但这种依赖关系不存在传递性。 包的应用 对建模元素进行分组。 设计良好的包把一些语义上接近并倾向于一起变 化的元素组织在一起。 在Rose中,包可以提供一些特殊的功能,如 l在数据建模中,用包表示模式和域包;在数据模型和 对象模型之间的转换是以包为单位进行的; l在Web建模中,包可以表示某一虚拟目录(virtual directory),在该目录下的所有web元素都在这个包中 ; l包在Rose中还可以作为控制单元(controlled unit),以 方便团队开发和配置管理。 思考与讨论思考与讨论 类图代表了什么含义? 查找资料,阐述领域建模的方法 如何发现关联关系? 作业:按如下描述画出一个自治机器人 的类图。 这张图的焦点是聚集在那些让机器人在路上行走 的机制所对应的类上。你可以发现一个虚类 Motor和两个从它派生出来的类: SteeringMotor和MainMotor。这两个类都 从它的父亲Motor继承了五个方法:move() 、stop()、resetCounter()、status()、 distance()。这两个类又是另一个类Driver 的一部分。类PathAgent

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论