UML图:类图 –详细介绍

UML图:类图 –详细介绍类图的概念描述类、接口及它们之间关系的图,显示系统中各个类的静态结构类图的元素类面向对象系统组织结构的核心对一组具有相同属性、操作、关系和语义的对象的抽象包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)类的组成名称属性操作名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性在UML中,类属性的语法为属性的可见性

大家好,又见面了,我是你们的朋友全栈君。

类图的概念

描述类、接口及它们之间关系的图,显示系统中各个类的静态结构
在这里插入图片描述

类图的元素

  • 面向对象系统组织结构的核心
  • 对一组具有相同属性、操作、关系和语义的对象的抽象
  • 包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)

类的组成

  • 名称
  • 属性
  • 操作
    在这里插入图片描述

名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写
属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性

在 UML 中,类属性的语法为
在这里插入图片描述
属性的可见性

  • 公有(Public) “+” 所有类可见
  • 私有(Private)“-” 该类及子孙可见
  • 受保护(Protected)“#”只对该类本身可见
  • 包(Package) “~” 只对同一包声明的类可见

属性名

  • 每个属性必须有一个名字以区别于类中的其他属性
  • 属性名由描述所属类的特性的名词或名词短语组成
  • 除了第一个单词外其余单词的首字母要大写

属性的类型:简单类型,整型,浮点型,布尔型,枚举类型,……,SDK中的类、系统中的其他自定义类

属性的初始值:
保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性
为用户提供易用性

操作
对类的对象所能做的事务的抽象
一个类可以有任意数量的操作或者根本没有操作
返回类型、名称和参数一起被称为操作签名
在 UML 中,类操作的语法为
在这里插入图片描述
操作的可见性:

  • 公有(Public) “+”
  • 私有(Private) “-”
  • 受保护(Protected) “#”
  • 包(Package) “~”

操作名

  • 用来描述所属类的行为的动词或动词短语
  • 命名规则与属性相同

操作的参数表 :

  • 一些按顺序排列的属性定义了操作的输入
  • 是可选的,即操作不一定必须有参数才行
  • 定义方式:“名称:类型”
  • 若存在多个参数,将各个参数用逗号隔开
  • 参数可以具有默认值

操作的返回类型

  • 是可选的,即操作不一定必须有返回类型
  • 绝大部分编程语言只支持一个返回值
  • 具体的编程语言一般要加一个关键字 void 来表示无返回值

接口
在没有给出对象的实现和状态的情况下对对象行为的描述
包含操作但不包含属性
没有对外界可见的关联
一个类可以实现一个或多个接口
在这里插入图片描述

类之间的关系

依赖关系

表示两个或多个模型元素之间语义上的关系
客户以某种形式依赖于提供者

在这里插入图片描述
只要是在类中用到了对方,那么他们之间就存在依赖关系。

类中用到了对方:

  1. 如果是类的成员属性
  2. 如果是方法的返回类型
  3. 是方法接收的参数类型
  4. 方法中使用到
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.net/158043.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 18.04 固定 NFS 端口

    Ubuntu 18.04 固定 NFS 端口NFS本身是没有提供信息传输的协议和功能的,它使用的是RPC(RemoteProcedureCall)协议。通过rpcinfo命令可以查看NFS相关的端口:linux@linux-virtual-machine:~$rpcinfo-plocalhostprogramversprotoportservice1000004tcp111portmapper1000003tcp111portmapp

    2022年6月27日
    76
  • redisson读写锁使用场景_Redisson酒店

    redisson读写锁使用场景_Redisson酒店读写锁一次只有一个线程可以占有写模式的读写锁,但是可以有多个线程同时占有读模式的读写锁.正是因为这个特性,当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞.当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是如果线程希望以写模式对此锁进行加锁,它必须直到所有的线程释放锁.通常,当读写锁处于读模式锁住状态时,如果有另外线程试图以写模式加锁,读写锁通常会阻塞随后的读模式锁请求,这样可以避免读模式锁长期占用,而等待的写模式

    2022年8月12日
    6
  • docker安装RabbitMQ「建议收藏」

    docker安装RabbitMQ「建议收藏」docker安装RabbitMQ查看仓库里的RabbitMQdockersearchrabbitmq安装RabbitMQdockerpullrabbitmq这里是直接安装最新的,如果需要安装其他版本在rabbitmq后面跟上版本号即可启动RabbitMQdockerrun-d–hostnamemy-rabbit–namerabbit-p15672:15672-p5672:5672rabbitmq安装插件先执行dockerps拿到当前的镜像ID

    2022年5月24日
    39
  • Java实现Excel导入和导出,看这一篇就够了(珍藏版)

    Java实现Excel导入和导出,看这一篇就够了(珍藏版)前言最近抽了两天时间,把Java实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。环境准备1.Maven依赖本次工具类的封装主要依赖于阿里巴巴的JSON包,以及表格处理的POI包,所以我们需要导入这两个库的依赖包,另外,我们还需要文件上传的相关包,毕竟我们在浏览器页面,做Excel导入时,是上传的Excel文件。<!–文件上传–><dependency>

    2022年6月28日
    129
  • 【史上最全】国内外常用精品API接口汇总[时间较久凑合着用吧]

    【史上最全】国内外常用精品API接口汇总[时间较久凑合着用吧]

    2022年2月18日
    59
  • 电阻电容电感的常用标注方法(手机电容和电阻的区分)

    认识电容及电容电阻的标注   一、认识电容及电容的标注①电容的功能和表示方法。由两个金属极,中间夹有绝缘介质构成。电容的特性主要是隔直流通交流,因此多用于级间耦合、滤波、去耦、旁路及信号调谐。电容在电路中用“C”加数字表示,比如C8,表示在电路中编号为8的电容。②电容的分类。电容按介质不同分为:气体介质电容,液体介质电容,无机固体介质电容,有机固体介质电容电解电容。按极性分为:有极性电容和无极性电

    2022年4月12日
    138

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号