UML| UML类图初识

本文要点

出于在学些设计模式时,我们会看到很多的书籍中都会画出UML类图,这里有必要就UML类图做一个简单的介绍以便在学习中能够更好的理解设计模式的思想.
这里我主要讲讲类图中各个类之间的关系.能看懂类图中各个类之间的线条,箭头代表什么意思后,也就足够应对日常的工作和交流.同时我们应该能将类图所表达的含义和最终的代码对应起来;有了这些知识学习设计模式结构图就会容易很多了.

建议画图工具: Enterprise Architect 9.2


UML简介

面向对象分析的历史统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。


UML类图

类图是软件工程的统一建模语言一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。
类图是面向对象式的建模。他们一般都被用于概念建模(conceptual modelling)的系统分类的应用程序,并可将模型建模转译成代码。

一个类有三个区域

  • 最上面是类名称
  • 中间部分包含类的属性
  • 底部部分包含类的方法

类的成员包括属性方法,关于成员钱的修饰符号解释如下(必须摆在各成员的名字之前):

	+	  公共
	- 	  私有
	# 	  保护(即对子类可见)
	~     包(即对包内其他成员可见)
	/     推导(即由其他属性推导得出,不需要直接给定其值)
	底线   静态

UML类图关系

关于UML类图中的关系主要用下图来讲解.

首先来说一下接口表示如下图有两种表示方法:


Java代码表示如下

public interface IFly {
    void fly();
}
public interface ILanguage {
    void speak();
}

1.继承关系

Java代码表示如下

public abstract class Animal {

}
public class Bird extends Animal {

}

2.实现接口

Java代码表示如下

public interface IFly {
    void fly();
}
public class Widegoose implements IFly {

    @Override
    public void fly() {

    }

}

3.关联关系

Java代码如下

public class Climate {

}
public class Penguin extends Bird {
    private Climate climate; // 在企鹅中引用气候对象(Penguin与Climate存在关联关系)
}

4.聚合关系

Java代码如下

public class Widegoose implements IFly {

    @Override
    public void fly() {

    }

}
public class WideGooseAggregate {
    private Widegoose[] widegooses; // 在大雁群类中有大雁数据对象(组合关系:大雁组成大雁群)
}

5.合成(组合)关系

连线两端的数据"1"和数字"2"别称为基数.表示的是这端的类的实例可以有几个实例.上图说明的是一只鸟应该有两只翅膀,如果一个类可能有无数个实例,则用"n"来表示,关联关系,聚合关系也可以有基数.

Java代码表示如下

public class Wing {

}
public class Bird extends Animal {
    private  Wing wing;

    /**
     * 鸟类初始化时会初始化翅膀,它们同时生成
     */
    public Bird() {
        wing = new Wing();
    }
}

6.依赖关系

Java代码表示如下

public abstract class Animal {

    /**
     * 新陈代谢
     *
     * @param oxygen
     * @param water
     */
    public void metabolism(Oxygen oxygen, Water water) {

    }

    /**
     * 氧气
     *
     * @author YvesHe
     *
     */
    public static class Oxygen {

    }

    /**
     * 水
     *
     * @author YvesHe
     *
     */
    public static class Water {

    }

}

参考链接

https://www.cnblogs.com/liuzhang/archive/2013/03/17/2964095.html
https://zh.wikipedia.org/wiki/類別圖
大话设计模式

你可能感兴趣的:(【UML】)