类图对象图和包图.ppt

上传人:牧羊曲112 文档编号:6372963 上传时间:2023-10-21 格式:PPT 页数:84 大小:2.93MB
返回 下载 相关 举报
类图对象图和包图.ppt_第1页
第1页 / 共84页
类图对象图和包图.ppt_第2页
第2页 / 共84页
类图对象图和包图.ppt_第3页
第3页 / 共84页
类图对象图和包图.ppt_第4页
第4页 / 共84页
类图对象图和包图.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《类图对象图和包图.ppt》由会员分享,可在线阅读,更多相关《类图对象图和包图.ppt(84页珍藏版)》请在三一办公上搜索。

1、面向对象建模技术,软件工程系林 琳,2,第3章 类图、对象图和包图,类图和对象图合称为结构模型视图或者静态视图,用于描述系统的结构或静态特征。类图用来描述系统中的类以及类与类之间的静态关系等;对象用来描述特定时刻实际存在的若干对象以及它们之间的关系。一个系统的模型中可以包含多个对象图,每个对象图描述了系统在某个特定时刻的状态。,3,本章学习要点:,理解类图的基本概念为系统建模类建模类之间的关联关系理解并建模泛化关系了解依赖关系和实现关系了解对象图和包图的概念构造类图,4,3.1 类图,构建面向对象模型的基础是类、对象以及它们之间的关系。在不同的系统中描述的类可以是各种各样的。在面向对象的处理中

2、,类图处于核心地位,它提供了用于定义和使用对象的主要规则,同时,类图是正向工程(将模型转化为代码)的主要资源,是逆向工程(将代码转化为模型)的生成物。类图是任何面向对象系统的核心。,5,3.1.1 概述,类图是描述类、接口以及它们之间关系的图,它显示了系统中各个类的静态结构。可以用某种面向对象的语言实现类图中的类。建模对象 对系统的词汇建模 对协作建模 对数据库模式建模,类图的元素:类(Class)接口(Interface)协作(Collaboration)依赖关系(Dependency)泛化关系(Generalization)关联关系(Association)实现关系(Realization

3、),3.1.1 概述,一个例子,3.1.2 类及类的表示,类是对资源的定义,它所包含的信息主要用来描述某种类型实体的特征以及对该类型实体的使用方法。对象是具体的实体,它遵守类制定的规则。类定义了一组具有状态和行为的对象,这些对象具有相同的属性、操作、关系和语义。类包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation),名称必须有,属性和操作部分可以省略。,8,名称,1 名称2 属性3 操作4 职责5 约束6 注释,3.1.2 类及类的表示,1 名称,应该来自系统的问题域。应该是一个名词,且不应该有前缀或后缀。分为简单名称和路径名称。,2 属性,描述了类在软件系

4、统中代表的事物(即对象)所具备的特性。类可以有任意数目的属性,也可以没有属性。在UML中,类属性的语法为:,2 属性,1.可见性2.属性名3.类型4.初始值5.属性字符串,(1)可见性,类型:公有(Public)“”私有(Private)“”被保护(Protected)“”UML中没有默认可见性类型,(2)属性名,每个属性都必须有一个名字以区别于类中的其他属性。属性名由描述所属类的特性的名词或名词短语组成。单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。,(3)类型,应为属性指定所属的数据类型整型布尔型实型枚举类型系统中的其他类 用户自定义的

5、数据类型,(4)初始值,目的:保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。为用户提供易用性。,(5)属性字符串,指定关于属性的其他信息。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。,特殊类型的属性,类的作用域属性:属性下加下划线对象属性:用数组表示,3 操作,对类的对象所能做的事务的抽象。一个类可以有任意数量的操作或者根本没有操作。由返回值类型、名称和参数表描述。在UML中,类操作的语法为:,3 操作,(1)可见性(2)操作名(3)参数表(4)返回类型,(1)可见性,类型:公有(Public)“”私有(Private)“”受保护(Pro

6、tected)“”包内公有(Package)“”,(2)操作名,用来描述所属类的行为的动词或动词短语。单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。,(3)参数表,一些按顺序排列的属性定义了操作的输入。是可选的,即操作不一定必须有参数才行。定义方式:“名称:类型”。若存在多个参数,将各个参数用逗号隔开。参数可以具有默认值。,(4)返回类型,是可选的,即操作不一定必须有返回类型。绝大部分编程语言只支持一个返回值。具体的编程语言一般要加一个关键字void来表示无返回值。,4 职责,类或其他元素的契约或义务。自由形式的文本。非形式化的方法。,5

7、 约束,指定了类所要满足的一个或多个规则。形式化的方法。,6 注释,注释可以包含图形也可以包含文本。,3.1.3 定义类,实体抽象成类将系统要处理的数据抽象为类的属性处理数据的方法抽象成类的操作要对问题域有透彻的理解依据:需求规格说明书,类之间的关系,关联关系(Association)泛化关系(Generalization)依赖关系(Dependency)实现关系(Realization),对象之间的通信手段,包括:二元关联关联类或关联与反身关联聚合(Aggregation)组成(Composition),3.2 关联关系,3.2.1 二元关联,只有两个类参与的关联在类图中的关联关系,两个类的

8、相应对象所具有的关系称为链,名称角色多重性约束限定符导航性,3.2.1 二元关联,(1)名称,使用一个动词或动词短语来命名关联。清晰而简洁地说明类间关系。关联的名称并不是必需的。可以前缀或后缀一个指引阅读方向的方向指示符,以消除歧义。一般是从左到右,从上到下阅读。如果方向不同,要指出来。,(2)角色,关联关系中一个类对另一个类所表现出来的职责。角色的名称应该是名词或名词短语,以解释对象是如何参与关系的。可以用角色名代替关联名。,(3)多重性,指有多少对象可以参与该关联。可以表达一个取值范围、特定值、无限定的范围或一组离散值。格式:“minimum.maximum”(均为Int型)。赋给一个端点

9、的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。确定方式:,(4)约束,规定了实现关联端点时必须遵守的规则,(5)限定符,使用关键字ID识别对象集合中的对象,称为受限关联,(6)导航性,描述一个对象通过链进行导航访问另一个对象。使用导航性可以降低类间的耦合度。包括:单向关联和双向关联。双向导航一般省略箭头。大多数情况都是双向导航,3.2.2 关联类,与关联关系相连的类。关联类与关联相对应,表示关联的附加信息关联类是一种将数据值和链接关联在一起的手段,关联类与一般类的不同:一般类描述的是实体,关联类描述的是关系关联类与一般类的相同:关联类也是类,也可以与其他类关联,3.2.2 关联

10、类,3.2.3 或关联,或关联指多个关联附加约束条件,使类中的对象一次只能参与一个关联关系,3.2.3 反身关联,参与关联的对象属于同一个类,称为反身连接。,3.2.4 聚合关系(Aggregation),在关联之上的紧密耦合 表示整体与部分关系的关联。整体类和部分类都可以独立存在。,3.2.5 组成关系(Composition),更紧密耦合的关系 表示整体与部分关系的关联。部分类不能脱离整体类存在。,1.*,1.*,3.3 泛化关系(Generalization),存在于一般元素和特殊元素间的分类关系。可以用于类、用例以及其他模型元素。描述了一种“is a kind of”的关系。,3.3.

11、1 泛化的含义和用途,一般元素称为超类或父类,特殊元素称为子类子类继承了父类的所有属性和操作,并具有自己独有属性和操作。,3.3.2 泛化的层次,泛化可以有多层泛化是类关系中最强的耦合形式,必要时才使用只有在一个类确实是另一个类的特殊类型时才使用泛化,3.3.2 泛化的层次,不提倡使用多重泛化,3.3.3 泛化约束,泛化约束的表示,3.3.3 泛化约束,泛化约束的类型不完全约束incomplete完全约束complete解体约束disjoint重叠约束overlapping,3.4 依赖关系,表示两个或多个模型元素之间语义上的关系。一种元素以某种形式依赖于另一种元素。关联、实现和泛化都是依赖关

12、系的特例。,依赖关系,1.使用依赖(Usage):最常用2.抽象依赖(Abstraction)3.绑定依赖(Binding)4.授权依赖(Permission),实现关系,用于规格说明与实现之间的关系,通常用在接口以及实现该接口的类之间。,类关系图,3.5 构造类图模型,迭代进行以下步骤问题域类建模GUI类建模数据访问类建模,3.5 构造类图模型,首先对问题域类建模,步骤是:一、确定可以在用例图中找到的类二、为类图中的类添加必要的特性和操作三、分析类之间的关系,问题域类建模,一、确定可以在用例图中找到的类找出系统需求中的所有名词,作为类的候选者,形容词作为属性的线索,动词作为操作的候选者。筛选

13、类:去除冗余、无关、笼统名词、统一不一致的用法。对剩下的名词适当分类(人、事、物)通过检查名词是否存在相关的属性和行为,如果有,则应该建立相应的类。抽象出共享功能,构成单独的类。二、分析类的属性和操作,例,需求(P256)针对图书管理系统的需求,抽象出Borrower、Librarian、Administrator、Title、Book和Loan类,抽象出管理员Manager类,Librarian和Administrator 作为Manager类的泛化分析类的属性和操作,类的属性和操作1,类的属性和操作2,类的属性和操作3,1个Title对应1到多个Book1个Book对应0到1个Loan1个

14、Borrower对应0到多个LoanLibrarian和Administrator 是Manager类的泛化,三、分析类之间的关系,问题域类图1,问题域类图2,用户接口类(GUI)建模,用户接口类与用例图密切相关图书管理员的接口类系统管理员的接口类,图书管理员的接口类,系统管理员的接口类,数据访问类建模,Manager、Borrower、Title、Book和Loan都是持久性类,需要存储到数据库,因此抽象出共享的访问数据库的Persistent类,实现对数据库的增删改查操作。Manager、Borrower、Title、Book和Loan都是Persistent的泛化,数据访问类建模,GUI

15、类与问题域类的关系,大多比较简单借书、还书GUI类涉及较多类。,3.6 抽象类,抽象的操作,留给子类实现操作全部是抽象的类称为抽象类抽象类不能实例化抽象操作和抽象类用斜体表示,3.7 接口,一组没有相应方法实现的操作,类似于抽象类,不能实例化接口只有操作,没有属性通过将接口与类相关联,实现该接口。,3.8 对象图,描述参与一个交互的各个对象在交互过程中某一时刻的状态。可以被看作是类图在某一时刻的实例。对于每个属性,对象都有特定的值,3.8 对象图,对象之间的关系称为链,从类图中的关联而来。同一个类图所对应的对象图可以有多个,多个对象图合在一起共同展示了随着时间的推移,在不同时间点系统的对象状态

16、。,类图和对象图的区别,3.9 包图,包是对模型元素分组管理的机制。一个包可以包含一组类,还可以包含接口、用例、节点等模型元素。一个元素只能由一个包拥有。包划分的原则:低耦合、高内聚。Java中称为包(Package)C+、C#中称为命名空间(Namespace),3.9.1 理解包图,包表示方法,3.9.1 理解包图,包中的可见性当一个包使用另一个包中元素时,形成包之间的依赖,应避免依赖形成循环,3.9.2 导入包,一个包将另一个包导入时,该包里的元素能够使用那个被导入包里的元素,而不必通通过包名指定元素。,目标包,导入包元素的可见性,导入包时,只有目标包中的Public元素是可用的,Private元素不可见,导入关系的可见性,导入方式公共导入具有传递性私有导入不具有传递性,3.9.3 使用包图建模,面向对象中的三层包设计:用户界面GUI包问题域PD包数据访问DB包,本章完,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号