美文网首页
对UML类图的关系和图形的认识

对UML类图的关系和图形的认识

作者: 仁昌居士 | 来源:发表于2017-07-14 11:03 被阅读0次
    有御姐儿看不懂UML类图和不会画一个UML类图。居士我今天来稍微讲解一下。
    
    Paste_Image.png
    UML类图的基本图示法
    首先,看到一个UML类图,第一个反应就是一堆框,这些框意味着什么呢?有java基础的即时不懂UML类图应该也能猜出八九。不错,就是**类和接口**。
    先来看类(Class),类图有三层,第一层为类名,用粗体表示,其中,对于抽象类而言,是用斜粗体显示(抽象方法也是斜体哦)。
    
    实体类
    public abstract class 动物 {
    public String 羽毛 ="白羽毛";
        public boolean 有角质X没有牙齿= true;
    
        public void 下蛋() {
                ...
        }
    }
    
    抽象类
    public abstract class 动物 {
        public boolean 有生命 = true;
    
        public void 新陈代谢(氧气 oxygen,水 water) {
                ...
        }
    }
    
    第二层是类的特性,也就是字段和属性。
    第三层是类的操作,也就是方法。
    注意事项:**"+"表示public,"-"表示private,"#"表示protected**
    **接口**
    
    接口
    public interface 飞翔{
        void 飞();
    }
    
    接口大体样式与类图相似,但是,也有区别,主要是顶部有“《interface》”表示是接口,这个好懂的吧。
    

    同理,第一层是接口名称,第二层是接口的方法。
    注意事项:
    接口还有一种表示方式:

    棒棒糖表示法接口
    public interface 唐老鸭{
        void 讲话();
    }
    
    第二步讲类图之间、类与接口之间等等之间的关系线
    **继承**:用空心三角形+实线表示。
    
    继承
    public class  鸟 extends  动物 {
        ...
    }
    
    这个最好懂吧,鸟是动物的一种嘛。再讲个例子本居士(类)信的是佛,所以我也算是修佛者的一种(类)。
    **实现接口**:用空心三角形+虚线表示。
    
    实现接口
    public class  大雁  implements 飞翔{
        ...
    }
    
    正常的大雁当然都会飞喽。再讲个例子本居士(类)是佛家人,所以我当然会念经(接口)啦。
    **关联(association)**:用实线箭头表示
    
    关联

    企鹅和气候有关联,企鹅需要知道气候的变化。

    public class  企鹅{
       private 气候 climate;
    }
    
    再讲个例子本居士(类)礼佛也是分时间的,所以我当然要知道礼佛的农历时间了(类)啦。
    聚合和组合,是两种虽然都是拥有关系,但强度和性质不同。
    **聚合**:用空心菱形+实线箭头来表示。
    
    聚合

    聚合是一种弱性拥有关系,即雁群包含了许多的大雁,但是对于大雁这个实体类而言,他并不是雁群的一部分。是一种分散的聚集到一起。
    就像我是居士,是居士群体的一部分,但是世上居士那么多,我就是我,居士这个群体并不能代表我。

    public class  雁群{
       private List<大雁> wideGooseList = new ArrayList<>();
    }
    

    组合:用实心菱形+实线箭头来表示。

    组合

    组合是一种强性拥有关系,即,翅膀对于鸟来说是身体的一部分,对正常的鸟而言,翅膀不可割舍。
    注意:组合关系的两端,有“1”和“2”,这个叫做基数。表示了,一端的类可能有多个实例,比如:鸟有两只翅膀。如果有无数个实例,可用“n”来表示。关联和聚合关系两个也可以有基数。

    public class  鸟{
       private 翅膀  wing;
    public 鸟()
        {
            wing = new翅膀();
        }
    }
    
    也举个例子,就像本居士有头发,那么当我没头发了,那一定是我    死了,是的,一定是我死了。所以,我不是和尚啊。
    **依赖**:用虚线表示
    
    依赖

    动物想生存,需要依赖氧气和水。

    public abstrac class  动物{
    public 动物(氧气 oxygen,水 water)
        {
            ...
        }
    }
    
    是不是,觉得我的解释有个毛用,看起来感觉好像每个都能互相套用。所以,还不如看着上面对应的代码的写法来理解。有时候代码确实还是比文字描述更好理解。

    相关文章

      网友评论

          本文标题:对UML类图的关系和图形的认识

          本文链接:https://www.haomeiwen.com/subject/soknhxtx.html