【UML】详解UML类图

目录

1.概述

2.权限

3.关系

3.1.连线关系

3.2.依赖

3.3.泛化(继承)

3.4.实现

3.5.关联

3.6.聚合

3.7.组合


1.概述

UML是什么?书面化一点的说法是:

UML(Unified Modeling Language),统一建模语言,是一种用于软件工程和系统设计的标准图形化建模语言。它旨在帮助开发人员、设计师和分析师在软件开发过程中更好地理解、设计、交流和文档化系统。UML提供了一组图形符号和规则,可以用于表示软件系统的各个方面,从需求分析到系统设计、实现和测试。

直白点说人话就是:

UML用图形和符号的方式来帮助描述软件系统,让人更加容易看懂整个系统是什么样子的。

正如我们知道的,软件系统是很庞大且复杂的一个东西,想要描述清楚,肯定不可能是一个维度就能描述的很准确,所以UML从几种维度,每个维度提出了一系列的图来用于描述软件系统,包括:

  1. 用例图
  2. 静态结构
    1. 类图
    2. 组件图
    3. 部署图
  3. 动态行为
    1. 状态图
    2. 活动图
    3. 时序图

以上的图在各类型的软件系统的规范化描述中用到的频率都很高,但是不一定都会用到,选取其中需要的图来描述清楚系统即可。这其中UML的类图,是最为常用的,因为描述类关系就是描述好实体间的关系,在当今面向对象的设计和编程为主的系统开发中,这是基础中的基础。本文将先讲UML类图,下一篇文章会一起讲其它的图。

UML类图总结起来就是,提供了一套图形和符号的标准,用来描述系统中各个类之间的关系,以及它们的属性和方法。

2.权限

UML类图中以符号的方式来描述访问权限,有以下权限:

权限 符号 说明
public + 公用的,该属性对所有类可见

protected

#

受保护的,对该类的子孙可见

private 

- 私有的,只对该类本身可见

package

~

包的,只对同一包声明的其他类可见

3.关系

3.1.连线关系

3.2.依赖

A类中使用到了B类,A和B就产生了依赖关系,下面以一个常见的service中调用dao为例:

public class UserServiceImpl{

    private UserDao userDao;

    public User queryById(int id) {return null;}
}

3.3.泛化(继承)

泛化其实指的是is a的关系,A is a B,A和B之间就是泛化关系,在面向对象的编程里,只有继承才能实现这种效果,所以泛化可以理解为就是继承。

public class BaseDao {
    protected void insert(User user){};
    protected void delete(User user){};
    protected void update(User user){};
    protected void query(User user){};
}
public class UserDao extends BaseDao{
    User queryById(int id){
        return null;
    }
}

3.4.实现

实现是继承的特例:

接口:

public interface UserService {
    User queryById(int id);
}

 实现类:

public class UserServiceImpl implements UserService{
    private UserDao userDao;

    @Override
    public User queryById(int id) {
        return userDao.queryById(id);
    }
}

3.5.关联

关联关系,即类与类之间的联系,是依赖关系的特例。

这就是一种关联关系:

 为什么说是依赖关系的特例喃,是因为要实现一个driver驾驶一辆car,那么肯定是要driver类持有一个car对象,也就是依赖一个car。其实关联关系也可以用依赖关系的箭头来替代,只是用关联关系表示,能将实体在业务上的关系描述的更清楚,所以到底是用依赖关系表示还是关联关系表示,这个具体情况具体抉择。

3.6.聚合

 聚合关系是依赖关系的特例,依赖之间可以分开,即被依赖的类和依赖它的类不同生共死,也就是说被依赖的类的实体需要从外界传入。

3.7.组合

组合关系是依赖关系的特例,依赖之间不可以分开,即被依赖的类和依赖它的类同生共死,也就是说被依赖的类的实体就在依赖它的实体内部生老病死,不需要从外界传入。

猜你喜欢

转载自blog.csdn.net/Joker_ZJN/article/details/132418191