UML设计系列(2):类图

目录

UML类图是什么

一个好的工具是好的开始

类的定义

类的关系

结束


UML类图是什么

看下网上的定义,个人觉得比较到位

在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心。建模工具也主要根据类图来产生代码。类图在UML的9个图中占据了一个相当重要的地位。James Rumbaugh对类的定义是:类是具有相似结构、行为和关系的一组对象的描述符。类是面向对象系统中最重要的构造块。类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类加上他们之间的关系就构成了类图,类图中还可以包含接口、包等元素,也可以包括对象、链等实例

以前写代码,大部分时候只关心实现,很少去建模设计,也不太了解UML。最近一年来,公司无论任何项目对这方面都有要求,必须有系分文档:系统依赖关系,领域模型,类图,用例图,数据库设计,时序图,流程图等。慢慢的有了一些了解

至此,先看看java的类图,这个其实对设计模式很有帮助

一个好的工具是好的开始

类图不仅是给开发看的:架构师,开发,测试,项目相关人员都有可能涉及。

推荐一个工具VP:Visual Paradigm

下载地址:最好的 UML,SysML 和 ERD 工具 [永久免费,立即下载]

类的定义

定义一个动物类:Animal

这里可以看到一个类的基本定义,第一格是名称:Animal,第二格是字段属性:size,color,第三格是方法:eat(),返回值是void。

其中的权限控制有3种:

  • public:对应+
  • protected:对应#
  • private:对应-号

类的关系

类图中非常重要的就是类之间的关系,否则几个孤独的类放在那里也没有什么作用。

类的关系:

  • 泛化(Generalization)
  • 实现(Realization)
  • 依赖(Dependence)
  • 关联(Association)
  • 聚合(Aggregation)
  • 组合(Composition)

泛化

泛化关系在JAVA中也叫作继承关系。比如Fish,Dog都继承自动物Animal

在UML中用空心三角形+实线表示,箭头指向被父类

实现

实现关系java中表现为接口的实现。比如动物都要呼吸,Dog用肺,Fish用腮

首先接口与类的定义的不同的是,用<<Interface>>表示;用三角箭头+虚线球,箭头指向接口

依赖

依赖关系是一种很弱的关系,一般是指一个类使用另一个类。比如狗拿耗子,猫不高兴,为获取其欢心,狗把耗子还给猫。这种是偶然发生的,两者之前没有关系,之后也不会有关系,只有在这个动作下才有关系。

在Dog中有一个方法payBack,为归还耗子,类似实现可能为如下

public class Dog extends Animal {

    private Cat cat;

    public Mouse payBack(Mouse mouse) {
        return cat.recive(mouse);
    }
}

用箭头+虚线表示,箭头指向被依赖对象

关联关系

关联关系是一种比较强的关系,他们的关系是比较持久的,稳定的。比如动物都要进食,狗吃狗粮

其中关联关系又可以分为单向关联与双向关联。上面是单向关联,狗知道狗粮,狗粮是不知道。

但是猫吃老鼠,双方都能感知对方,这个时候就是双向关联。

用实现连接

聚合

聚合关系是一种特殊的关联关系,聚合关系强调的是整体和部分的关系,其中部分可以脱离整体而存在。比如,几只狗组成一个单身狗群,这个群与每只狗的关系就是聚合。

聚合用实线+空心菱形表示,箭头指向整体

组合

组合关系也是一种特殊的关联关系,它与聚合关系很像,也是强调整体与部分的关系,不同的是部分无法脱离整体存在。

比如狗有腿,狗腿子是不能单独存在的。

用带实心的菱形直线表示,其中菱形指向整体

这几种关系到这里也就差不多了,其实会发现,依赖、关联、聚合、组合这几种关系强度是越来越强的:组合>聚合>关联>依赖

结束

通过上面的介绍,我们来看一下完整的类图

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值