当前位置: 首页 > news >正文

UML笔记 之 事物和关系

简介

什么是UML?

       UML(Unified Modeling Language,统一建模语言),不是编程语言,是一种标准化的、通用的可视化建模语言,用于对软件系统进行规约、构造、可视化和文档化。它的核心思想是用图形化的方式来描述软件系统的结构和行为。是面向对象软件的标准化建模语言。

UML的目的和作用?

沟通工具

为开发人员、分析师、测试人员和客户之间提供统一的交流语言。

蓝图作用

在编码之前,通过模型来设计和理解系统,降低风险和复杂性。

文档化

生成系统设计和架构的正式文档。

支持全过程

适用于从需求分析到系统设计的整个软件开发过程。

UML的组成和分类

1、由三个基本模块组成:事物、关系和图

事物:是对模型中最具有代表性的成分的抽象

关系:把事物结合在一起

:聚集了相关事物

2、UML中有四种事物

结构事物、行为事物、分组事物、注释事物

3、UML中有4种关系

依赖、关联、泛化和实现

4、UML 2.0提供了13种图

(1)分别是类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、组合结构图、部署图、包图、交互概览图和计时图

(2)其中序列图、通信图、交互概览图和计时图均被称为交互图

(3)在实际项目中,最常用的是类图、用例图、序列图、活动图和状态图

5、UML 画图工具

 在线免费工具 Draw.io

未命名绘图 - draw.io

事物

结构事物

是UML模型的静态部分,描述概念和物理元素

结构事物包含:

Class

接口

Interface

协作

Collaboration

用例

Use Case

主动类

Active Class

构件

Component

制品

Artifact

结点

Node

行为事物

是UML模型的动态部分,描述了跨越时间和空间的行为。

行为事物包含:

交互

Interaction

状态机

State Machine

活动

Activity

分组事物

是UML模型的组织部分。最主要的分组事物是包,结构事物、行为事物甚至其他分组事物都可以放进包内。

注释事物

是UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。

关系

在UML类图中,常见的有以下几种关系:

  • 泛化(Generalization):继承的关系,实线带三角形箭头,指向父类。
  • 实现(Realization):实现的关系,虚线带三角形箭头,指向接口。
  • 关联(Association):拥有的关系,实线带普通箭头,指向被拥有者。
  • 聚合(Aggregation):整体与部分的关系。实线带空心菱形,指向整体。
  • 组合(Composition):整体与部分的关系,但不能离开整体而单独存在。实线实心菱形,指向整体。
  • 依赖(Dependency):使用的关系,即一个类的实线需要另一个类的协助。虚线普通箭头,指向被使用者。

依赖关系

定义

是一种最微弱、临时性的使用关系。如果一个类A的某个行为偶然地、临时地引用了另一个类B,那么类A就依赖于类B。

核心思想

一个类的变化会影响到依赖它的另一个类。

何时使用

当一个类的方法需要短暂地使用另一个类的对象时。

代码表现

1、另一个类的对象作为方法参数

public class MyMath
{public int Add(int a,int b){return a + b;}
}public class Exam
{public void CaculateAdd(MyMath myMath,int a,int b){var result = myMath.Add(a,b);Console.WriteLine(result);  }
}

2、另一个类的对象作为方法内的局部变量

public class MyMath
{public int Add(int a,int b){return a + b;}
}public class Exam
{public void CaculateAdd(int a,int b){//在方法内部创建局部变量MyMath myMath  = new MyMath();var result = myMath.Add(a,b);Console.WriteLine(result);  }
}

3、调用另一个类的静态方法

public class MyMath
{public static int Add(int a,int b){return a + b;}
}public class Exam
{public void CalculateAdd(int a,int b){var result = MyMath.Add(a,b);Console.WriteLine(result);  }
}

UML表示

关联关系

定义

是一种比依赖更强、长期且稳定的拥有关系。它表示一个类对象与另一个类对象之间存在结构上的永久性或长期性的连接。

代码表现

1、一个类的对象作为另一个类的成员变量

public class MyMath
{public int Add(int a,int b){return a + b;}
}public class Exam
{public MyMath myMath;public Exam(){myMath = new MyMath();  }public void CalculateAdd(int a,int b){var result = myMath.Add(a,b);Console.WriteLine(result);  }
}

UML表示

聚合关系和组合关系是关联关系的两种特殊形式

聚合关系

定义

表示"整体-部分"关系,但部分可以独立于整体存在

代码表现

// 部分 - 可以独立存在
public class Professor
{public string Name { get; set; }public Professor(string name){Name = name;Console.WriteLine($"Professor {name} created");}public void Teach(){Console.WriteLine($"Professor {Name} is teaching");}
}// 整体 - 包含部分
public class University
{public string Name { get; set; }// 聚合关系:教授列表 - 教授可以独立于大学存在public List<Professor> Professors { get; set; }public University(string name){Name = name;Professors = new List<Professor>();Console.WriteLine($"University {name} created");}public void AddProfessor(Professor professor){Professors.Add(professor);Console.WriteLine($"Added {professor.Name} to {Name}");}
}

UML表示

组合关系

定义

比聚合更强的"整体-部分"关系,部分不能独立于整体存在,生命周期完全绑定。

// 部分 - 不能独立存在
public class Room
{public string RoomNumber { get; set; }public string Type { get; set; }public Room(string number, string type){RoomNumber = number;Type = type;Console.WriteLine($"Room {number} ({type}) created");}
}// 整体 - 控制部分的生命周期
public class Building
{public string Name { get; set; }// 组合关系:房间列表 - 房间不能独立于建筑存在public List<Room> Rooms { get; private set; }public Building(string name){Name = name;Rooms = new List<Room>();// 组合关系:整体创建时创建部分CreateDefaultRooms();Console.WriteLine($"Building {name} created with {Rooms.Count} rooms");}private void CreateDefaultRooms(){// 建筑控制房间的创建Rooms.Add(new Room("101", "Office"));Rooms.Add(new Room("102", "Conference"));Rooms.Add(new Room("201", "Laboratory"));}public void AddRoom(string roomNumber, string type){// 建筑负责创建新的房间Rooms.Add(new Room(roomNumber, type));}
}

UML表示

泛化关系

定义

即面向对象中的继承,它表示父类和子类之间的关系。

核心思想

子类是对父类的特化,继承父类的所有结构和行为,并可以添加自己特有的属性和方法。

代码表现

public class MyMath
{public int Add(int a,int b){return a + b;}
}public class Exam: MyMath{public void CalculateAdd(int a,int b){var result = Add(a,b);Console.WriteLine(result);  }
}

UML表示

实现关系

定义

描述一个类实现一个接口所定义的操作。它指定了“类必须做什么”,但不指定如何做。

核心思想

一个类负责具体实现接口中声明的所有抽象方法。

代码表现

public interface IMathLogic
{public int Add(int a,int b);public int Multiply(int a, int b);
}public class Exam: IMathLogic{public int Add(int a,int b){return a+b;}public int Multiply(int a, int b){return a * b;}
}

UML表示

总结

关系英文核心语义代码关键词
依赖Dependency临时使用局部变量、参数、静态调用
关联Association长期拥有成员变量
泛化Generalization是一种继承父类
实现Realization能做什么实现接
http://www.dtcms.com/a/449633.html

相关文章:

  • 中国黄金集团建设有限公司官方网站照片在线编辑
  • 从零开始学习Python Django:从环境搭建到第一个 Web 应用
  • Lenovo XiaoXin Pro13 i5-10210U_i7-10710U 黑苹果 EFI
  • 网站建设服务商24小时接单移动应用开发专业学什么
  • 从 0 到 PB 级存储:MinIO 分布式文件系统实战指南与架构解密
  • [人工智能-综述-23]:AI的硬件层以及组成架构、GPU内部以及组成架构
  • 营销型企业网站分pageadmincms
  • JDK安装操作命令(linux)
  • UNIX下C语言编程与实践39-UNIX 定时器:alarm 函数与 setitimer 函数的使用与对比
  • 18款禁用网站app全部用asp.net 做网站
  • 对比网站中国最大免费wap网站
  • 虚拟麦克风驱动下载
  • 算法题(227):回文字符串
  • 框架--SpringBoot
  • STM32F103 MPU6500 DMP库姿态解算
  • 使用第三方库
  • 腾讯企业邮箱登录入口app云优化seo软件
  • 【操作系统-Day 40】文件的“身份证”:深入解析文件定义、属性与核心操作
  • 磁共振成像原理(理论)19:基本成像原理 (Basic Imaging Methods) - 三维成像
  • 线程池——线程池
  • WebSocket细谈
  • 公司网站怎么建站微网站如何做微信支付宝支付
  • Ubuntu 原地升级 MongoDB 全攻略
  • 网站变灰色代码安徽省建设工程信息网官网是什么网站
  • Hexo博客搭建系列(四):透明居中导航栏+鼠标悬停放大效果
  • 【STM32项目开源】基于STM32的智能仓库火灾检测系统
  • 陕西省建设监理协会网站证书wordpress 图片外链
  • 做模板网站企业网站类型
  • 24H2壁纸显示错误修复(针对vb.net的紧急加更)
  • 兰州做网站 东方商易怎么样做美术招生信息网站