uml类图-对象图-包图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习
在一个课程注册系统中,定义了类 CourseSchedule和类Course,并在类 CourseSchedule中定义了方法add (c:Course)和方法remove (c:Course),则类CourseSchedule 和类Course之间的关系是:
A、泛化关系 C、依赖关系
B、组成关系 D、包含关系
Leabharlann Baidu
概念层(Conceptual)类图描述应用领域中的概念,一般地, 这些概念和类有很自然的联系,但两者并没有直接的映射关 系。 说明层(Specification)类图描述软件的接口部分,而不是软件 的实现部分。 实现层(Implementation)类图才真正考虑类的实现问题,揭示 实现细节。
练习:请为下面这段Java代码补充类图
pulic class Student{ private String name; public void setName(String name){ this.name=name; } public String getName(){ return this.name; } }
对象图是表示在某一时间点上一组对象以 及它们的关系的图。在图形上,对象图是 顶点和弧的集合。 A object diagram is a diagram that shows objects and their relationships at a point in time.
对象图与类图
对象图的模型元素有对象和链(link)。对象是类 的实例;对象之间的链是类之间的关联的实例。 对象与类的图形表示相似,UML中对象图与类图 具有相同的表示形式。
实体类
控制类(control)
控制类是用来为特定于一个或几个用例的控 制行为建模的类。 控制对象是控制类的实例,它经常控制其他 的对象,所以控制对象的行为是协调类型的, 控制类协调实现用例的规定行为所需要的事 件。 控制类封装了特定于用例的行为,通常依赖 于应用程序的类。
控制类
对象图(Object Diagram)
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.
回答问题
在学校中,一个学生可以选修多门课程,一 门课程可以由多个学生选修,那么学生和课 程之间是( )关系。 类A的一个操作调用类B的一个操作,且这 两个类之间不存在其他关系,那么类A和类 B之间是( )关系。 在MFC类库中,Window类和 DialogBox类之间是( )关系。
类的关系
聚集和组合(cont)
UML中聚集和组合的表示:
Car
Company
Wheel
Department
Company
Department
类图的抽象层次
在软件开发的不同阶段使用的类图具有不同的抽 象层次。一般地,类图可分为三个层次,即概念 层,说明层和实现层。 类的概念层,说明层和实现层的划分最先是由 Steve Cook和John Daniels引入的。
类 接口 协作 依赖、泛化和关联关系
类图可以包含注解和约束; 类图还可以有包或子系统,二者都用于把 模型元素聚集成更大的组件。
类(Class)
A class is the descriptor for a set of objects with similar structure, behavior, and relationships.
类图的应用
类图用于对系统静态设计视图建模。与数据模型 不同,它不仅显示了信息的结构,同时还描述了 系统的行为。 类图中可以包含接口,包,关系等建模元素,也 可以包含对象,链等实例。
类图典型的应用在下面三类建模:
对系统的词汇建模 对简单协作建模 对逻辑数据库模式建模
类图的组成
类图通常包含下述内容:
类图的三个层次的例子
概念类 分析类 设计类
概念层
说明层
实现层
建立类图的一般步骤
1. 研究分析问题领域 2. 发现对象与类,明确它们的含义和责任,确定属 性。 3. 发现类之间的关系。把类之间的关系用关联、泛 化、聚集、组合、依赖等关系表达出来。 4. 设计类与关系。调整和细化已得到的类和类之间 的关系,解决诸如命名冲突、功能重复等问题。 5. 绘制类图并编制相应的说明。
包的有关说明
包名分simple name和path name两种形式。 例: Camera Sensors::Vision::Camera 包中可以包含其它建模元素,如class, interface, component, node, use case, package, … , 等。 包可以嵌套,但嵌套层次不要过深。 包没有实例,即在系统运行时见不到包。 包之间可以存在依赖关系, 但这种依赖关系不存在传递性。
关联角色
关联两端的类可以某种角色参与关联。例如下图中, “公司”以“雇主”的角色,“人”以“雇员”的 角色参与关联。“雇主”和“雇员”称为角色名。 如果在关联上没有标出角色名,则隐含地用类的名 称作为角色名。
关联的多重性
角色还具有多重性(Multiplicity),表示可以有多少 个对象参与该关联。在下图中,雇主(公司)可以雇 佣多个雇员,表示为“0..n”; 雇员只能被一家雇 主雇佣,表示为“1”。
在UML中,类可视 化表示为划分成三 个格子的长方形, 如图所示: 类名
属性
操作
接口(Interface)
接口是一组用于描述类或构件的一个服务的操作。 在图形上,把接口画为一个圆;其扩展形式是接 口表示为一个构造型化类。
协作(Collaboration)
协作是一组类、接口和其他元素的群体,它们共 同工作,提供比各组成部分的功能总和更强的合 作行为。
类的泛化(Cont)
泛化意味着子类的对象可以被用在父类的对象可 能出现的任何地方,但反之不行。 泛化为“is-kind-of”的关系 多数情况,用类和接口间的泛化指明继承关系。
类的关联
关联(association) 表示两个类之间存在某种语 义上的联系,它是一种结构关系,规定了一种事 物的对象可以和另一种事物的对象相联系。 关联的图标:在类图中,关联用一条把类连接在 一起的实线表示。
对象图实质上是类图的实例。
对象图常用于表示复杂的类图的一个实例。 对象图的使用相当有限,主要用于表达数据结构 的示例,以及了解系统在某个特定时刻的具体情 况。
对象图
包(Package)
包是用于把元素组织成组的通用机制。在图形上, 把包画为带标签的文件夹。 A package is a general-purpose mechanism for organizing elements into groups.
概念模型(领域)
问题描绘书
用户访问 建立域模型
领域知识 现实世界经验
如何发现类和它们之间的关系
名词-动词分析法
找出以上来源中的名词或名词短语,作为候选 类 对候选类进行筛选,去掉冗余的、和系统无关 的、以及非独立的类 以动词为线索确定类之间的关系
实例分析-图书管理系统
在图书管理系统中,要为每个借阅者建立 一个账户,并给借阅者发放借阅卡(借阅 卡可以提供借阅卡号、借阅者姓名),账 户中存储借阅者的个人信息、借阅信息以 及预订信息,持有借阅卡的借阅者可以借 阅书刊、返还书刊、查询书刊信息、预订 书刊并取消预订,但这些操作都是通过图 书管理员进行的。
边界类(boundary)
边界类处理系统环境与系统内部之间的通 信,为用户或另一个系统提供了接口。 边界类组成了系统中依赖于环境的部分, 边界类用于为系统的接口建模,代表了系 统和系统外的一些实体之间的接口。
边界类
实体类(entity)
实体类是模拟必须被存储的信息和关联行为的 类。 实体对象是实体类的实例,被用来保存或更新 关于某个现象的信息,通常是持久性的。 实体类通常是独立于他们的环境,对于系统环 境如何与系统通信是不敏感的。
类之间的静态关系主要有:
依赖:它表示类之间的使用关系(包括精化、 跟踪和绑定关系) 泛化:它把一般类连接到它的特殊类; 关联:它表示对象之间的结构关系。
类的依赖
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。 在类中,依赖由各种原因引起,如:一个类向另一个类发消息; 一个类是另一个类的某个操作参数类型。
类的泛化
泛化(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.
Person Company
关联名称
可以给关联加上关联名,来描述关联的作用。例 如Person类和Company类之间的关联可以表示 多种意义,如这个人是公司的客户、雇员、所有 者等。下图是使用关联名的一个例子:
Person Works for Company
一般地,关联的名字通常是动词或动词短语。 关联命名的原则是该命名是否有助于理解该模型。
在借阅书刊时,需要输入所借阅的书刊名、 书刊的ISBN/ISSN号,然后输入借阅者 的图书卡号和借阅者名,完成后提交所填 表格,系统验证借阅者是否有效,若有效, 借阅请求被接受,系统查询借阅者所借阅 的书刊是否存在,若存在,则借阅者可借 出书刊,系统记录借阅记录。借阅者还书 后,系统清除借阅记录。如果借阅者所借 书刊已被借出,借阅者还可预订该书刊。
本次课主要内容
类图
什么是类图 类图的应用 类图的组成 类图的建模技术
对象图 包图
实例分析-图书管理系统
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.
多重性指标
练习:根据下面的陈述画出类图
1)学生包括本科生、研究生两种。 2)研究生可以利用课余时间担任助教。 3)教师包括讲师和教授两种。 4)一名助教可以为一位讲师或一位教授 助课,一位讲师只能有一名助教,一位教 授可以有5名助教。
聚集和组合
聚集(aggregation)是一种特殊形式的关联。聚 集表示类之间的整体与部分的关系。 组合(composition)是一种特殊形式的聚集, 组合关系中的整体与部分具有同样的生存期。