• 2. 设计模式-详解UML类图


    2.UML

    目录

    2.UML

    2.1 UML基本介绍

    2.2 UML类图

    2.3 类图的表示方式

    2.4 类图-依赖关系(Dependence)

     2.5 类图-泛化关系(Generalization)

    2.6 类图-实现关系(Implementation)

     2.7 类图-关联关系(Association)

     2.8 类图-聚合关系(Aggregation)

     2.9 类图-组合关系(Composition)

     2.10 组合关系 VS 聚合关系

    相关文章索引

    后记


    2.1 UML基本介绍

    1. UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
    2. UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。

    画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:

    1. 用例图(use case)
    2. 静态结构图: 类图、对象图、包图、组件图、部署图
    3. 动态行为图:交互图(时序图与协作图)、状态图、活动图
    • 说明: 类图是描述类与类之间的关系的,是UML图中最核心的部分。

    2.2 UML类图

    1. 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。类图是面向对象建模的主要组成部分
    2. 类之间的关系: 依赖、泛化(继承)、实现、关联、聚合与组合

    2.3 类图的表示方式

    1)在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和address这3个属性,以及work()方法。

    2)属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:

    • +:表示public
    • -:表示private
    • #:表示protected

    3)属性的完整表示方式是: 可见性 属性名 :类型 [ = 缺省值 ]

    4)方法的完整表示方式是: 可见性 方法名(参数列表) [ :返回类型 ]

    • 也可以将类型放在变量名前面,返回值类型放在方法名前面

    示例

    上图Demo类定义了三个方法:

    • method()方法:修饰符为public,没有参数,没有返回值。
    • method1()方法:修饰符为private,没有参数,返回值类型为String。
    • method2()方法:修饰符为protected,接收两个参数,第一个参数类型为int,第二个参数类型为String,返回值类型是int。
    • method3()方法:权限修饰符为默认修饰符,返回值为void

    2.4 类图-依赖关系(Dependence)

    • 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了。
    • 在UML类图中,依赖关系使用带箭头的虚线来表示,箭头指向被依赖的类。

    依赖关系示例代码:

    public class PersonServiceBean {

            private PersonDao personDao;//类

            public void save(Person person){}

            public IDCard getIDCard(Integer personid){}

            public void modify() {

                    Department department = new Department();

            }

    }

    public class PersonDao{}

    public class IDCard{}

    public class Person{}

    public class Department{}

    以上代码对应的类图:

    总结

    • 类中用到了对方
    • 是类的成员属性
    • 是方法的返回类型
    • 是方法接收的参数类型
    • 方法中使用到
    • 以上都是依赖。

     2.5 类图-泛化关系(Generalization)

    1)泛化关系实际上就是继承关系,它是依赖关系的特例

    2)在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类

    泛化关系示例代码:

    public abstract class DaoSupport{

            public void save(Object entity){

            }

            public void delete(Object id){

            }

    }

    public class PersonServiceBean extends Daosupport{

    }

    以上代码对应类图:

    2.6 类图-实现关系(Implementation)

    1)实现关系是接口与实现类之间的关系,也是依赖关系的特例

    2)在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口

    实现关系示例代码:

    public interface PersonService {

            public void delete(Interger id);

    }

    public class PersonServiceBean implements PersonService {

            public void delete(Interger id){}

    }

    以上关系对应类图如下:

     2.7 类图-关联关系(Association

    1)关联关系是对象之间的一种引用关系用于表示一类对象与另一类对象之间的联系,是依赖关系的特例

    2)具有导航性:即双向关系或单向关系

    3)具有多重性。主要有以下几种形式:

    关联关系的多重性

    形式

    含义

    形式

    含义

    0

    恰为0

    1

    恰为1

    0..1

    0或1

    0..*

    任何数

    *

    任何数

    1..*

    1或更多

    • 单向一对一
    单向一对一关联关系示例代码

    public class Person {

            private IDCard card;

    }

    public class IDCard{}

    标单向一对一关联关系类图题
    •  双向一对一
    双向一对一关联关系示例代码

    public class Person {

            private IDCard card;

    }

    public class IDCard{

            private Person person

    }

    标题双向一对一关联关系类图

    双向关联关系用一个不带箭头的实线表示。

    • 自关联关系

    自关联关系示例代码

    public class Employee {

            private Integer id; // 主键id

            private Integer leader;  // 领导id

    }

    自关联关系类图标题

     2.8 类图-聚合关系(Aggregation)

    1)表示的是整体和部分的关系,整体与部分可以分开。

    2)聚合关系是关联关系的特例,所以他具有关联关系的导航性与多重性。

    3)在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体

    示例:如,一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的。

    聚合关系示例代码

    public Computer {

            private Mouse mouse;

            private Monitor monitor;

            public void setMouse(Mouse mouse) {

                    this.mouse = mouse;

            }

            public void setMonitor(Monitor monitor) {

                    this.monitor = monitor;

            }

    }

    聚合关系类图标题

     2.9 类图-组合关系(Composition)

    1)也是整体与部分的关系,但是整体与部分不可以分开。

    2)在UML类图中,组合关系用带实心菱形的实线来表示,菱形指向整体

    3)再看一个案例:在程序中我们定义实体,Person、IDCard和Head,那么Head和Person就是组合,IDCard和Person就是聚合。

    示例:Person与IDCard、Head, 那么 Head和Person就是组合,IDCard和Person就是聚合。但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除,那么IDCard 和 Person 就是组合了

    组合关系示例代码

    public class Person{

            private IDCard card;

            private Head head = new Head();

    }

    public class IDCard{}

    public class Head{}

    标组合关系类图题

     2.10 组合关系 VS 聚合关系

    1)组合关系是一种强关联关系,部分和整体具有同样的生命周期,即部分不能脱离整体单独存在,在整体消亡后,部分也会随之消亡。比如人和器官就是组合关系;国和家的关系也是组合关系,国没有了家也就没有了。

    2)聚合关系是一种弱关联关系,部分和整体并没有相同的生命周期,整体消亡后部分可以独立存在。比如汽车(整体)与轮胎或发动机(部分)的关系,轮胎或发动机都可以脱离汽车而独立存在;再比如公司和员工的关系。

    3)一般来说,组合关系中,被组合的对象是在组合对象创建的时候创建的,如上述组合关系代码中所看到的一样。

    4)组合对象和被组合对象是一对一的关联关系;聚合关系则不同,被聚合的对象可以属于多个聚合对象,例如一个员工可以属于多个公司(全职和兼职)

    相关文章索引

    设计模式概述

    后记

    我水平有限,错误难免,还望各位加以指正。


    本文内容到此结束,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连丫(点赞、收藏、关注)

  • 相关阅读:
    给定一个整数数组 nums 和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
    windows cmd设置代理
    渐变圆角边框css
    一.无人车导航:CMU团队开源自主导航和规划算法框架
    离职单干后才明白怎么做好外贸
    mysql8.0修改用户密码
    leetcode 944. 删列造序
    CAP定理
    嵌入式C 语言中的三块技术难点
    vue3介绍
  • 原文地址:https://blog.csdn.net/weixin_43113381/article/details/127545363