一、类图的基本画法(摘自大话设计模式)

20180715183154765.jpg

首先,看动物矩形框,它代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。前面的符号,+ 表示 public,- 表示 private,# 表示 protected。

image-20201208194340325.png

右下角的飞翔,它表示一个接口图,与类图的区别主要是顶端的 <> 显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法。唐老鸭是能讲人话的鸭子,实现了讲人话的接口。

image-20201208194400821.png

接下来的是类与类,类与接口之间的关系了。首先注意动物、鸟、鸭、唐老鸭之间的关系符号。它们都是继承的关系,继承关系用空心三角形 + 实线来表示的。

image-20201208194419101.png

上述所列举的几种鸟中,大雁最能飞,让它实现了飞翔接口。实现接口用空心三角形 + 虚线来表示

image-20201208194529681.png

企鹅和气候两个类,企鹅是很特别的鸟,会游不会飞。更重要的是,它与气候有很大的关联。我们不去讨论为什么北极没有企鹅,为什么它们要每年长途跋涉。总之,企鹅需要知道气候的变化,需要了解气候规律。当一个类知道另一个类时,可以用关联(association)。关联关系用实线箭头来表示

image-20201208194545038.png

组合(Composition)是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。在这里鸟和其翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。组合关系用实心的菱形 + 实线箭头来表示。另外,你会注意到合成关系的连线两端还有一个数字 1 和数字 2,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就是 n 来表示。关系关系、聚合关系也可以有基数的。

image-20201208194604562.png

动物的几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示

image-20201208194623295.png

二、总结

  1. 继承关系: 用空心三角形 + 实线来表示 ; 举例:鸟、鸭与动物类是继承关系

    class Bird: Animal // 继承动物类
    {
        
    }
  2. 实现接口:实现接口用空心三角形 + 虚线来表示; 举例:大雁实现飞的接口

    class WideGoose: IFly   //实现飞翔接口
    {
        
    }
  3. 关联关系:关联关系用实线箭头来表示; 举例:企鹅与气候的关系,企鹅关注气候变化

    class Penguin : Bird
    {
        private Climate climate // 在企鹅中,引用到气候对象
    }
  4. 聚合关系:组合关系用空心的菱形 + 实线箭头来表示; 举例: 大雁与雁群

    class WideGooseAggregate
    {
        private WideGooese[]  arrayWideGoose; // 雁群中有大雁数组对象
    }
  5. 组合关系(生命周期一致,部分和整体的关系):组合关系用实心的菱形 + 实线箭头来表示; 举例: 鸟与翅膀

    class Bird
    {
        private Wing wing;
        public Bird()
        {
            wing = new Wing(); // 在鸟类中,初始化时,实例化翅膀,他们同时生成
        }
    }
  6. 依赖关系:依赖关系(Dependency),用虚线箭头来表示 ; 举例:动物依赖氧气、水以及食物

    abstract class Animal
    {
        public    Metabolism (Oxygen oxygen, Water water)
        {
            
        }
    }

参考资料: https://blog.csdn.net/u013870094/article/details/78826614

文章目录