设计模式前篇——对象关系及UML类图符号

本文详细介绍了UML中各类关系的概念及应用,包括依赖、泛化、实现、关联、聚合与组合等,并通过示例代码阐述了这些概念的具体表现形式。

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

1、综述类之间的关系:

UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition)等。


2.关系简述:

依赖:一个类A中的某个方法参数为另一个类B,则认为A 依赖B

泛化:类的继承关系  , A extends B 

实现:实现类和接口关系,A implements B

关联:一个类作为另一个类的属性而存在  A: - b:B ( 表示private B b;)

      单向关联:

      双向关联:两个类互为对方的属性

      自关联:一个类的属性为其自身,比如常见的 单例模式的 单例属性,比如 链表数据结构

      多重关联:一个类中包含另一个类的集合属性

组合:关联关系的一种,强关联关系,即拥有关系,不能单独存在,比如 人和头颈躯干肢体的关系,创建人的同时,必须同时创建 头颈躯干和四肢,生命周期 同生共死

聚合:关联关系的一种,弱关联关系,即包含关系,部分可单独存在, 比如汽车和 引擎的关系,引擎engine 实例可以在其他地方被new出来,作为汽车的构造器或者方法参数


多重关联关系:

表示方式
多重性说明
1..1
表示另一个类的一个对象只与该类的一个对象有关系
0..*
表示另一个类的一个对象与该类的零个或多个对象有关系
1..*
表示另一个类的一个对象与该类的一个或多个对象有关系
0..1
表示另一个类的一个对象没有或只与该类的一个对象有关系
m..n
表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)

例如:一个界面(Form)可以拥有零个或多个按钮(Button),但是一个按钮只能属于一个界面,因此,一个Form类的对象可以与零个或多个Button类的对象相关联,但一个Button类的对象只能与一个Form类的对象关联,如图所示:



 

聚合关系示例:

public  class  Car {
     private  Engine engine;
     //构造注入
     public  Car(Engine engine) {
         this .engine = engine;
     }
 
     //设值注入
public  void  setEngine(Engine engine) {
     this .engine = engine;
}
……
}
public  class  Engine {
     ……
}

 

组合关系示例:

public  class  Person{
     private  Head head;
     private  Neck neck;
     private  Body body;
     private  List<Limbs> limbsList;
     
     public  Person(){
         head =  new  Head();
         neck =  new  Neck();
         body =  new  Body();
         limbsList =  new  ArrayList<>;
     }
}

 

3.UML类图综合关系





参考:
UML边看边记 之 类与类之间的关系

UML类图符号以及各种关系

《大话设计模式》





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值