UML类图入门

news2024/11/17 11:54:32

UML类图入门

UML是一个通用的可视化建模描述语言,通过图形符号和文字来对系统进行建模。适用于各种软件的开发方法、生命周期的各个阶段。

类的UML图示

类使用包含类型、属性和操作(方法)且带有分割线的长方形来表示,如:

image-20230611151729411

对应的C#代码:

public class Employee
{
    private string name;
    private int age;
    private string email;

    public void ModifyInfo() { }
}

UML属性定义格式

可见性 名称:类型[=默认值]

  • 可见性:+、-、#分别代表public\private\protected
  • 名称表示属性名
  • 类型表示属性数据类型
  • 默认值为可选项

UML操作(方法)定义格式

可见性 名称(参数列表)[:返回类型]

类之间关系

关联

表示类与类之间最常用的一种关系,如登录界面类LoginForm中包含一个Button类型的按钮。

image-20230611153126810

对应的C#代码:

public class LoginForm
{
    private Button loginButton;
}
public class Button
{
}

双向关联

默认情况关联是双向的,如顾客购买商品并拥有商品,二商品也总有某个顾客与之关联。

image-20230611153853618

对应的C#代码

public class Customer
{
    private Product[] products;
}

public class Product
{
    private Customer customer;
}

单向关联

单向关联使用带箭头的实线来表示。

image-20230611154331869

对应的C#代码:

public class Customer
{
    private Address address;
}
public class Address
{
}

自关联

image-20230611154820628

对应的C#代码:

public class Node
{
    private Node subNode;
}

多重性关联

表示两个关联对象在数量上的对应关系

表示方式说明
1…1另一个对象与该类的一个对象有关系
0…*另一个对象与该类的零个或多个对象有关系
1…*另一个对象与该类的一个或多个对象有关系
0…1另一个对象与该类的零个或一个对象有关系
m…n另一个对象与该类的最少m个最多n个对象有关系(m≤n)

image-20230611160944276

对应的C#代码:

public class Form
{
    private Button[] buttons;
}
public class Button
{
}

聚合关系

表示整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。如汽车和发动机,发动机可以独立存在。

image-20230611162914597

public class Engine
{s
}
public class Car
{
    private Engine engine;
    public Car(Engine engine)
    {
        this.engine = engine;
    }
    public Engine Engine { 
        get { return engine; } 
        set { engine=value; }
    }
}

组合关系

表示整体和部分的关系,和聚合不同的是,表示部分的对象不能独立存在。

image-20230611163649631

对应的C#代码:

public class Head
{
    private Mouth mouth;
    public Head(Mouth mouth)
    {
        this.mouth = mouth;
    }
}
public class Mouth
{
}

依赖

表示特定事物改变可能会影响到使用该事物的其他事物。

依赖关系通常通过3种方式来实现:

  1. 一个类的对象作为另个类中的方法参数
  2. 在一个类的方法中将另个类的对象作为局部变量
  3. 在一个类的方法中调用另一个类的静态方法

image-20230611165120226

对应的C#代码:

public class Car
{
    public void Move()
    {
    }
}
public class Driver
{
    public Driver(Car car)
    {
        car.Move();
    }
}

泛化

泛化关系也就是继承关系

image-20230611170036354

对应的C#代码:

public class Person
{
    protected string name;
    protected int age;
    public void Move() { }
    public void Say() { }
}

public class Student:Person
{
    private string studentNo;
    public void Study() { }
}
public class Teacher :Person
{
    private string teacherNo;
    public void Teach() { }
}

接口实现

image-20230611170724267\

对应的C#代码:

public interface Vehicle
{
    void Move();
}
public class Ship : Vehicle
{
    public void Move()
    {
        
    }
}
public class Car : Vehicle
{
    public void Move()
    {
        
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人际关系的学习改进

表达的目的:让别人对你感兴趣 不要有苦劳而无功劳 爱的五种语言:表达爱的语言 人类存在的中心,是渴望和人亲近,被人所爱。婚姻即是被设计满足这种亲密关系和爱的需求的;把注意力集中在情绪健康所需的那片爱土上&…

【C++ 程序设计】第 4 章:运算符重载

目录 一、运算符重载的概念 (1)重载运算符的概念 ① 重载运算符的概念 ② 可重载的运算符 ③ 不可重载的运算符 ④ 运算符的优先级 (2)重载运算符为类的成员函数 (3)重载运算符为友元函数 &#…

【Linux】Docker部署镜像环境 (持续更新ing)

防火墙 1、查看防火墙状态 sudo systemctl status ufw 2、开启防火墙 sudo systemctl start ufw 3、关闭防火墙 sudo systemctl stop ufw 4、开机禁止开启防火墙 sudo systemctl disabled ufw 5、开启自启防火墙 sudo systemctl enabled ufw Elasticsearch 1、安装指定版本 比…

使用Pillow库轻松实现图像尺寸调整——>使每个图像具有相同的大小,方便模型处理和训练

在计算机视觉领域,对图像进行尺寸调整是一项非常常见的操作。在训练深度神经网络时,因为计算资源和内存限制的原因,我们通常需要将图像缩放到相同的尺寸。 在本文中,我们将介绍如何使用Python中的Pillow库对图像进行尺寸调整,并提供一个示例程序resize_images。 1. Pytho…

VulnHub靶场-Chronos

目录 0x01 声明: 0x02 简介: 0x03 环境准备: 0x04 信息收集: 1、主机发现 2、NMAP扫描 3、访问业务 4、目录探测 5、查看网页代码 0x05 渗透测试过程: 1、Burp Suite抓包 2、构造payload 测试是否可以外联…

CSS基础学习--5 background背景

一、介绍&#xff1a; CSS 背景属性用于定义HTML元素的背景。 CSS 属性定义背景效果: background-color 背景颜色background-image 背景图片background-repeatbackground-attachmentbackground-position 二、属性 2.1、background-color 属性定义了元素的背景颜色 <s…

根据word模板生成pdf文件

1、首先建一个word&#xff0c;插入一个表格&#xff0c;需要填充的值用${parame}代替 &#xff08;注意&#xff1a;这里的参数要和java实体类里面的参数对应起来&#xff0c;代码放在下面&#xff09; 2、制作完成后另存为xml格式 3、然后用文本编辑工具打开这个xml文件&…

CSS基础学习--6 CSS Text(文本)

一、文本颜色 color:red; 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000一个RGB值 - 如: RGB(255,0,0)颜色的名称 - 如: red body {color:red;} h1 {color:#00ff00;} h2 {color:rgb(255,0,0);} 二、文本的…

【备战秋招】每日一题:4月18日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站&#xff08;含题解&#xff09; www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据&#xff0c;挂载到我们的OJ上&#xff0c;供大家学习交流&#xff0c;体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

8 channel、反射、网络编程【Go语言教程】

8 channel、反射、网络编程【Go语言教程】 1 channel 1.1 概念及快速入门 channel:管道&#xff0c;主要用于不同goroutine之间的通讯 需求&#xff1a;现在要计算 1-200 的各个数的阶乘&#xff0c;并且把各个数的阶乘放入到 map 中。最后显示出来。要求使用 goroutine 完成…

[LeetCode周赛复盘] 第 349 场周赛20230611

[LeetCode周赛复盘] 第 349 场周赛20230611 一、本周周赛总结6470. 既不是最小值也不是最大值1. 题目描述2. 思路分析3. 代码实现 6465. 执行子串操作后的字典序最小字符串1. 题目描述2. 思路分析3. 代码实现 6449. 收集巧克力1. 题目描述2. 思路分析3. 代码实现 6473. 最大和…

测试老鸟总结,接口自动化测试用例设计编写,高级测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口信息来源 与…

百度图像识别 API

首先预览下效果 feaa250077a543a39f037ae8e78a3e80~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp (640594) (byteimg.com) 从以上预览图中可看出&#xff0c;每张图片识别出5条数据&#xff0c;每条数据根据识别度从高往下排&#xff0c;每条数据包含物品名称、识别度…

VisualStdio中scanf报错问题

VisualStdio中scanf报错问题 目录 一&#xff0e; 概述二&#xff0e; 解决方法 一&#xff0e; 概述 报错代码及说明 报错代码为C4996 会在哪种编译器中报错&#xff1f; VisualStdio系列编译器 为什么会报错&#xff1f; 因为VisualStdio比较严谨&#xff0c;认为scanf不…

内网安全:横向传递攻击( RDP || Cobalt Strike )

内网安全&#xff1a;横向传递攻击&#xff08; RDP || Cobalt Strike &#xff09; 横向移动就是在拿下对方一台主机后&#xff0c;以拿下的那台主机作为跳板&#xff0c;对内网的其他主机再进行后面渗透&#xff0c;利用既有的资源尝试获取更多的凭据、更高的权限&#xff0…

【基础知识整理】时间复杂度 空间复杂度

概览 时间复杂度与空间复杂度的作用是在衡量一个算法的优劣性&#xff0c;以及在二者之间进行权衡&#xff0c;寻找二者的平衡点。 时间复杂度是指执行算法所需时间的增长率&#xff0c;而空间复杂度则是指执行算法所需存储空间的增长率。 高时间复杂度的算法可能需要在短时间…

合金氢化物动力学与瞬时流量

在经典的合金氢化物动力学描述中&#xff0c;有一种是用JMAK方程来描述和拟合合金的吸放氢过程&#xff0c;方程很简洁&#xff1a;&#xff0c;其中是反应程度或者百分比&#xff0c;表示合金氢化物吸氢或者放氢的程度&#xff0c;是该合金吸氢或放氢的一种特征常数&#xff0…

使用wab2app将网页打包成APK

前言 通过开源项目ChatGPT-Next-Web部署完了私人网页ChatGPT&#xff0c;为了使访问更加便捷&#xff0c;便想着使用wab2app打包为APK&#xff0c;虽然最终达成了效果&#xff0c;可一路走来遇到了很多坑儿&#xff0c;记录下 打包流程 有要打包的网站和软件HBuilder X&…

【Kubernetes存储篇】持久化存储PV、PVC详解

文章目录 一、PV、PVC持久化存储理论1、PV、PVC是什么&#xff1f;2、PV的供应方式3、PV、PVC的回收策略 二、案例&#xff1a;PV、PVC持久化存储案例演示1、搭建NFS服务端2、创建PV&#xff0c;并使用NFS共享存储3、创建PVC&#xff0c;并和PV绑定4、创建Pod&#xff0c;并挂载…

docker中运行PostgreSQL容器

我们如何在docker中运行postgresql容器&#xff0c;要进过如下几个步骤就可以了。 拉取postgresql容器 docker pull postgres:latest使用上述命令将从 Docker Hub 存储库中提取最新可用版本的 PostgreSQL。 从 PostgreSQL 服务器 Docker 镜像运行容器 在部署之前&#xff0c;…