UML中类之间的六大关系

理解六大关系中在代码中的体现,就可以轻松的阅读设计模式

一、泛化关系(Generalization)

       说明:这种关系就是面向对象语言中的继承关系,逻辑上可以用"is a"表示。

       代码体现:子类继承父类。

       UML符号:一条实线+空心箭头。

       图示:

               

二、实现关系(Realization

       说明:和泛化关系相似,逻辑上也是用"is a"表示。区别在于实现关系继承一个抽象类(abstract、interface),

                  而泛化关系继承一个具体类。 

       代码体现:实现接口或继承某个抽象类。

       UML符号:一条虚线+空心箭头。

       图示:

                

三、组合关系(Composition

       说明:是整体与部分的关系,但部分不能脱离整体而独立存在。逻辑上能用"has a"表示。

       代码体现:成员变量。

       UML符号:一条实线+实心菱形。

       图示:

                

四、聚合关系(Aggregation

       说明:是整体与部分的关系,部分能脱离整体而独立存在。逻辑上能用"has a"表示。

       代码体现:成员变量

       UML符号:一条实线+空心菱形

       图示:

                        

五、关联关系(Association

       说明:是整体与部分的关系。逻辑上能用"has a"表示。

       代码体现:成员变量。

       UML符号:双向关联,一条实线或一条实线+两个箭头;单向关联,一条实线+一个箭头。

       图示:

               

        

       自身关联:在单例模式中可以看到。

         

        关联的多元性图示:

              

六、依赖关系(Dependency

       说明:是一种使用关系,即一个类的实现需要另一个类的协助。逻辑上能用"use a"表示。

                  尽量不要使用双向依赖。

       代码体现:局部变量、方法的参数和静态方法的调用。

       UML符号:一条虚线+箭头。

       图示:                            

 七、总结:

        1.六种关系的耦合度大小是:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

        2.泛化和实现体现了逻辑上的"is a"的关系,组合、聚合和关联体现了逻辑上的"has a"的关系,

           “依赖”体现了逻辑上的"use a"的关系。

        3.写这篇博客的目的是为学习设计模式和阅读开源框架的源码打基础。

### 绘制UML关系图的方法 在UML中,关系图是一种重要的表达方式,它通过图形化的方式描述系统的结构和行为。以下是关于如何绘制UML关系图的一些指导: #### 使用工具支持 Visual Paradigm 是一种强大的 UML 建模工具,能够帮助用户轻松创建各种型的 UML 图形[^2]。对于初学者来说,这款工具提供了直观的界面以及详细的教程文档来引导用户完成绘图过程。 #### 创建具体图表实例 以活动图为例子,在启动 Visual Paradigm 后可以通过新建项目并选择相应的模板来进行操作。当需要定义一个新的活动图时,按照提示输入名称比如 `Activity Diagram Tutorial` 并确认即可获得空白画布开始构建自己的逻辑流程[^3]。 #### 关于约束的应用 如果涉及到复杂场景下的条件判断或者特定规则设定,则可以利用UML中的约束机制。需要注意的是,在不同的版本间可能存在差异;例如从UML 1.x升级至2.0后,约束不再局限于单条消息之上而是有了更灵活的表现形式[^1]。 ```java // 示例代码展示简单的之间关联关系 public class Student { private String name; public void enrollCourse(Course course){ System.out.println(name+" has enrolled into "+course.getName()); } } public class Course{ private String name; public String getName(){ return this.name; } } ``` 上述Java伪代码展示了两个实体Class之间的基本连接模式,这正是我们在制作UML图时候所要捕捉的内容之一。 ---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值