首页 > 其他分享 >UML是啥?类图是啥?UML类图怎么画?进来手把手教!!!

UML是啥?类图是啥?UML类图怎么画?进来手把手教!!!

时间:2024-06-21 17:57:12浏览次数:23  
标签:关系 手把手 类图 关联 public 2.2 UML class

目录

一、什么是类图?

二、UML类图怎么画?

2.1 单个类

2.2 类之间的关系

2.2.1 泛化关系

2.2.2 实现关系

2.2.3 依赖关系

2.2.4 关联关系

单向关联

 双向关联

 自关联

2.2.5 聚合关系

2.2.6 组合关系

三、实战

制作类图的一般步骤:

需求

工具


一、什么是类图?

        UML:统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明,展示,构建和记录软件系统的产出。

        类图(Class Diagram)是描述类、接口、协同以及他们之间关系的图,用来显示系统中这些概念的静态结构。类图也是其它图的基础,我们可以在类图的基础上,使用状态图、协作图、组件图和配置图等。

二、UML类图怎么画?

2.1 单个类

常见的类图和接口

除此之外还有一些表示:

  • 静态属性/方法:加上下划线,如 -ClassAttribute: Long
  • 抽象属性/方法:使用斜体表示,如 +AbstractOperation()
  • 职责:可以在操作部分的下面再添加一个区域,用来说明类的职责,即说明类或其它元素的契约或义务。
  • 约束:指定了该类所要满足的一个或多个规则,用大括号表示,如 {Some Properties}

2.2 类之间的关系

2.2.1 泛化关系

        泛化关系描述的是“is a kind of”的关系,使用带空心三角形的箭头来表示,箭头从子类指向父类:

泛化关系

下面是一个车辆Vehicle与Truck之间的泛化表示:

        车辆Vehicle与Truck之间的泛化关系

实现这种关系的Java代码如下:

class Vehicle{}
class Truck extends Vehicle{}

2.2.2 实现关系

        实现关系是关于规格说明和其实现之间的关系,它将一种模型元素与另一种模型元素连接起来,比如类和接口。实现关系将不同语义层上的元素连接起来,这种关系不仅使用于接口和类之间,也可以是类的不同等级之间的联系,如粗设计与细设计之间。

        实现一般使用带空心三角形的虚线箭头表示,箭头指向接口。下面是关于接口和实现接口类之间的标识方法:

实现关系

        下面是一个具体的接口和实现之间的例子。IUser是一个接口,VipUser是一个类,VipUser类要实现接口IUser:

实现关系举例

其Java代码可以表示成下面的形式:

interface IUser{
public void walk();
class VipUser implements IUser {
public void walk(){}
2.2.3 依赖关系

        它表示这样一种情形,对于一个元素(提供者)的某些改变可能会影响或提供消息给其它元素(客户),即客户以某种形式依赖于其它类元。

依赖关系

这主要的情形为:

  • 客户类的操作需要提供者类的参数
  • 客户类的操作返回提供者类;
  • 客户类的操作在实现中使用提供类的对象

下面举个例子来说明这三种情形:

依赖关系举例

使用Java程序来表示上面这种情形:

class Car{
public void Move(){}
class Person{
    public void Travel(Car car){ car.Move();}
    public Car BuyCar(float price){}
    public void DoSth(){Car car; ...}
}
2.2.4 关联关系

        关联关系是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接。

        关联的任何一个连接点都叫做关联端。关联端可以有自己的角色、多重性、可见性等修饰。关联也可以有自己的名称。在UML中,关联关系用一条连接两个类的实线表示:

关联关系

        上面的图中,“拥有”为关联的名称,“客户”为类Person的角色,“交通工具”为类car的角色。角色也可以有自己的可见性,“客户”和“交通工具”前的“+”即代表其可见性为公有。关联端的“1”和“0..n”是描述的多重性,下面将会做进一步的介绍。

        关联的多重性(Multiplicity)是指有多少个对象可以参与该关联,可用来表达一个取值范围、特定值、无限定的范围或一组离散值。多重性是UML中使用最广泛的约束,主要有以下几种形式:

形式含义形式含义
0恰为00..n0到多个
1恰为11..n1到多个
0..10或13..n3到多个,至少3个
n0或多个3,5,73个或5个或7个

关联关系多重性

单向关联

        单向关联用带箭头的实线表示,箭头由源类指向目标类,这种关联实际上是带导航的关联。它指在源类中要使用目标类的对象作为成员:

单向关联

上面类之间的关系可以使用下面的Java代码来表示:

class Department{}
class Teacher {
    Department depart;
}
 双向关联

        双向关联关系不再绘制箭头,使用直线直接连接两个类即可,如下面两个类之间的关系即是双向关联关系:

双向关联

实现这种关系的Java代码可以如下表示:

class Category{
    Film film;
}
class Film {
    Category category;
}

带有角色修饰的双向关联:

带有角色修饰的双向关联

实现这种关联关系的Java代码可表示如下:

class Teacher{
    public Student aLearner;
}
class Student{
    public Teacher alnstructor;
}
 自关联

        自关联关系即一个类与自己进行关联。下面类关系的意思是employee类中有一个为employee类型的leader成员,表示员工的领导:

自关联

实现这种关联关系的Java代码可表示如下: 

public class employee{    
    private employee leader;
}
2.2.5 聚合关系

    聚合关系表示整体与部分关系的关联,一组元素组成了一个更大、更复杂的单元。聚合关系描述了“has a”的关系,在UML中聚合关系用带空心菱形头的实线来表示,头部指向整体。这种关系中的空心菱形并不是箭头,它只表明哪端是整体。聚合的双向关联的一个例子,它表示College类是University类的一个聚合成分:

聚合关联

使用Java实现的代码如下所示:

class University{
    public List<College> colleges;
}
class College {
    public University university;
}

如果是单向的聚合关系,可以使用下面的方式来表示:

单向聚合关联关系

        跟上面那个例子的区别是,这种聚合关系只在University类中声明College类的成员对象,不在College类中声明University的成员对象。使用Java代码实现如下:

class University{
    public List<College> colleges;
}
class College {
}

当然单向的聚合关系也可以表示下图的形式:

单向聚合关系表现形式

使用Java代码实现如下:

class University{}
class College {
    public University university;
}

2.2.6 组合关系

        组合关联是聚合的一种特殊情况,是更强形式的聚合(即强聚合),成员的生命周期取决于聚合的生命周期。聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。

在UML中,组合使用带实心菱形头的实线来表示,其菱形在整体这一端:

组合关联

上面的Triangle类由多个Side类对象组合而成,当Triangle对象创建时,Side的对象被创建,Triangle对象被销毁时,其Side对象也将被销毁。使用Java代码实现如下:

class Side{}
class Triangle {
    private final List<Side> sides;
    public Triangle(List<Side>sides){
        this.sides=sides;
    }
}

三、实战

制作类图的一般步骤:

  1. 研究分析问题领域,确定系统的需求;
  2. 发现对象与对象类,明确他们的含义和责任,确定属性和操作。
  3. 发现类之间的静态联系;
  4. 设计类与联系;
  5. 绘制类图并编制相应的说明。

需求

S校图书馆借阅系统的”类“

经过认真分析类之间的关系,使用ProcessOn工具绘制的类图如下:

ProcessOn绘制的S校图书馆借阅系统类图

工具

ProcessOn思维导图流程图-在线画思维导图流程图_在线作图实时协作

UMLet - 用于快速 UML 图的免费 UML 工具

标签:关系,手把手,类图,关联,public,2.2,UML,class
From: https://blog.csdn.net/renxi0/article/details/139747797

相关文章

  • 包教包会,手把手教你配置NetBeans IDE
    文章目录引言1.安装NetBeans1.1下载与安装1.2初次启动2.基本配置2.1设置界面2.2常用配置项3.创建与管理项目3.1创建新项目3.2配置项目结构4.安装和配置插件4.1安装插件4.2推荐插件4.3配置插件5.主题与配色方案5.1安装主题5.2切换主题5.3自定义配色......
  • 【基础教学】保姆级手把手教学使用VMware安装kali虚拟机
    目录序言1.下载镜像1.1下载kali2.安装虚拟机2.1VM创建虚拟机2.2加载镜像2.3kali设置中文序言本文主要讲述如何使用VMware安装kali虚拟机。1.下载镜像1.1下载kali首先访问kali镜像地址,根据个人需求下载相应版本,我这里下载64位everything版本https://www.kali.org......
  • 从理论到实践掌握UML
    统一建模语言(UML)是软件工程师用来设计软件系统的一种工具,就像是一套图形化的说明书。它让开发团队能够以图形化的方式来理解、设计和开发软件系统,比起用文字来描述,更加直观易懂。本文通过UML实例化的理论和实践相合,以电商系统为例,演示如何将UML实例化应用于实际项目中。无论......
  • 计算机毕业设计项目推荐,33709基于协同过滤的旅游推荐系统的设计与实现(开题答辩+程序定
    摘 要本论文主要论述了如何使用python语言、Django框架开发一个旅游推荐系统,本系统将严格按照软件开发流程,进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析......
  • window中git的下载安装(手把手教学)
    1、下载git官网下载:Git-Downloads(git-scm.com)点进去后,进入如下界面:(根据自己的系统选择下载)哈哈哈哈哈哈哈哈哈哈哈,官网下载很慢以下提供一个镜像,供大家使用:CNPMBinariesMirror(npmmirror.com)自己选择对应的版本下载下载好了之后双击运行安装包2、安装接......
  • 手把手教你如何部署自己的One Tool助手
    手把手教你如何部署自己的OneTool助手前言安装教程效果图在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0fc5cb0f451e4c50b55ec850a5517b0c.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/56331f878b9545d5bff6f938c......
  • 《UML基础、案例与应用》习题记录-第17章
    部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。 第17章领域分析17.11.2习题1. 2.   3. 4. 5.  6.   ......
  • 《UML基础、案例与应用》习题记录-第19章
    部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。第19章开发用例19.7.2习题 1.2.  3. 4. 用例Notifyrequestcompleted用例描述酒保完成饮料定单后通知服务员。假设条件顾客就餐,选择了饮料;服务员通过传递饮料定单......
  • UML:用例图的扩展点特性详解
    引言UML(统一建模语言)用例图是一种常用的系统建模工具,它可以帮助我们直观地表示系统的功能和用户的交互。这里将重点讲解UML用例图中的扩展点(ExtensionPoint)特性,通过具体示例深入理解这一概念。什么是扩展点?扩展点是UML用例图中的一个重要概念,它允许我们在用例的基础上添......
  • 手把手教NLP小白如何用PyTorch构建和训练一个简单的情感分类神经网络
        在当今的深度学习领域,神经网络已经成为解决各种复杂问题的强大工具。本文将通过一个实际案例——对Yelp餐厅评论进行情感分类,来介绍如何使用PyTorch构建和训练一个简单的神经网络模型。我们将逐步讲解神经网络的基础概念,如激活函数、损失函数和优化器,并最终实现一......