UML 统一建模语言

01 概述

  • 建模原则
    (1)选择建立什么样的模型对如何发现和解决问题具有重要的影响;
    (2)每个模型可以有多种表达式,使用者的身份和使用的原因是评判模型好坏的关键;
    (3)最好的模型总能够切合实际。
  • 软件建模的实现过程:软件建模的作用是把源于现实世界的问题转化为计算机可以理解和实现的过程。
  • 本文所用软件:StarUML,所有关系图片都是该软件所绘。

02 UML

  • UML(United Modeling Language)统一建模语言,是一种基于面向对象的可视化建模语言;
    UML采用了一组形象化的图形(如类图)符号作为建模语言,使用这些符号可以形象地描述系统的各个方面;
    UML通过建立图形之间的各种关系(如类与类之间的关系)来描述模型;
  • 一共有10种图
    类图、包图、组件图、部署图、用例图、时序图、协作图、状态图、活动图
  • UML中的关系
    主要包括4种:
    (1)关联关系association
    (2)依赖关系dependency
    (3)泛化关系generalization
    (4)实现关系realization

03 用例图

  • 用例图也称为用户模型图,是从软件需求分析到最终实现的第一步,它是从客户的角度来描述系统功能;

  • 用例图包含3个基本组件:
    参与者 Actor:使用该系统的人或事物(其它系统),使用人形图表示;
    用例 Use Case:代表系统的某项完整的功能,使用椭圆来表示;
    关系:定义用例之间的关系——泛化关系、拓展关系、包含关系;
    例如下图中,(用例图是站在客户角度描述系统功能)客户只能使用query功能,管理员可以使用所有功能;
    在这里插入图片描述

  • 用例之间的关系
    (1)泛化关系:表示同一业务目的(父用例)的不同技术实现(各个子用例)
    泛化关系用一条实线空心箭头 ,从子用例指向父用例;
    例如下图是某购物网站为用户提供不同的支付方式的一个关系,可以看到泛化关系是从子用例指向父用例的一个关系,并且下图中有两处泛化关系。
    在这里插入图片描述(2)包含关系:一个用例可以包含其它用例具有的行为,并将它包含的用例行为作为自身行为的一部分
    包含关系用一条虚线箭头加<< include>>,箭头指向被包含的用例
    例如下图无论是添加、修改还是删除,每一次操作都要更新数据库,所以都有一个包含的关系。
    在这里插入图片描述
    (3)扩展关系:在完成某个功能的时候会偶尔执行另外一个功能
    扩展关系用一条虚线箭头加<< extend>>,箭头指向被扩展的用例
    在这里插入图片描述

04 类图

  • 类图是面向对象系统建模中最常用的图,是定义其它图的基础;
    类图主要是用来显示系统中的类、接口以及它们之间的关系;
    类图主要包含的元素:类、接口和关系,其中有泛化关系、关联关系、依赖关系和实现关系;
    在类图中也可以包含注释和约束;
  • 下图表示是个Person类,该类有两个成员属性name和age,均为private权限(-号表示private权限),有两个成员方法getName()和getAge(),权限均为public;

在这里插入图片描述

  • 类与类之间的关系
    (1)泛化关系:表示类与类、接口与接口之间的继承关系
    泛化关系用一条实线空心箭头 ,从子类指向父类;
    例如下图中cat和dog是animal的子类,animal不是抽象类;
    在这里插入图片描述
    (2)实现关系:表示类与接口之间的实现关系
    实现关系用一条虚线空心箭头 ,从子类指向父类;
    例如下图分享类是一个抽象类,下面三个类都是对分享类的具体实现;
    在这里插入图片描述
    (3)依赖关系: 对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系;
    依赖关系用一条虚线箭头 ,类B作为参数被类A在某个成员方法中使用
    注意:依赖关系时非常弱的一种关系,具有偶然性、临时性,但类B的变化会影响到类A;
    例如下图手机电池和充电器之间,两者相对独立,而且手机电池通过充电器充电;类B作为参数被类A在charge()中使用,就是作为一个参数传进来,但是不属于类A;
    在这里插入图片描述
    (4)关联关系: 对于两个相对独立的系统,当一个系统中的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系;关联关系可以说是一种强依赖关系,但不存在依赖关系的偶然性、临时性,是一种长期性的关系;
    关联关系用一条实线箭头,可以是单向的,也可以是双向的;
    被关联类B以类的属性形式出现在关联类A中,或者是关联类A引用了一个类型为被关联类B的全局变量
    例如下图Car以类的属性出现在Person中;
    在这里插入图片描述
    关联关系的名称: 关联关系可以有一个名称,用于描述该关系的性质,此关联名称应该是动词短语,因为它表明源对象上执行动作(如上图);
    关联关系的角色: 角色就是关联关系中一个类对另一个类所表现的指责,一般书名词(如下图);
    在这里插入图片描述
    关联关系的多重性: 多重性是指有多少对象可以参与该关联,可以用来表达一个取值范围、特定值、无限定范围的值;例如下图中,人可以用于1到n量车,车可以被1个人所有;
    在这里插入图片描述
    (5)聚合关系: 是关联关系的一种,是更强的关联关系;聚合是整体和部分的关系,例如汽车由引擎、轮胎以及其它零件组成;聚合关系也是通过成员变量来实现的,但是,聚合关系中两个类不处于一个层次上,一个代表整体,一个代表部分;并且,整体与部分之间是可分离的,它们可以具有各自的生命周期,比如汽车和轮胎;
    聚合关系用一条实线空心菱形,由部分指向整体
    在这里插入图片描述
    (6)组合关系: 也是关联关系的一种,是比聚合关系还要强的关系,所以也称为强聚合;代表整体的对象负责部分对象的生命周期;它同样体现整体与部分的关系,但此时整体与部分是不可分的;整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑;
    组合关系用一条实线实心菱形,从部分指向整体;
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值