大家好,又见面了,我是你们的朋友全栈君。
类图的概念
描述类、接口及它们之间关系的图,显示系统中各个类的静态结构
类图的元素
类
- 面向对象系统组织结构的核心
- 对一组具有相同属性、操作、关系和语义的对象的抽象
- 包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)
类的组成
- 名称
- 属性
- 操作
名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写 属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性
在 UML 中,类属性的语法为
属性的可见性
- 公有(Public) “+” 所有类可见
- 私有(Private)“-” 该类及子孙可见
- 受保护(Protected)“#”只对该类本身可见
- 包(Package) “~” 只对同一包声明的类可见
属性名
- 每个属性必须有一个名字以区别于类中的其他属性
- 属性名由描述所属类的特性的名词或名词短语组成
- 除了第一个单词外其余单词的首字母要大写
属性的类型:简单类型,整型,浮点型,布尔型,枚举类型,……,SDK中的类、系统中的其他自定义类
属性的初始值: 保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性 为用户提供易用性
操作 对类的对象所能做的事务的抽象 一个类可以有任意数量的操作或者根本没有操作 返回类型、名称和参数一起被称为操作签名 在 UML 中,类操作的语法为
操作的可见性:
- 公有(Public) “+”
- 私有(Private) “-”
- 受保护(Protected) “#”
- 包(Package) “~”
操作名
- 用来描述所属类的行为的动词或动词短语
- 命名规则与属性相同
操作的参数表 :
- 一些按顺序排列的属性定义了操作的输入
- 是可选的,即操作不一定必须有参数才行
- 定义方式:“名称:类型”
- 若存在多个参数,将各个参数用逗号隔开
- 参数可以具有默认值
操作的返回类型
- 是可选的,即操作不一定必须有返回类型
- 绝大部分编程语言只支持一个返回值
- 具体的编程语言一般要加一个关键字 void 来表示无返回值
接口 在没有给出对象的实现和状态的情况下对对象行为的描述 包含操作但不包含属性 没有对外界可见的关联 一个类可以实现一个或多个接口
类之间的关系
依赖关系
表示两个或多个模型元素之间语义上的关系 客户以某种形式依赖于提供者
只要是在类中用到了对方,那么他们之间就存在依赖关系。
类中用到了对方:
- 如果是类的成员属性
- 如果是方法的返回类型
- 是方法接收的参数类型
- 方法中使用到
package com.longstudy.princple.uml;
public class PersonServiceBean {
private PersonDao personDao;//
public void save(Person person) {
}
public IDCard getIDCard(Integer personid) {
return null;
}
public void modify() {
Department department = new Department();
}
}
public class PersonDao{
}
public class IDCard{
}
public class Person{
}
public class Department{
}
依赖关系的分类:
- 使用依赖(Usage)
- 抽象依赖(Abstraction)
- 授权依赖(Permission)
- 绑定依赖(Binding)
泛化关系
泛化关系实际上就是继承关系,他是依赖关系的特例,如果A类继承了B类,我们就说A和B存在泛化关系
- 存在于一般元素和特殊元素间的分类关系
- 可以用于类、用例以及其他模型元素
- 描述了一种“is a kind of” 的关系
实现关系
规格说明(接口)和其实现之间的关系 客户必须至少支持提供者的所有操作 泛化和实现都可以将一般描述与具体描述联系起来 泛化将同一语义层上的元素连接起来,并且通常在同一模型内 实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内
关联关系
一种结构关系 指明事物的对象之间的联系
关联的名称: 使用一个动词或动词短语来命名关联 清晰而简洁地说明对象间关系 关联的名称并不是必需的 可以前缀或后缀一个指引阅读方向的方向指示符,以消除歧义
关联的角色: 关联关系中一个类对另一个类所表现出来的职责 角色的名称应该是名词或名词短语,以解释对象是如何参与关系的
关联的多重性
- 指有多少对象可以参与该关联
- 可以表达一个取值范围、特定值、无限定的范围或一组离散值
- 格式:“min … max” (均为int型)
- 赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联
聚合关系
一种特殊类型的关联 表示整体与部分关系的关联 描述了“has a”的关系
组合关系
组合是聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合 成员对象的生命周期取决于聚合的生命周期 聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和析构
UML类图实例
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158043.html原文链接:https://javaforall.cn