2024年Python最全UML类图与对应的代码归类总结【软件工程】

public class Node {

private Node subNode;

……

}


4️⃣多重性关联

✴️UML图演示:

在这里插入图片描述

以上是多重性关联的实例。多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示

【补充】多重性与UML表示方式的对应关系:

| UML表示方式 | 多重性 |

| — | — |

| 1…1 | 表示另一个类的一个对象只与该类的一个对象有关系 |

| 0…* | 表示另一个类的一个对象只与该类的零个或多个对象有关系 |

| 1…* | 表示另一个类的一个对象只与该类的一个或多个对象有关系 |

| 0…1 | 表示另一个类的一个对象没有或只与该类的一个对象有关系 |

| m…n | 表示另一个类的一个对象与该类最少m,最多n个对象有关系 |

✳️Java代码演示:

public class Form {

private Button[] buttons; //定义一个集合对象

……

}

public class Button {

}


III.聚合(Aggregation)关系


聚合(Aggregation)关系是关联关系的一种特例,体现的是整体与部分、拥有的关系,即has-a的关系。

此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、车和引擎的关系等。

✴️UML图演示:

在这里插入图片描述

以上是聚合关系的实例。在UML中,聚合关系用带空心菱形的直线表示 ,整体指向部分,空心菱形靠近整体

✳️Java代码演示:

public class Car {

private Engine engine;

public Car(Engine engine) { //构造注入

this.engine = engine;

}

public void setEngine(Engine engine) { //设值注入

this.engine = engine;

}

……

}

public class Engine {

……

}

表现在代码层面,和关联关系是一致的,只能从语义级别来区分。


IV.组合(Composition)关系


组合(Composition)关系也是关联关系的一种特例,体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合

同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。比如你的头和你的嘴巴。

✴️UML图演示:

在这里插入图片描述

以上是组合关系的实例,在UML中,组合关系用带实心菱形的直线表示,整体指向部分,实心菱形靠近整体。

✳️Java代码演示:

public class Head {

private Mouth mouth;

public Head() {

mouth = new Mouth(); //实例化成员类

}

……

}

public class Mouth {

……

}

表现在代码层面,和关联关系是一致的,只能从语义级别来区分。


V.泛化(Generalization)关系


泛化(Generalization)关系是一种继承关系,用于描述父类与子类之间的关系,父类又称为基类或超类,子类又称为派生类是一种继承关系。

它表示一般与特殊的关系,指定了子类如何特化父类的所有特征和行为。例如:学生和老师是人类的一种,即有学生、老师的特性也有人类的共性。

✴️UML图演示:

在这里插入图片描述

以上是泛化关系的实例,在UML中,泛化关系用带空心三角形的直线来表示,箭头指向父类。

✳️Java代码演示:

//父类

public class Person {

protected String name;

protected int age;

public void move() {

……

}

public void say() {

……

}

}

//子类

public class Student extends Person {

private String studentNo;

public void study() {

……

}

}

在代码实现时,使用面向对象的继承机制来实现泛化关系,在Java语言中使用extends关键字。


VI.依赖(Dependency)关系


依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系,即一个类的实现需要另一个类的协助。

另外,在大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

✴️UML图演示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5LAfcupn-1640926985811)(C:\Users\大瞎蘸酱\AppData\Roaming\Typora\typora-user-images\image-20211231111958658.png)]

以上是依赖关系的实例,在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

✳️Java代码演示:

public class Driver {

public void drive(Car car)

{

car.move();

}

……

}

public class Car {

public void move() {

}

……

}

代码中体现为在Driver类中的drive方法内使用了Car类的对象。


VII.实现(Realization)关系


实现(Realization)关系是一种类与接口的关系,表示类是接口所有特征和行为的实现。在这种关系中,类实现了接口,类中的操作实现了接口中声明的操作。

✴️UML图演示:

在这里插入图片描述

以上是实现关系的实例,在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示,三角箭头指向接口。

✳️Java代码演示:

public interface Vehicle {

public void move();

}

public class Ship implements Vehicle {

public void move() {

……

}

}

public class Car implements Vehicle {

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值