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

来源:互联网 发布:wlan找不到网络 编辑:程序博客网 时间:2024/05/18 01:53

最近一直再看设计之类的博客,但是一直搞不清楚聚合和组合的区别,于是查阅资料了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    {            }


1 0
原创粉丝点击