登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
每日签到
每天签到奖励2圆-6圆
发帖说明
VIP申请
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
VIP申请
VIP网盘
网盘
联系我们
每日签到
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
UML类图-UML Class Diagram
UML类图-UML Class Diagram
[ 复制链接 ]
琉艺戕
2025-6-3 00:17:02
导航
1前言
2UML类图中的元素
2.1类
2.2接口
3UML类图中的关系
3.1关联关系
3.2泛化关系
3.3实现关系
3.4聚合关系
3.5组合关系
3.6依赖关系
3.7关系中的数量表示
1 前言
在面向对象软件开发中,类是软件设计的基本单元,由类构造出对象,由对象支持整个软件系统的运行,因此UML中的类图是开发人员使用最高频的图。一个复杂的软件系统,通常由非常多的类构成,如何让这些相互交织的类与对象高效的协同工作,一直以来都是软件设计领域中的巨大挑战,在这个过程中,诞生了诸如领域驱动设计(DDD),微服务等一系列革命性的思想。
类图以可视化的方式呈现了软件中的基本单元以及它们之间的关系。在软件架构设计过程中,它可以帮助架构师快速构思项目框架而无需关注代码细节;在软件开发过程中,它又可以精确描述类中的所有元素细节。因此对于开发人员,了解了面向对象就必须掌握UML类图。来源:https://www.wubayue.com
2 UML类图中的元素
2.1 类
类的基本构成
在UML类图中,类主要由三部分构成:类的名称、类的属性与类的方法。
类的基本构成代码示例如下:
// 类名称
public class MyClass
{
// 属性
public int MyProperty { get; set; }
// 方法
public int MyMethod(int p1, int p2)
{
return p1 + p2;
}
}
复制代码
类成员的可访问性
类成员的可访问性通过类成员的前缀符号表示:
+
表示公有,该成员可以被任何对象访问。
~
表示包内公有,该成员可以被同一包内的对象访问。
#
表示受保护,该成员只能被当前类对象及子类的对象访问。
-
表示私有,该成员只能被当前类对象访问,其它外部对象无法访问。
类成员的可访问性代码示例如下:
// 类成员的可访问性
public class MyClass
{
// 公有
public void PublicMethod()
{
}
// 包内公有
internal void InternalMethod()
{
}
// 受保护
protected void ProtectedMethod()
{
}
// 私有
private void PrivateMethod()
{
}
}
复制代码
抽象类与抽象成员
抽象类与抽象成员均使用斜体表示。
抽象类与抽象成员代码示例如下:
// 抽象类
public abstract class AbstractClass
{
// 抽象方法
public abstract void AbstractMethod();
}
复制代码
静态类成员
静态类成员使用下划线表示。
静态类成员代码示例如下:
// 静态类成员
public class MyClass
{
// 静态属性
public static int StaticProperty { get; set; }
// 静态方法
public static void StaticMethod()
{
}
}
复制代码
2.2 接口
接口在UML图例中与类的主要差别是接口名称后多了一个圆圈。
接口代码示例如下:来源:https://www.wubayue.com
// 接口
public interface MyInterface
{
// 属性
int MyProperty { get; set; }
// 方法
void MyMethod();
}
复制代码
3 UML类图中的关系
3.1 关联关系
关联关系是对象之间最常见的一种关系,主要表示为拥有。比如老师拥有课程,老师与课程之间即为单向的关联关系;老师拥有学生,学生也拥有老师,老师与学生之间即为双向的关联关系。
关联关系示例代码如下:
// 课程
public class Course
{
public string name { get; set; }
}
// 老师
public class Teacher
{
// 老师的课程
public Course[] Courses { get; set; }
// 老师的学生
public Student[] Students { get; set; }
}
// 学生
public class Student
{
// 学生的课程
public Course[] Courses { get; set; }
// 学生的老师
public Student[] Students { get; set; }
}
复制代码
3.2 泛化关系
泛化通常表示子类对父类的继承关系。
泛化关系示例代码如下:
// 动物
public class Animal
{
// 重量
public decimal Weight { get; set; }
// 移动
public virtual void Move()
{
Console.WriteLine("动物都会动");
}
}
// 狗
public class Dog : Animal
{
public override void Move()
{
Console.WriteLine("狗在地上跑");
}
}
// 鱼
public class Fish : Animal
{
public override void Move()
{
Console.WriteLine("鱼在水中游");
}
}
复制代码
3.3 实现关系
通常为具体类实现抽象的接口。
实现关系示例代码如下:
// 画画
public interface Drawing
{
// 笔
string Pen { get; }
// 作画
void Paint();
}
// 素描画
public class Sketch : Drawing
{
public string Pen
{
get { return "铅笔"; }
}
public void Paint()
{
Console.WriteLine("画素描画");
}
}
// 水彩画
public class Watercolor : Drawing
{
public string Pen
{
get { return "毛笔"; }
}
public void Paint()
{
Console.WriteLine("画水彩画");
}
}
复制代码
3.4 聚合关系
表示整体与部分的关系,聚合属于强关联关系。
3.5 组合关系
表示整体与部分的关系,组合属于最强关联关系。
组合与聚合的区别在于组合中的部分不能脱离于整体单独存在,比如部门不能脱离于公司而存在。
3.6 依赖关系
依赖关系并非类图中的特有关系,而是UML中的一种通用关系,比如在用例图中也能使用。依赖即使用关系,通常为单方向。
3.7 关系中的数量表示
两个类之间的关系,有时还需要使用数量进行更精确的描述,比如一辆汽车有一台引擎多个轮胎,一家公司有多个部门等。类图关系中的数量表示位于关系连线的两端,具体含义如下:来源:https://www.wubayue.com
标识含义0..10个或1个,最多1个0..*0个或多个,数量不限1..1只有1个1..*1个或多个,至少1个1只有1个(简化表示)*0个或多个,数量不限(简化表示)本文同步发布于个人博客:wubayue.com
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
UML
类图
Class
Diagram
相关帖子
UML之包与包图
UML之发现用例
UML之泛化、特化和继承
UML用例图-UML Use Case Diagram
[编程]UML语言:理论之光与实践之惑
Objective-C之Class底层结构探索
你必须学UML之理论篇
【UML分析、建模与设计】我在工作时遇到UML
图表控件Aspose.Diagram教程:使用 Java 读取 Visio 形状数据
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
UML之包与包图
0
334
钱闲华
2025-06-06
业界
UML之发现用例
0
1033
咒卖箴
2025-06-06
业界
UML之泛化、特化和继承
0
84
髡芯
2025-06-06
业界
UML用例图-UML Use Case Diagram
0
381
况雪柳
2025-06-06
业界
[编程]UML语言:理论之光与实践之惑
0
936
凳舒
2025-06-09
业界
Objective-C之Class底层结构探索
0
155
抽厉
2025-06-09
安全
你必须学UML之理论篇
0
733
郜庄静
2025-07-19
安全
【UML分析、建模与设计】我在工作时遇到UML
0
778
蓬森莉
2025-07-28
业界
图表控件Aspose.Diagram教程:使用 Java 读取 Visio 形状数据
0
145
裆趾针
2025-08-04
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
琉艺戕
2025-6-3 00:17:02
关注
0
粉丝关注
16
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
杭环
9988
凶契帽
9988
4
氛疵
9988
5
黎瑞芝
9988
6
猷咎
9986
7
里豳朝
9986
8
肿圬后
9986
9
蝓俟佐
9984
10
虽裘侪
9984
查看更多