UML中的关联

UML 中的关联
——学习笔记
xmlin

UML 中类与类, 类与接口, 接口与接口这间的关系有: 一般化关系, 关联关系( 关联, 聚合, 合成), 依赖关系.
一般化关系: 表示类与类之间的继承关系, 类与接口之间的实现关系, 接口与接口之间的继承关系.
java 中表现为extends implements
关联关系: 表示类与类之间的联接, 它使一个类知道另一个类的属性和方法.java 语言中关联关系是使用实例变量实现的.
关联可以使用单箭头表示单向关联, 使用双箭头或不使用箭头表示双向关联, 不建议使用双向关联. 关联有两个端点, 在每个端点可以有一个基数, 表示这个关联的类可以有几个实例.
常见的基数及含义:
0..1:01 个实例.
0..*: 对实例的数目没有限制.
1: 只能有一个实例.
1..*: 至少有一个实例.
聚合关系(aggregation): 关联关系中的一种, 是强的关联关系. 聚合是整体和个体之间的关系. 如汽车类与引擎类, 轮胎类.
聚合关系也是使用实例变量实现的.java 语法上是分不出关联和聚合的.
关联关系中两个类是处于相同的层次, 而聚合关系中两不类是处于不平等的层次, 一个表示整体, 一个表示部分.
合成关系(composition): 也是关联关系中的一种, 比聚合更强的的关联关系. 它要求代表整体的对象要负责代表部分的对象的生命周期. 即代表整体的对象要负责代表部分的对象的存活.
合成关系不能共享.
如人对象和四肢对象就是合成关系.
依赖关系: 也是类与类之间的连接. 表示一个类依赖于另一个类的定义. 依赖关系总是单向的.
java. 依赖关系体现为: 局部变量, 方法中的参数, 和对静态方法的调用.

UML(Unified Modeling Language)图中的关联关系是一种结构关系,它描述了对象之间的连接。以下是关联关系的详细介绍: ### 基本概念 关联关系表示两个或多个类的实例之间存在的某种语义上的联系,它体现了对象之间的交互和协作。例如,教师和学生之间存在教学关联,汽车和司机之间存在驾驶关联。 ### 关联的类型 - **二元关联**:最常见的关联类型,涉及两个类。例如,“学生”类和“课程”类之间的选课关联。在UML图中,用一条直线连接两个类来表示二元关联,直线两端可以标注关联的名称、角色名、多重性等信息。 ```plantuml @startuml class Student class Course Student -- Course : 选课 @enduml ``` - **多元关联**:涉及三个或更多类的关联。多元关联用菱形表示,菱形通过直线连接到各个关联类。例如,“教师”、“学生”和“课程”之间的教学关联,一个教师在某门课程上教授多个学生。 ```plantuml @startuml class Teacher class Student class Course Teacher -- (教学) Student -- (教学) Course -- (教学) @enduml ``` - **自关联**:一个类与自身的关联。例如,“员工”类中,一个员工可能是另一个员工的上级,这就是一种自关联。在UML图中,用一条带有角色名的直线连接该类的两个端点。 ```plantuml @startuml class Employee Employee -- Employee : 上级-下属 @enduml ``` ### 关联的属性 - **角色名**:用于描述参与关联的类在关联中所扮演的角色。例如,在“学生”和“课程”的关联中,学生的角色可以是“学习者”,课程的角色可以是“学习内容”。角色名标注在关联线的两端。 ```plantuml @startuml class Student class Course Student -- Course : 选课 Student : 学习者 Course : 学习内容 @enduml ``` - **多重性**:表示一个类的实例与另一个类的实例在关联中可以出现的数量关系。常见的多重性表示法有: - `0..1`:表示零个或一个实例。 - `1`:表示恰好一个实例。 - `0..*` 或 `*`:表示零个或多个实例。 - `1..*`:表示一个或多个实例。 - `n..m`:表示最少n个、最多m个实例。 例如,一个学生可以选多门课程(`0..*`),一门课程可以有多个学生选(`0..*`)。 ```plantuml @startuml class Student class Course Student "0..*" -- "0..*" Course : 选课 @enduml ``` - **关联类**:当关联本身需要有自己的属性、操作和关系时,可以使用关联类。关联类通过一条虚线与关联线相连。例如,在“学生”和“课程”的关联中,添加一个“选课记录”关联类,用于记录学生选课的成绩、时间等信息。 ```plantuml @startuml class Student class Course class EnrollmentRecord Student -- Course : 选课 Course -- EnrollmentRecord : 包含 Student -- EnrollmentRecord : 关联 @enduml ``` ### 关联的方向 - **双向关联**:默认情况下,关联是双向的,意味着两个类的实例都可以访问对方。在UML图中,双向关联用不带箭头的直线表示。 ```plantuml @startuml class ClassA class ClassB ClassA -- ClassB @enduml ``` - **单向关联**:表示一个类的实例可以访问另一个类的实例,但反之不行。在UML图中,单向关联用带箭头的直线表示,箭头指向被访问的类。 ```plantuml @startuml class ClassA class ClassB ClassA --> ClassB @enduml ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值