UML2.0类关系基本概念与StarUML2操作

本文介绍了UML2.0中的类关系,包括依赖、类属(继承)、关联、聚合、组合和实现等。详细解释了这些关系的概念、特点和在编程中的体现,以及如何在StarUML2中操作绘制这些关系。此外,还讨论了关联关系的修饰,如名字、角色、阶元和聚合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类很少独立存在,类之间彼此协作。为系统建模的时候,既要从问题域抽离出对象,还要描述他们的关系。

有依赖、类属、关联(聚合、组合)、实现四种关系。

转载请注明原文地址:http://blog.youkuaiyun.com/ts_dchs/article/details/50740248

1 依赖关系 - Dependency

Dependency Relationship
一个元素的变化会引起另一个的变化。(被依赖的元素Target变化会引起依赖元素Source的变化)
依赖关系还可以再细分为5种类型:

  • 绑定(Binding)依赖
  • 实现(Realization)依赖
  • 使用(Usage)依赖
  • 抽象(Abstraction)依赖
  • 授权(Permission)依赖

虚线,括号尖,依赖指向被依赖:
依赖

2 类属关系 - Generalization (继承关系)

共同特性的元素抽象成类,通过增加内涵进一步细分。
对应的是基本元素(父类)与特殊元素(子类)的关系,
这就是多态(Polymorphism)的特性——++同一操作,用于不同对象,效果不同++。这个实现源于子类的方法可以覆盖父类的方法。

如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。

编码:父类extends子类

实线,三角空心箭头,子类指向父类:
继承

3 关联关系 - Association

两个类之间存在的某种语义的联系,一种弱联系。关联本身是松散的,因为某个场景联系在一起。不过拆开可以独立存在。

编码:成员变量存有对别的对象的引用。声明之后用构造函数或者成员方法赋值。
实线,可以没有箭头。

关联

关联关系可以用四种基本修饰:名字(Name),角色(Role),阶元(Multiplicity),聚合(Agrregation)。

4 聚合关系 - Agrregation

是一种特殊的关联关系。他们之间的联系是整体、部分的关系。整体对部分是依赖的。
是概念上的关系,没有联系整体与部分的生命周期。
一个部分可以被多个整体共享。比如一个墙和两个房间。

编码:关联和聚合在语法没法区分,只能从语义区分。

实线,菱形空心:
聚合

5 组合关系 - Composition

组合是聚合的变种,加强了整体与部分有一致的生命周期。
部分不能共享,整体负责Parts的创建和破坏。整体销毁,部分也销毁。

编码:类中的(私有)成员类。在产生对象的时候一起产生。用构造函数自己new出来。

实线,菱形实心

典型例子是一个窗体:
组合

6 实现关系 - Realize

常被用于接口和实现接口的类的关系。
接口是操作的集合,实现了定义和实现的分离。

编码:Java中声明interface,再类声明implements

软件中是用圆圈代表interface,而且上述线型会转化为如图的线
实现

虚线,空心三角
实现-旧
这可以通过右键Icon形式的Interface通过修改Format来自动实现decoration或者label的添加。不用认为方式添加。

7 关联关系的修饰

四种:

  • 名字(Name)
  • 角色(Role)
  • 阶元(Multiplicity)
  • 聚合(Agrregation)。

Role:关系中的类,扮演的角色。
在starUML2:在属性的end.name的位置设置。加号是自动带的,代表public,减号private。
Role

Multiplicity:多少个对象参与关联。类似ER图中的数量关系
编码:用一个list做参数?
StarUML2:可以双击name来选择,也可以填写end.multiplicity属性。

阶元

有时候,关联本身带有一些信息,不能与二者之间的任何一方合并,需要独立存在,那么就可以用Association Classes表示。
比如,雇佣关系的例子中,可以抽象出关联类-Job
编码:声明一个类代表关系,通过关系类建立两个类的联系。
StarUML2:Calss(Advanced)用Association Class链接一个class和一个关系。
关联类

如果有多个关联类,可以抽象出一个父类,大家集成之后在成为各自的关联类。

Navigation,导航:关联关系可以有方向。表明单方向,否则双向。
常见的单向关联有账号和密码,想让账号可以找到密码,但不希望密码找到账号。
编码:通过让账号(源)含有对密码(目标)的引用实现。
StarUML2:有单独的,Directed Association。
单向关联


notification
source: 资料源于网络。个人所学有限,若有错误和不足还请不吝赐教,我会及时更正。Terrence Zhou.
http://blog.youkuaiyun.com/ts_dchs
转载请注明原址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值