版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 类图和对象图学习目标(1)对象类以及类图的概念(了解)(2)对象之间的关联关系(重点掌握)(3)识读类图和分析类图(重点掌握)(4)对象图、接口基本概念(了解)(5)对象类图建模的基本步骤以及建模过程中应注意的问题(了解)任务分析 S tu d e n t n a m e : S trin g stu d e n tID : S trin g h o m e A d d re ss : S trin g e n ro llD a te : D a te U n iv e rsity n a m e : S trin g a d d re ss : S trin g p h o n e
2、N u m b e r : S trin g fa x N u m b e r : S trin g a d d S tu d e n t(stu d : S tu d e n t) : in t re m o v e S tu d e n t(stu d : S tu d e n t) : in t g e tN u m o fS tu d e n ts() : in t a d d D e p t(d e p t : D e p a rtm e n t) : in t re m o v e D e p t(d e p t : D e p a rtm e n t) : in t g e tN
3、 u m o fD e p t() : in t g e tN u m o fTe a c h e r() : in t 1 .n 1 .n C o u rse n a m e : S trin g c o u rse ID : S trin g te x tB o o k : B o o k 0 .n 0 .n Te a c h e r n a m e : S trin g te a c h e rID : S trin g sa la ry : flo a t a d d re ss : S trin g T itle : S trin g 1 .n 0 .n D e p a rtm e
4、n t n a m e : S trin g p h o n e N u m b e r : S trin g fa x N u m b e r : S trin g a d d Te a c h e r(te a c h e r : Te a c h e r) : in t re m o v e Te a c h e r(te a c h e r : Te a c h e r) : in t g e tN u m o fTe a c h e rs() : in t 1 .n 1 1 .n 1 .n 1 1 + d e a n 1 .n 1 .n 1 类图的概念 描述类、接口、协作及它们之间关
5、系的图。 显示系统中各个类的静态结构。 1.1 概述类图的元素:类(Class)接口(Interface)协作(Collaboration)依赖关系(Dependency)泛化关系(Generalization)关联关系(Association) 实现关系(Realization) 1.2 类 面向对象系统组织结构的核心。 对一组具有相同属性、操作、关系和语义的对象的抽象。 包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。 1.2 类 1 名称 2 属性 3 操作 4 职责 5 约束 6 注释名称 应该来自系统的问题域。 应该是一个名词,且不应该有前缀
6、或后缀。 分为简单名称和路径名称。 属性 描述了类在软件系统中代表的事物(即对象)所具备的特性。 类可以有任意数目的属性,也可以没有属性。 在UML中,类属性的语法为:属性 1. 可见性 2. 属性名 3. 类型 4. 初始值(1) 可见性类型:公有(Public) “”私有(Private)“”受保护(Protected)“” (2) 属性名 每个属性都必须有一个名字以区别于类中的其他属性。 属性名由描述所属类的特性的名词或名词短语组成。 单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。 (3) 类型 简单类型:整型布尔型实型枚举类型系统中
7、的其他类 (4) 初始值 目的:保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。为用户提供易用性。 操作 对类的对象所能做的事务的抽象。 一个类可以有任意数量的操作或者根本没有操作。 返回类型、名称和参数一起被称为操作签名。 在UML中,类操作的语法为:操作 1. 可见性 2. 操作名 3. 参数表 4. 返回类型(1) 可见性类型:公有(Public) “”私有(Private) “”受保护(Protected) “”包内公有(Package) “”(2) 操作名 用来描述所属类的行为的动词或动词短语。 单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词
8、外其余单词的首字母要大写。 (3) 参数表 一些按顺序排列的属性定义了操作的输入。 是可选的,即操作不一定必须有参数才行。 定义方式:“名称:类型”。 若存在多个参数,将各个参数用逗号隔开。 参数可以具有默认值。 (4) 返回类型 是可选的,即操作不一定必须有返回类型。 绝大部分编程语言只支持一个返回值。 具体的编程语言一般要加一个关键字void来表示无返回值。 1.3 接口 在没有给出对象的实现和状态的情况下对对象行为的描述。 包含操作但不包含属性。 没有对外界可见的关联。 一个类可以实现一个或多个接口。1.3 接口 接口类:1.4 类之间的关系 1 关联关系 2 聚合和组合关系 3 泛化关
9、系 4 依赖关系 5 实现关系关联关联 (1). 关联的定义 关联(association): 模型元素之间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链的描述。 关联可以分为单向关联,双向关联。 单向关联单向关联双向关联双向关联关联关系是指类之间的语义联系。关联可以具有如下特性:关联名称角色名称多重性导航性 关联名名关联名关联名如果关联关系已经清楚,就无需关联名如果关联关系已经清楚,就无需关联名 关联的角色关联的角色 在关联的每一个端点上有一个角色。每一个角色具有一个名字,用来描述其类被其他的类看作是什么:把它称为角色名,如果类名与角色名相同,则不标出角色名。类关系通过添
10、加角色来进一步丰富。在类图中使用角色可以帮助读者理解第一个类对于第二个类的作用。关联的角色关联的角色 多重性(MUTIPLICITY) 多重性(mutiplicity)用来指示一个类的多少对象与另一个类的一个对象相关。可以在类关系的任何一端添加多重性,来指示出多重性,如下图所示。多重性AB有多少A的对象与B的一个对象相关有多少B 的对象与A的一个对象相关?关联的角色关联的角色关联的多重性关联的多重性在UML中,常用的关联的多重性表示格式如下:0.1 0或11 1* 0或多个8 85,7.10 5或710成绩单11学生有一个系11.*教授工作系0.11教授系主任课程0.*0.*学生选修AB类A的
11、代码:Public class A public B theB; public A() 类B的代码:Public class B public B() 如果关联是单向的,则称为导航关联。导航性描述了源对象通过链接访问目标对象。箭头表明了导航的方向性,只有源对象才能访问目标对象,反之,目标对象不能访问源对象。导航性导航性案例分析 根据下列描述画出类图,并注明多重性关系。 一个学生可以选修多门课程,也可能不选任何课程;一门课程可以被多个学生选;一个老师可以教多门课程也可以不教;每门课程至少有一个老师教,也可以有多个老师教;每门课程可以有0本或1本教材,每本教材只能用于一门课程。(2)聚合聚合 聚集
12、和组合 聚合聚合(aggregation): 表示类之间一种松散的整体与部分的组成关表示类之间一种松散的整体与部分的组成关系,是一种特殊的关联。系,是一种特殊的关联。表示“整体/部分”的关联关系。“has a ”,表示聚合中的每一个部分可以属于其它整体。 被表示为在整体的一端用一个空心菱形修饰的简单关联聚合 组合组合(composition): 表示类之间一种紧密的整体与部分的组成表示类之间一种紧密的整体与部分的组成关系,也是一种特殊的关联。关系,也是一种特殊的关联。表示组合中的每一个部分只能属于一个整体 组合确实只是一种特殊的关联,用整体端有实心菱形箭头的简单关联修饰它。组合 3. 聚集与组
13、合的区别聚集与组合的区别 聚集松散聚集松散, ,组合紧密组合紧密; ; 一个部分事物对象可以属于多个聚集对象一个部分事物对象可以属于多个聚集对象, ,但一但一个部分事物对象仅能属于一个组合对象个部分事物对象仅能属于一个组合对象; ; 聚集的对象生命周期可以不同聚集的对象生命周期可以不同, ,但组合对象则是但组合对象则是同存同亡。同存同亡。 聚集与组合的区别(3) 泛化 泛化泛化(generalization): 表示事物之间的表示事物之间的一般与特殊的关系。也可以称为继承关系。一般与特殊的关系。也可以称为继承关系。表示“一般/特殊”关系。“is-a-kind-of” 也就是继承关系 带空心箭头
14、的实线表示,箭头指向父元素。 ShapeCircle泛化 泛化的目的 自顶向下的属性继承。可以使得子类共享父类的属性和操作,实现继承。 自底向上的实例替换。可以使得子类的实例用于任何父类被声明使用的地方,实现多态。泛化的表示泛化的表示:例子例子表示表示(4) 依赖 依赖依赖(dependency): 表示两个元素表示两个元素X、Y,如果,如果X的变化必然导致的变化必然导致Y的变化,则称的变化,则称Y依赖依赖X。 依赖 依赖的表示依赖的表示:例子例子表示表示依赖依赖使用依赖表示客户使用提供者提供的服务以实现它的行为,包括:使用(use) 最常用的依赖,它声明使用一个模型元素需要用到已存在的另一个
15、模型元素,这样才能实现使用者的功能。调用(call)操作间的依赖,它声明了一个类调用其他类的操作方法。参数(parameter)操作和类之间的依赖,它描述的是一个操作和它的参数之间的关系。发送(send)信号发送者和接收者之间关系,规定客户把信号发送到非指定的目标。实例化(instantiate)一个类的方法创建了另一个类的实例声明,它规定客户创建目标元素的实例。(5) 实现 一个元素完成另外一个元素的操作功能,则二者之间构成实现关系。 如接口类及其实现;接口没有属性,只有声明的操作方法(对于方法没有实现部分),而由实现类具体定义实现部分。关联类 进一步描述关联的属性、操作以及其他信息。关联类
16、通过一条虚线与关联连接。 图5.6 使用关联类的关联 案例分析 创建一个类图。下面给出创建类图所需的信息。 学生(student)可以是在校生(undergraduate)或者毕业生(graduate)。 在校生可以是助教(tutor)。 一名助教指导一名学生。 教师和教授属于不同级别的教员。 一名教师助理可以协助一名教师和一名教授,一名教师只能有一名教师助理,一名教授可以有5名教师助理。 教师助理是毕业生。创建类图的步骤如下:(1)将学生可以是在校生或者毕业生建模为3个类:Student、UnderGraduate和Graduate,其中,后两个类是Student类的子类。(2)为“在校生可
17、以是助教的一种”建立模型,即建立UnderGraduate类的另一个超类Tutor。(3)通过创建从Tutor到Student的关联(名为tutors),建立一名助教指导一名学生的模型。(4)将“教师和教授属于不同级别的教员”建模为3个类:Instructor、Teacher和Professor,其中,后两个类是Instructor类的子类。(5)建立“一名教师助理可以协助一名教师和一名教授,一名教师只能有一名教师助理,一名教授可以有5名教师助理”的模型。创建TeacherAssistant类,并使其与Teacher类和Professor类都建立关联。(6)将TeacherAssistant类
18、建模为Graduate类的派生类。2 类图建模技术 6.2.1 对简单协作建模 6.2.2 对逻辑数据库模式建模 6.2.3 正向工程和逆向工程2.1 对简单协作建模识别要建模的机制。对每种机制,识别参与协作的类、接口和其他协作,并识别这些事物之间的关系。用协作的脚本检测事物。把元素和它们的内容聚合在一起。2.2 对逻辑数据库模式建模 在模型中识别的类,其状态必须超过其应用系统的生命周期。创建包含这些类的类图,并把它们标记为永久的。展开这些类的结构性细节,并注重于关联和构造类的基数。观察系统中的公共模式,必要时可以创建简化逻辑结构的中间抽象。考虑这些类的行为,扩展对数据存储和数据完整性来说重要
19、的操作。如果有可能,用工具把逻辑设计转换成物理设计。 3 对象图 描述参与一个交互的各个对象在交互过程中某一时刻的状态。 可以被看作是类图在某一时刻的实例。 -58-分析类:达成目标的第一步-59-4. 从用例行为中识别分析类 在对象技术中,一个用例的全部行为都是由相应的类来完成的 这些行为必须被分配到类中 分析阶段就是对这个过程的第一次尝试 这是一个从“无”到“有”的跨越-60-什么是分析类 分析类代表了“系统中必须具备职责和行为的事物”的早期概念模型 分析类处理主要的功能需求,模型化问题域对象 根据备选构架定义三类分析类 边界类:系统及其参与者的边界 控制类:系统的控制逻辑 实体类:系统使
20、用的信息-61-边界类 边界类表示系统与参与者之间的边界 代表系统与环境的交互 是接口和外部事物的中间体 构造型 两类边界类 用户界面类 系统和设备接口类-62-示例:识别边界类 每对参与者/用例定义一个边界类-63-指南:边界类 关注职责,而不是细节 用户界面类 关注展示给用户的信息 不关注用户界面细节 系统和设备接口类 关注系统必须定义的协议 不关注协议如何实现-64-控制类 控制类表示系统的控制逻辑 系统行为的协调器 构造型 识别控制类 在系统开发早期,为一个用例定义一个控制类,负责该用例的控制逻辑 针对复杂用例,可为备选路径分别定义不同控制类-65-示例:识别控制类 通常,每个用例定义
21、一个控制类 随着分析的继续,一个复杂用例的控制类可以发展为多个-66-实体类 实体代表了待开发系统的核心概念 实体类提供了另一个理解系统的观点 显示了系统的逻辑数据结构 传统的面向对象方法就是从这个角度进行分析和设计 使用构造型 可以从以下中找到实体类 用例事件流(需求) 、业务模型(业务建模) 、词汇表(需求)-67-识别实体类 分析用例事件流中的名词、名词短语找出系统所需的实体对象,这些名词可能是: 对象、对象的特征和状态 参与者、描述信息、系统之外的 从这些名词、名词短语中进行筛选,抽取出系统对象,并抽象成类 综合考虑在系统中的意义、作用和职责 对于所识别的类进行命名-68-指南:名词筛
22、选法识别实体类 名词筛选法识别实体类的基本思路: 将用例文档作为输入,找出文档中的名词或名词性短语,形成了实体类初始候选列表 合并那些含义相同的名词 删除那些系统不需要处理的名词 删除作为参与者的名词 删除与实现相关的名词 删除那些作为其它实体类属性的名词 对剩余的名词,综合考虑它在当前用例以及整个系统中的含义、作用以及职责,并基于此确定合适的名字,作为初始实体类存在-69-实体类的其它来源 除了用例文档之外,从与用户和专家进行的访谈中得到的信息,也可作为实体类的来源 系统原始需求书/问题描述 该领域相关文献、专家意见或个人知识 过去的类似系统 在后面的职责分配中可能识别一些新的实体类 实体类的命名要用该领域中最经常使用的名称-70-示例:候选实体类 “支付”用例基本路径中的候选实体类-71-示例:总结:分析类-72-总结:从用例中识别分析类-73-实例-旅店预订系统中识别分析类-74-实例-旅游申请系统中的分析类-75-3. 将用例行为分配给类 面向对象系统是通过对象间的协作实现需求的 需求阶段通过自然语言描述 分析设计阶段采用图形化方式描述协作过程 利用交互图将用例行为分配给分析类类图和对象图的区别 类图 对象图 类具有三个分栏:名称、属性和操作对象只有两个分栏:名称和属性在类的名称分栏中只有类名对象的名称形式为“对象名
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年冀教新版选修化学下册月考试卷含答案
- 2025年沪教版九年级历史上册阶段测试试卷
- 2025年鲁科五四新版九年级历史下册阶段测试试卷
- 2025年苏科新版九年级地理上册阶段测试试卷
- 2025年沪科版选修4历史下册月考试卷含答案
- 2025年北师大版选择性必修1生物上册阶段测试试卷
- 2025年湘教版九年级历史上册月考试卷
- 2025年度门卫值班人员交通秩序管理聘用合同4篇
- 南京二手房2025年度电子合同签订流程规范4篇
- 技能再教育培训合同(2篇)
- 2024版个人私有房屋购买合同
- 2024爆炸物运输安全保障协议版B版
- 2025年度军人军事秘密保护保密协议与信息安全风险评估合同3篇
- 《食品与食品》课件
- 读书分享会《白夜行》
- 光伏工程施工组织设计
- DB4101-T 121-2024 类家庭社会工作服务规范
- 化学纤维的鉴别与测试方法考核试卷
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 自动驾驶汽车道路交通安全性探讨研究论文
- 术后谵妄及护理
评论
0/150
提交评论