UML教程 - 类图

工作效率  

简介

面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出来,写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。现在它已经成为了软件行业的一部分了。UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。当你要做架构或者程序系统设计的时候掌握UML是必须的。

UML中有九种建模的图标,即:

  • 用例图
  • 类图
  • 对象图
  • 顺序图
  • 协作图
  • 状态图
  • 活动图
  • 组件图
  • 配置图

咱们这次重点讲述类图的使用。

file

类图

1、类的表示

file

首先看下‘人类’矩形框,它就代表一个类(Class),类图分三层:

  • 第一层:表示类的名称,如果是抽象类,则就用斜体显示
  • 第二层是类的特性,通常就是字段和属性
  • 第三层是类的操作,通常是方法和行为

注意:‘+’表示public,‘-’表示private,‘#’表示protected。

2、接口的表示

file

file

注意看上图中接口相关的图,于类图的区别在于顶端有<<interface>>显示。第一行是接口名称,第二行是接口方法,接口还有另一种表示方法,俗称棒棒糖表示法。

3、继承关系的表示

类与类,类与接口之间的关系,关注下人类,男人,少年,小李之间的关系符号。

继承关系空心三角形+实线表示。 实线接口空心三角形+虚线来表示

file

// 继承人类class
class Man extends Human
{
}
// 实现排泄接口
class Ephebe implements excrete
{
}

3、关联关系的表示

file

老人和年龄是有很大的关联,判断一个人是否老人,需要知道它的年龄,当一个类需要‘知道’另一个类时,可以使用关联(association)。关联关系实线箭头表示

// 在老人类里引用到age对象
class Oldman extends Man
{
    private module = new Age;
}

4、聚合关系表示

file

我们再来看看工人群众和男青年这两个类,工人群众是一个群体并且包含多个男青年,所以他们其实是满足聚合(Aggregation)关系。聚合表示一种弱的‘拥有’关系,体现是A对象可以包含B对象,但是B对象不是A对象的一部分【DPE】聚合关系空心的菱形+实线箭头表示。

//在工人群众中 有存男青年对象的数组
class Workers
{
    private module[] = ephebe::work;
}

5、合成(组合)关系表示

file

这是表示一种强的‘拥有关系’,体现了严格部分整体的关系,部分和整体的生命周期是一样【DPE】,没什么好说的,这里男人和jj就是合成(组合)关系,因为他们是部分和整体的关系,并且jj和男人生命周期是相同的。组合关系实心的菱形+实线箭头表示。
注意这里还有数字‘1’和‘2’这个被称为基数,表明这一端的类可以有几个实例,很明显一个男人应该有2个jj,哦哦 搞错了是一个,大家注意哈,自行将2改成1哈,只能有一个,多了也没啥用。如果一个类可能有无数个实例则就用‘n’表示,哦对了,关联关系和聚合关系也是可以有基数的

// 在男人class中 构造方法里 实例化jj  它们是同事实例化生成的
class Man extends Human
{
    private jj;
    public function __construct()
    {
        $this->jj = new jj();
    }
}

6、依赖关系

file

人都是需要氧气和水的,人类和他们之间是一个依赖的关系(Dependency)用虚线箭头表示。

abstract class Human
{   
    public Metabolism(Oxygen oxygen,Water water){
    }
}

编程是一门技术,更是一门艺术。