类图和对象图(UML).ppt_第1页
类图和对象图(UML).ppt_第2页
类图和对象图(UML).ppt_第3页
类图和对象图(UML).ppt_第4页
类图和对象图(UML).ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

第五章 类图和对象图 教学目标:了解类图、类间的关系 对象图的 组成部分 教学要求:能建立简单的类图、对象图 1 1 . 类的定义(续) 类:是对一组具有相同属性、操作、关系和语义 的对象的描述。 这些对象可以包括现实世界中的软件事物和硬件 事物,甚至也可以包括纯粹概念性的事物。 类图(class diagram)是描述类、接口、协作及 他们之间关系的图,用来显示系统中各个类静态 结构。 在类图的基础上,可以使用协作图、状态图、组 件图和配置图。 第五章 类图和对象图 2 2 . 类的定义(续) 类在中的表示:分成三个格子的矩形。 第五章 类图和对象图 ClassName Attribute: Attribute Type=initialValue Opetation(arg:Argument Type):ReturnType 类名 属性 操作 3 3 . 类的定义(续) 类在中的表示:分成三个格子的矩形。 第五章 类图和对象图 图书馆书的类( 省略掉属性) 图书馆书的类( 省略掉操作) 4 4 . 类的定义(续) 类名:是每个类所必须有的构成。用于和其他类 区分,是一个文本串。 类名要求应尽量应用领域中的术语,应明确、无 歧义,以利于开发人员与用户之间的勾通交流 单独的名称(single name):不包含冒号的字符 串。 路径名称(path name):用类所在的包作为前缀 的类名。如Business:Item 第五章 类图和对象图 5 5 . 类的定义(续) 属性:描述了类在软件系统中代表的事物所具备 的特性。类可以有无限数量的属性,也可以没有 属性。 第五章 类图和对象图 格式: 可见性属性名:类型初始值特性 size :integer =(100) 6 6 . 类的定义(续) 说明: 、可见性描述了该属性对于其他类是否可见, 以及是否被其他类引用,而不仅仅是被该类可见 。类型如下: 第五章 类图和对象图 名称表示方式 公有(public) 私有(private) 受保护(protected) 7 7 . 类的定义(续) 说明: 、公有:可以在此类的外部使用和查看该属性 。 2、私有:不可以从其他类中访问这个属性 3、受保护的:经常与泛化一起使用(后面章节 讲讲到)。 第五章 类图和对象图 8 8 . 类的定义(续) 说明: 、每个属性必须有个名字区分其他属性。通常 情况下属性名由描述所属类的特性的短名词或者 名词短语构成(小写字母开头) 第五章 类图和对象图 可见性属性名:类型初始值特性 size :integer =(100) 9 9 . 类的定义 说明: 、属性还有取值范围。类型表示该属性的种类 。它可以是基本数据类型,例如整数、实数、布 尔型和枚举型等,也可以是用户自定义的类型。 一般它由所涉及的程序设计语言确定必须为其指 定数据类型。当一个类的属性被完整定义后,它 的任何一个对象的状态都由这些属性的特性值所 决定。 第五章 类图和对象图 可见性属性名:类型初始值特性 size :integer =(100) 1010 . 类的定义 说明: 4、初始值:设定初始值的目的 、保护系统的完整性,防止遗漏掉取值或 被非法取值; 、为用户提供易用性 第五章 类图和对象图 可见性属性名:类型初始值特性 size :integer =(100)11 11 . 类的定义 说明: 、特性是用户对该属性性质的一个约束说明。 比如只读 第五章 类图和对象图 可见性属性名:类型初始值特性 size :integer =(100) 1212 . 类的定义 操作(Operation):类的操作是对类的对象所能 做的事物抽象,用于修改、检索类的属性或执行 某些动作。也被称为功能。它相当与一个服务的 实现,。该服务可以由类的任何对象请求以影响 其行为。一个类可以有任何数量的操作或者没有 操作 第五章 类图和对象图 格式: 可见性操作名(参数列表):返回类型特性 disply () :Location 1313 . 类的定义 说明: 可见性: 第五章 类图和对象图 名称表示方式意义 公有(public)调用对象能够访问操作所在的包 私有(private)属于同一个类的对象才可以调用的可见性操作 受保护 (protected) 只有子类对象才可以调用父类的可见性为受保 护的操作 包内公有( package) 只有在同一个包里的对象才可以调用的可见性 为包内操作 1414 . 类的定义 说明: 操作名是用来描述所属类的行为的短动词或动词 短语(通常用小写字母开头)。如果是抽象操作 ,用斜体字表示。 第五章 类图和对象图 格式: 可见性操作名(参数列表):返回类型特性 disply () :Location 1515 . 类的定义 类的操作所提供的服务可以分为两类: 、操作的结果引起对象状态的变化,状态的改 变也包括相应动态行为的发生 、为服务的请求者提供返回值。 第五章 类图和对象图 1616 . 类的定义 职责(Responsibility):是类或者其它元素的契约 或者义务。当一个类被创建时,就声明这个类的 所有对象具有相同的种类的状态和相同种类的行 为。 类的职责是自由形式的问题,可以写成一个短语 、一个句子或者一段短文。 第五章 类图和对象图 heckUser Responsibilities -核查用户资料 决定是否给该拥护办理信用卡 职责 1717 . 类的定义 注释:对属性或者操作进行解释。注释可以为图 形或者文本 第五章 类图和对象图 1818 . 类之间的关系 类不是独立存在的,大多数类以某些方式彼此协 作。 第五章 类图和对象图 1919 . 类之间的关系 类间的关系分为:关联、聚合、实现、泛化、依 赖。 关联(Association)表示对象之间的结构关系 泛化(Generalization)表示类之间一般和特殊的关 系 依赖(Dependency)表示类之间的使用关系 第五章 类图和对象图 2020 . 类之间的关系 1、关联 关联是一种结构关系,它指明一个事物的对象与 另一个事物的对象间的联系 例如,一个人为一家公司工作,一家公司有许多办 公室。我们就认为人和公司、公司和办公室之间 存在某种语义上的联系。在分析设计的类图模型 中,则在对应人类和公司类、公司类和办公室类 之间建立关联关系 第五章 类图和对象图 2121 . 类之间的关系 1、关联 关联的表示方式:用一条连接相同类或者不同类 的实线表示。 第五章 类图和对象图 2222 . 类之间的关系 1、关联 一个关联可以有两个和多个关联端。关联也有方 向,可以分为单向关联(uni-directional association)或双向关联(bi-directional association) 第五章 类图和对象图 ABAB 类和之间的双向关联类到类的单向关联 2323 . 类之间的关系 1、关联 关联名:给关联加上名字,描述关联的作用。 第五章 类图和对象图 CompanyPerson Employs 2424 . 类之间的关系 1、关联 关联名说明:关联的名称并不是必需的,当要明 确的给出关联提供角色名或当一个模型存在许多 关联并且要对这些关联进行查阅或者区别是才要 给出关联名。 第五章 类图和对象图 2525 . 类之间的关系 1、关联 角色:当一个类处于关联的某一端时,该类就在 这个关系中扮演着一个特定的角色。角色就是关 联关系中一个类对另一个类所表现的职责 第五章 类图和对象图 emplanyeremployee CompanyPerson Employs 1 0n StudentUniversity LearnerTeacher 关联 角色名 2626 . 类之间的关系 1、关联 多重性:关联实例中说明两个类间存在多少个相 互连接。有三大扩展机制,多重性是第一 种约束。 多重性被表示为用点分隔的区间。表示格式 Minimunmaximum 均为int型的整数 第五章 类图和对象图 2727 . 类之间的关系 1、关联 第五章 类图和对象图 修饰语意 1或 1仅仅为 0*或0n或者更多 1*或 1n或者更多 或N或者更多 16 2828 . 类之间的关系 1、关联 关联类:一个关联可能要记录一些信息,可以引入一个 关联类来记录。关联类通过一根虚线与关联连接 第五章 类图和对象图 emplanyeremployee CompanyPerson Employs 1 0n contract Salary:Double 2929 . 类之间的关系 1、关联 关联类可以进一步描述关联的属性、操作及其他 信息。他描述的是两个类之间关联的属性,并不 描述两个类的属性。 第五章 类图和对象图 emplanyeremployee CompanyPerson Employs 1 0n contract Salary:Double 3030 . 类之间的关系 1、关联 关联的约束:为关联加上一些约束,加强关联的 含义。 第五章 类图和对象图 xor Account Person company 3131 . 类之间的关系 1、关联 限定关联:给定关联一端的一个对象和限定符值 后,可确定另一端的一个对象或对象集。 第五章 类图和对象图 bank Person Account:int 01 n 1 1n 3232 . 类之间的关系 1、关联 限定关联 注意:限定符是关联的属性,不是类的属性 第五章 类图和对象图 3333 . 类之间的关系 1、关联 关联的种类: 第五章 类图和对象图 EnginePart 自返关联reflexive association( 递归关联recurisive association) studentuniversit y 二元关联binary association team year player record n n n n N元关联 3434 . 类之间的关系 、聚合 聚集:是一种特殊的关联。它表示类间的关系是 整体与部分的关系。关联关系中一个类描述了一 个较大的事物,它由较小的事物组成,即整体对 象拥有部分对象。 表示形式:用空菱形的实线表示 第五章 类图和对象图 3535 . 类之间的关系 、聚合 第五章 类图和对象图 University Institute 整体 部分 聚合 3636 . 类之间的关系 、聚合 组合:也是类之间整体与部分的关系,强调部分与整体 具有同样的生存期。整体拥有各部分,部分与整体共存 ,如整体不存在了,部分也会随之消失 表示形式:用实心菱形实心线表示 第五章 类图和对象图 3737 . 类之间的关系 、泛化(generalization)关系 泛化关系:定义了一般元素和特殊元素之间的分类关系 。也就是一种继承关系。继承是在现有类的基础上定义 和实现一个新类的技术,刻画了类的一般性和特殊性。 被继承的类称为父类或超类,继承的类称为子类。 表示形式:用空心三角箭头实心线表示 第五章 类图和对象图 3838 . 类之间的关系 、依赖(dependency)关系 依赖关系:如果一个类的变化会影响另一个类的变化, 则称两个类之间有依赖关系 表示形式:用虚线三角箭头表示,指向被依赖的类 第五章 类图和对象图 3939 . 类之间的关系 4、依赖(dependency)关系 改变的因素:.一个类向另一个类发送消息。 .一个类是另一个类的数据成员类型 .一个类是另一个类的操作的参数类型 注:如果两个类之间有关联,那么这两个类就有依赖关 系,但是我们一般不标出依赖关系。 第五章 类图和对象图 4040 . 派生属性和派生关联 派生属性(derived attribute)和派生关联 (derived association):指可以从其他属性和关联 计算推演得到的属性和关联(前自动加斜杠) 第五章 类图和对象图 Person Birthday:date /Age:integer 派生属性 companyDepartment person 1 * * * 1 派生关系 4141 . 抽象类和接口 抽象类(abstract class):不能直接产生实例的 类,往往只是一些申明。通常把类名写成斜体字 第五章 类图和对象图 接口 con形式 类名 Label形式 类名 ecoration 4242 . 抽象类和接口 抽象类和接口的关系: 抽象和接口比较相似 抽象类可以含有属性。接口中声明的所有方法都 没有实现部分,而抽象类中某些方法可以有具体 的实现。 接口是在没有给出对象的实现和状态的情况下对 对象行为的描述。接口包含有操作但不能含有属 性. 第五章 类图和对象图 4343 .5 版型 版型:建模人员在已有的事物、关系、图三种基本 构造块上派生出和特定问题有关的新构造块。 第五章 类图和对象图 4444 .6 边界类、控制类和实体类 UML中有三种类版型:边界类(boundary calss )、控制类(control calss)和实体类(entity class ) 第五章 类图和对象图 4545 .6 边界类、控制类和实体类 1、边界类(boundary class):处理系统环境与 系统内部之间的通讯,位于系统与外界的交界处 。 它是系统与外界交换信息的媒介,并将系统 与系统环境中的变化隔离开。表示方式如下: 第五章 类图和对象图 4646 .6 边界类、控制类和实体类 2、实体类(entity class):保存要放进数据库、 文件等持久存储体的信息。实体对象是实体类的 实例,被用来保存或更新关于某个现象的信息, 他是持久性的。通常独立于应用程序 每个实体类对应数据库中的表,实体类中的属性 对应数据库中表的字段 第五章 类图和对象图 4747 .6 边界类、控制类和实体类 2、实体类(entity class): 表示方式如下: 第五章 类图和对象图 4848 .6 边界类、控制类和实体类 3、控制类(control class):用来为特定于一个 或几个用例的控制行为的建模的类。(负责其他类 工作的类) 表示方式如下: 第五章 类图和对象图 4949 .6 边界类、控制类和实体类 3、控制类(control class) 控制类通常是依赖与应用程序的类,它封装了特 定于用例的行为。控制对象是控制类的实例,它 经常控制其他的对象,所以控制对象的行为是协 调类型的,控制类协调实现用例的规定行为所需 要的事件。 一般每个用例都通过控制类控制用例中事件 的顺序。控制类可以在多个用例间共享。 第五章 类图和对象图 5050 .7 类图 类图(Class Diagram ):是描述类、接口、协作 以及他们之间关系的图。 类图是系统静态视图的一部分,静态视图包含许 多类图。静态视图用于为软件系统进行结构建模 ,它构造系统的词汇和关系,而结构模型的可视 化就是通过类图来实现的 第五章 类图和对象图 5151 .7 类图 类图包含: 类 接口 协作 依赖、泛化、实现或关联等关系 第五章 类图和对象图 5252 .7 类图 类图可以包含有注释、约束等,也可以包含子系 统 第五章 类图和对象图 class1 class2 class3 class4 Interface Collabor ation 类图 泛化 关系 依赖 关系 5353 .7 类图 类图抽象层次:根据在软件开发的不同阶段类图 有概念层、说明层、实现层三个层次 概念层(conceptual):描述应用领域中的概 念。类可以从问题域中的概念得出。在画概念层 类图时,很少考虑实现的问题,所以一般独立于 实现它的软件和程序设计语言。(一般只有一个 类名) 第五章 类图和对象图 circle 概念层 5454 .7 类图 类图抽象层次: 说明层(Specification):描述软件的接口部分, 不描述软件的实现部分。OO开发方法非常重视 区别接口和实现,但在实际开发过程中常常忽略 这一差异。一般要求用一个类型描述一个接口, 这个接口可能因为实现环境、运行特性或者用户 的不同而具有多种实现。 第五章 类图和对象图 5555 .7 类图 类图抽象层次: 说明层(Specification):说明层类图有类名、属 性名和方法名,但对属性没有类型说明,也没有 指明方法的参数和返回类型。 第五章 类图和对象图 说明层 circle Center adius Area() move() scale() 5656 .7 类图 类图抽象层次: 实现层(Implementation):真正有类的概念,揭 示软件的实现部分。(对属性和方法都有详细的 描述) 第五章 类图和对象图 实现层 circle Center:float adius:float Circle() area:float move(loaction:pin t):void scale(ratio:float):v oid 5757 .7 类图 类图应用: 类图描述了系统的静态视图,主要支持系统 的功能需求-系统应该提供给用户的服务 类图可以描述以下三种建模: 为系统的词汇表建模 为简单的协作建模 为逻辑的数据库模式建模 第五章 类图和对象图 5858 .7 类图 类图应用(续): 1、为系统的词汇表建模 用UML构建系统通常是从构造系统的基本词汇开 始,用于描述系统的边界,用来决定那些抽象是 要建模系统的一部分,那些是处于要建模系统之 外。系统最基本的元素在这里被确定,系统分析 师可以用类图描述抽象和它们的职责。 第五章 类图和对象图 5959 .7 类图 类图应用: 2、对简单协作建模 所要构造的软件系统中的类很少有孤立存在的, 他们总是和其他的类协同工作,以实现强于单个 类的语义,所以在抽象了系统词汇后,系统分析 师还必须将这些词汇中的事物系统工作方式可视 化和详述 第五章 类图和对象图 6060 .7 类图 类图应用: 2、对简单协作建模 在协同建模时,要遵循如下几个方面的策略 识别要模拟的机制.一个机制描述了被建模的部分 系统的一些功能和行为,这些功能和行为由类、接 口等元素交互作用产生的 对每种机制,识别参与协作的类、接口和其他协 作,并识别他们间的关系 第五章 类图和对象图 6161 .7 类图 类图应用: 2、对简单协作建模 在协同建模时,要遵循如下几个方面的策略(续) 通过协作的脚本,发现建模的模型是否有被遗漏 和有语义错误,并更改 得出相应类的对象,并确定具体的属性和操作。 第五章 类图和对象图 6262 .7 类图 类图应用 3、为逻辑的数据库模式建模 在对软件系统进行建模时,要定义系统的动态行 为,还需要为动态行为所操作的数据指定相应的 格式,这些数据通常被永久保存在数据库中,以 便以后检索, 传统的逻辑数据库建模工具“实体-关系(E-R )”图只针对数据,而UML的类图允许对行为建 模 第五章 类图和对象图 6363 第五章 类图和对象图 6464 .7 类图 类图应用 3、为逻辑的数据库模式建模 在为数据库建模时,要遵循如下几个方面的策略(一) 在系统中确定的类,他的状态必须操作其应用系统 生命周期。 创建包含这些类的类图,并把它们标记成永久性的 (persistent) 第五章 类图和对象图 6565 .7 类图 类图应用 3、为逻辑的数据库模式建模 在为数据库建模时,要遵循如下几个方面的策略(二) 展开这些类的结构信息,即详细的描述属性的细节 ,并注重关联和构造类的基数 观察系统中的公共模式(循环关联、一对一关联等 )它们往往使物理数据库设计复杂化。如有必要,需 要创建简化逻辑结构中的抽象。 第五章 类图和对象图 6666 .7 类图 类图应用 3、为逻辑的数据库模式建模 在为数据库建模时,要遵循如下几个方面的策略(三) 考虑这些类的行为,扩充那些对于数据存储和数据 完整性很重要的操作 如果有可能,通过工具把逻辑设计换成物理设计 第五章 类图和对象图 6767 .7 类图 类的确定方法(一): 根据用例描述中的名字确定类的候选者 使用类、职责和协作分析法寻找类 对边界类、控制类和实体类的划分来帮助发现系 统的类 第五章 类图和对象图 6868 .7 类图 类的确定方法(二): 对领域进行分析,或利用以后的领域分析结果得 到类 参考设计模式来确定类 根据其他软件开发过程提供的指导原则寻找类 第五章 类图和对象图 6969 .7 类图 建立类图的步骤 研究分析问题的领域,确定系统的需求 确定类,明确类的含义和职责,确定属性和操作 确定类间的关系,把类之间的关系用关联、泛化 、聚集、组合、依赖等关系表达出来 调整和细化已得到的类和类之间的关系 绘制类图并增加相应的说明。 第五章 类图和对象图 7070 .7 类图 领域分析(domain analysis): 通过对某一领域中的已有应用系统、理论、技术 、开发历史等研究。来标识、收集、组织、分析 和表示领域模型及软件体系结构的过程 根据以上进行的过程得到结果 也被称为问题分析(problem domain analysis) 第五章 类图和对象图 7171 课堂作业一: 1.食堂吃饭卡,有那些类,每个类分别有 那些属性和操作 2.为食堂用餐建类图 第五章 类图和对象图 7272 .8 OO设计的原则 OO设计根本的指导原则是提高可维护性和可复用性 。这些原则主要有: 开闭原则(Open/Closed Principle,OCP) 里氏Liskov替换原则(Liskov Substitution Principle,LSP) 依赖倒置原则(Dependency Inversion Principle,DIP) 接口分离原则(Interface Segregation Principle,ISP) 第五章 类图和对象图 7373 .8 OO设计的原则 1、开闭原则 开闭原则指的是一个模块在扩展性方面是开放 的,在更改性方面是封闭的. 开闭原则实际上是对“对可变性的封闭原则“:找 到一个系统的可变因素,将之封装起来。这个原 则意昧着两点: 第五章 类图和对象图 7474 .8 OO设计的原则 1、开闭原则 1) 一个可变性不应当散落在代码的很多角落里 ,而应当被封装到一个对象里面。同一种可变性 的不同表象意昧着同一个继承等级结构中的具体 子类。 继承就当被看作是封装变化的方法,而不应当被 认为是从一般的对象生成特殊对象的方法。 第五章 类图和对象图 7575 .8 OO设计的原则 1、开闭原则 2) 一种可变性不应当与另一种可变性混合在一 起。(所有类图的继承结构一般不会超过两层, 不然就意昧着将两种不同的可变性混合在了一起 。) 开闭原则是总的原则,其它几条是开闭原则的手 段和工具。 第五章 类图和对象图 7676 .8 OO设计的原则 1、开闭原则 第五章 类图和对象图 Output canon Print() Epson Print() hp Print() legend Print() t printer canon Print() Epson Print() hp Print() legend Print() output Print() 7777 .8 OO设计的原则 2、里氏liskov替换原则 子类可以替换父类出现在父类可以出现的任何 地方. 开闭原则的关键步骤是抽象化。而基类与子类的 继承关系就是抽象化的具体体现,里氏替换原则 是对实现抽象化的具体步骤的规范。 第五章 类图和对象图 7878 .8 OO设计的原则 3、依赖倒置原则 依赖倒转原则讲的是:要依赖于抽象,不要信 赖于实现 。 在结构化设计里,高层次的模块通过调用低层次 的模块来实现.在OO里面与具体有关的类都是依 赖于抽象类或接口 第五章 类图和对象图 7979 .8

温馨提示

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

评论

0/150

提交评论