您的位置:首页 > 其它

一张图看懂UML类图

2016-04-28 13:46 357 查看
面向对象中我们经常使用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 {
//...
}


【欢迎上码】
【微信公众号搜索 h2o2s2】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UML类图