一张图看懂UML类图

面向对象中我们经常使用UML类图演示类之间的关系,记得以前在学《软件工程》的时候那几个符号硬是没记住,今天回过头看看,理一理,见下图:

------------------------------------------------------------------ 我是分割线 ------------------------------------------------------------

类(Class),如果是抽象类则为斜体,第一行表示类名,第二行:属性/字段,第三行:方法/行为;“+”代表:public,“#”代表:protect,“-”代表:private;代码表现为:

public class A {
    private int age;
    private String name;
    
    private void play(){
        System.out.print("我会玩");
    }
}

public abstract class Animals {
    private int lifeCycle;
    public abstract Life metabolism (O2 o2, H2O h2o);
}

接口(interface),标签是“《interface》”  +  接口名,第三行:属性/字段,第四行:接口方法,代码显示如下:

public interface SpeakLikeHuman {
    boolean alive = true;
    void speak();
}

------------------------------------------------------------------ 我是分割线 ------------------------------------------------------------

这些概念东西不赘述了,百度一下。

继承关系

关系示意图:

代码表示如下:

public abstract class Bird extends Animals {
    private Feather feather;//羽毛
    private Tooth tooth;//牙齿

    @Override
    public Life metabolism(O2 o2, H2O h2o) {
        return new Life();
    }

    public abstract Egg DownEgg ();
}

public class Duck extends Bird {
    protected void Swiming(){
        System.out.print("鸭子在游泳...");
    }

    @Override
    public Egg DownEgg() {
        return null;
    }
}

实现接口

关系示意图:

代码表示如下:

public class DuckTang extends Duck implements SpeakLikeHuman {

    @Override
    public Egg DownEgg() {
        return null;//唐老鸭是男的,不会下蛋,重写下蛋方法
    }

    protected void Swiming() {
        System.out.print("鸭子在游泳...啪啪啪");
    }

    @Override
    public void speak() {
        System.out.print("我是唐老鸭...嘎嘎~");
    }
}

关联关系

关系示意图:" ... has a ..."

代码表示如下:

public class Penguin extends Bird {//企鹅

    private Climate climate;//关联关系,包含别的类的引用,各自不影响生命周期

    private void Swiming() {
        System.out.print("我企鹅也会游泳~");
    }

    @Override
    public Egg DownEgg() {
        if (new Climate().isVeryCold)
        return new Egg("企鹅蛋");
        return new Egg("蛋碎一地");
    }

}

public class Climate {
    private boolean isVeryCold;

    public boolean isVeryCold() {
        return isVeryCold;
    }
}

public class Egg {
    Egg(String name) {

    }
}

聚合关系

关系示意图:" ... owns a ..."
代码表示如下:
 
 
public class WildGoose extends Bird { @Override  public Egg DownEgg() { return new Egg("大雁蛋");  } private void fly() { System.out.print("大雁--我飞咯~~");  } } public class WildGooses { private ArrayList<WildGoose> gooses = new ArrayList<WildGoose>();//雁群由大雁聚合而成   private void V_Fly() { //...  } private void _Fly() { //...  } }

组合(泛化)关系

关系示意图:" ... is a part of  ..."
代码表示如下:
public abstract class Bird extends Animals {
    private Feather feather;//羽毛,是鸟的一部分
    private Tooth tooth;//牙齿

    @Override
    public Life metabolism(O2 o2, H2O h2o) {//生命依赖于O2 + H2O,作为参数他们的改变影响另外一个类的活动
        return new Life();
    }

    public abstract Egg DownEgg ();
}

public class Feather {
    //...
}
public class Tooth {
    //...
}

依赖关系

关系示意图:" ... uses a ..."
代码表示如下:
public abstract class Bird extends Animals {
    private Feather feather;//羽毛
    private Tooth tooth;//牙齿

    @Override
    public Life metabolism(O2 o2, H2O h2o) {//生命依赖于O2 + H2O,作为参数他们的改变影响另外一个类的活动
        return new Life();
    }

    public abstract Egg DownEgg ();
}

public class O2 {
    //...
}
public class H2O {
    //...
}
public class Feather {
    //...
}
public class Tooth {
    //...
}
public class Life {
    //...
}

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值