当前位置:网站首页>UML类图五种关系的代码实现[通俗易懂]
UML类图五种关系的代码实现[通俗易懂]
2022-08-09 21:43:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
初次接触UML的时候,就对比过类图中的几种关系(UML——类图),当时侧重的是对这些关系的通俗理解,忽略了图和代码的对应关系。现在在软考中设计模式也是很重要的一部分,基本考点就是将UML图转化成代码实现,前两天听了王聚师哥的讲解,有一种茅塞顿开的感觉。
c#版UML类图中五大关系和代码的对应:
1.实现
实现通常描述的是类和接口的关系,一般都说什么类实现了什么接口。比如说下图中大雁类实现了飞翔接口。
代码实现:
//将图转换成代码:“类名:接口名”
class WideGoose: IFly
{
}2.继承
在UML图中,准确的说继承应该是泛化,我们都知道继承和泛化都表示的是子类的父类的关系,但是也有微弱的区别,只是看问题的角度不同,一般都是子类继承父类,父类泛化子类。比如说下图中动物和鸟的关系:鸟类继承了动物类,而动物类泛化出鸟类。
代码实现
//图和代码的对应关系:“子类:父类”
class Bird : Animal
{
}可以看出继承和实现在代码中都是通过“:”来表示,我们也很容易理解。
3.关联
我们都知道关联又可以分为聚合,组合,他们的主要区别体现在类和类之间关联的强度。首先从最简单的关联关系说起:
当一个类知道另一个类时,可以用关联关系。现在企鹅需要知道气候的变化,了解气候的变化规律。在图中我们用实线+箭头来表示,企鹅类和气候对象是一种一对一的关系,所以在代码中的体现为:在企鹅类中引用箭头指向的气候对象。
class Penguin
{
//在企鹅类中,引用气候对象。
private Climate climate;
}3.1 聚合
聚合表示了一种弱的拥有关系,一个雁群可以拥有多个大雁,所以在雁群类中,就需要引用大雁的数组对象。
class WideGooseAggregate
{
//在雁群类中,引用大雁数组对象
private WideGoose() arrayWideGoose;
}3.2 组合
组合是一种强的拥有关系,部分和整体必须同生死共存亡,也就是具有同样的生命周期。翅膀脱离了鸟不可能单独存在,鸟也不能没有翅膀。
class Bird
{
//1.在鸟类中引用翅膀对象
Private Wing wing;
//2.在鸟类的构造函数中,初始化鸟类的同时也要实例化翅膀,
//因为他们同时生成,也就是翅膀的变化会影响鸟的变化,
Public Bird( )
{
wing = new Wing( );
}
}对比关联,聚合和组合的代码实现过程:关联只需要引用一个单独的对象,而聚合需要引用一个数组对象,组合除了需要引用对象外,还需要在一个类中初始化箭头指向的类。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105722.html原文链接:https://javaforall.cn
边栏推荐
- Don't tell me to play, I'm taking the PMP exam: what you need to know about choosing an institution for the PMP exam
- CVPR22 Oral|通过多尺度token聚合分流自注意力,代码已开源
- Bean生命周期
- Tensorflow模型整体构建流程
- [Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]
- 哪款C语言编译器(IDE)适合初学者?
- hdu 1333 Smith Numbers(暴力思路)
- Problems with compiling SIP with QGIS
- Converting angles to radians
- 10个 Istio 流量管理 最常用的例子,你知道几个?
猜你喜欢

Synchronization lock synchronized traces the source

微软Excel表格点击单元格行和列都显示颜色怎么弄?聚光灯效果设置

Bean life cycle

STC8H开发(十五): GPIO驱动Ci24R1无线模块

微软word怎么转换成pdf文件?微软word转换为pdf格式的方法

《强化学习周刊》第57期:DL-DRL、FedDRL & Deep VULMAN

10个 Istio 流量管理 最常用的例子,你知道几个?

小黑leetcode清爽雨天之旅,刚吃完宇飞牛肉面、麻辣烫和啤酒:112. 路径总和

Simple questions peek into mathematics

在VMware上安装win虚拟机
随机推荐
编译原理之文法
cadence中复制一部分PCB到另一个PCB中去
Use convert_to_tensor in Tensorflow to specify the type of data
编程语言中,取余和取模的区别
TF generates uniformly distributed tensor
小黑leetcode之旅:94. 二叉树的中序遍历(补充Morris 中序遍历)
MySQL跨表、多表更新SQL语句总结
The overall construction process of the Tensorflow model
NIO Cup 2022 Nioke Summer Multi-School Training Camp 7 CFGJ
Install win virtual machine on VMware
The round functions in the np, ceil function and floor function
kvm虚拟机出现启动不了,NOT available,PV大于分区
SQLi-LABS Page-2 (Adv Injections)
The kvm virtual machine cannot be started, NOT available, and the PV is larger than the partition
线段相交的应用
Synchronization lock synchronized traces the source
论文解读(DropEdge)《DropEdge: Towards Deep Graph Convolutional Networks on Node Classification》
FET Mosfet Leiditech corresponds to Infineon Infineon
Interpretation of the paper (DropEdge) "DropEdge: Towards Deep Graph Convolutional Networks on Node Classification"
AI识万物:从0搭建和部署手语识别系统