UML类图关系(继承,依赖,关联,聚合,组合)

最近一直再看设计之类的博客,但是一直搞不清楚聚合和组合的区别,于是查阅资料了2者之间的关系和区别,顺便回顾一下UML类图的所有关系。

  • 继承(Generalization):子类继承父类所有的特征和行为。
  • 依赖(Dependency):即使用关系,一个类的实现需要用到另一个类的方法、属性、字段等,尽量不要使两个类相互依赖。
  • 关联(Assocation):即拥有关系,一个类是另一个类的属性或者字段。
  • 聚合(Aggreation):是一种特殊的关联。整体与部分的关系,且部分可以脱离整体独立存在。
    Example:一个航空母舰战斗群拥有母舰、驱逐舰、护卫舰,缺少了母舰或者驱逐舰(护卫舰)也就没有所谓的航空母舰战斗群,但是母舰(驱逐舰、护卫舰)依然存在。

        public class Cvbg
        {
            public Carrier Carrier { get; set; }
            public List<Destroyer> Destroyers { get; set; }
            public List<Frigate> Firgate { get; set; }
    
            public Cvbg(Carrier carrier, List<Destroyer> destroyers, List<Frigate> firgate)
            {
                Carrier = carrier;
                Destroyers = destroyers;
                Firgate = firgate;
            }
        }


  • 组合(COmposition):也是关联的一种。整体与部分的关系,且部分不可以脱离整体独立存在。组合是比聚合关系还要强的存在,它要求部分对象的生命周期在整体对象的生命周期内。
    Example:鸟有一对翅膀,没有鸟,翅膀也就不存在了。

        public class Bird
        {
            private Wing _leftWing;
            private Wing _rightWing;
    
            public Bird()
            {
                this._leftWing = new LeftWing();
                this._rightWing = new RightWing();
            }
        }
    
        public class Wing
        {
            
        }
    
        public class LeftWing : Wing
        {
            
        }
    
        public class RightWing : Wing
        {
            
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值