一张图看懂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 { //... }转载。 https://blog.****.net/luzhenyuxfcy/article/details/51273670