UML对象图和类图关系解析

本文介绍了UML类图和对象图之间的六种关系,包括依赖、泛化、关联、聚合、组合及实现关系,并详细解释了每种关系的特点及表示方式。
部署运行你感兴趣的模型镜像

UML共有九种视图,它们之间各有自己的特点和作用,它们之间有什么联系吗,这里就向大家介绍一下UML对象图和UML类之间的联系,希望通过本文的学习你对UML的图形之间的关系有一定的认识。

本节向大家介绍一下UML图中UML类图和UML对象图的关系,主要有依赖关系,实现关系和泛化关系等,相信通过本节的介绍你对UML图中图形之间的关系有一定的了解。

UML类图和UML对象图(对象是类的实例,那么对象图就是类图的一个实例,类图类名下面无下划线,而对象图是有的):

一、依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。

依赖关系有如下三种情况:

1、A类是B类的一个成员变量;

2、A类是B类方法当中的一个参数;

3、A类向B类发送消息,从而影响B类发生变化;

使用带箭头的虚线表示

 

二、泛化关系(Generalization):UML对象图和类图的泛化关系A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)

在UML当中,对泛化关系有三个要求:

1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;

2、子类中除了与父类一致的信息以外,还包括额外的信息;

3、可以使用父类的实例的地方,也可以使用子类的实例;

使用带空心三角形的实线表示

三、关联关系(Association):类之间的联系,如篮球队员与球队之间的关联(下图所示)。其中,关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)。

在关联中有一种叫“限定关联”,还有一种谓之自身关联。另外,对象之间的关联就没那么复杂,只是将类的关联实例化而已。

使用带数字的实线表示

四、聚合关系(Aggregation):UML对象图和类图的聚合关系表示的是整体和部分的关系,整体与部分可以分开

如:电话机包括一个话筒

电脑包括键盘、显示器,一台电脑可以和多个键盘、多个显示器搭配,确定键盘和显示器是可以和主机分开的,主机可以选择其他的键盘、显示器组成电脑;

使用带空心菱形的实线来表示

五、组合关系(Composition):UML对象图和类图的组合关系也是整体与部分的关系,但是整体与部分不可以分开

如:公司和部门,部门是部分,公司是整体,公司A的财务部不可能和公司B的财务部对换,就是说,公司A不能和自己的财务部分开;人与人的心脏

使用带实心菱形的实线来表示

 

六、实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

使用带空心三角形的虚线表示

转载:http://developer.51cto.com/art/201006/205288.htm

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

### UML对象图的区别 #### 定义差异 对象图显示的是某一时刻一组对象及其之间的关系,可以看作是的一个具体实例[^1]。它主要关注特定时间点上对象的状态行为,通常用于测试阶段来展示某个时间段内的对象状态变化。而则专注于定义系统中的以及这些的内部结构相互间的关系[^3]。 #### 抽象层次的不同 - **抽象层面** 处于较高的抽象层面上,描绘了整个系统的静态架构设计,不涉及具体的运行时数据或动态交互情况;相比之下,对象图更贴近实际执行过程中的具体情况,反映了程序运行期间各实体间的联系状况[^2]。 - **表现形式** 在形化表示方面,两者也有显著差别。虽然二者都采用矩形框作为基本元素来分别代表或者对象,但是为了区分这两者,在绘制对象图的时候会在矩形左上方加上下划线标记以表明这是一个对象而非一般意义上的别概念。 #### 使用场景对比分析 | 特性/用途 | 对象图 | | |------------------|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------| | 主要作用 | 描述系统中某些瞬间的对象状态及其连接方式 | 展现软件体系的整体逻辑框架 | | 应用时机 | 测试验证、调试过程中查看当前内存布局 | 初期需求分析阶段建立模型 | | 是否体现实例 | 明确出每一个单独存在的个体 | 提供通用模板导开发人员创建相应型的变量 | ```python class Person: def __init__(self, name): self.name = name person_obj = Person('Alice') print(person_obj.__dict__) # 输出 {'name': 'Alice'} ``` 上述代码片段展示了如何通过`__dict__`属性获取Python对象的实际属性值集合,这似于我们在绘制作对象图时所关心的内容——即每个独立存在体的具体数值信息。 ### 结论总结 综上所述,尽管UML对象图同属统一建模语言(UML),但其侧重点各有千秋:前者聚焦于捕捉特定情境下的瞬态现象以便更好地理解复杂应用的行为模式;后者则是构建清晰有序的设计蓝从而促进团队协作并降低维护成本。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值