zoukankan      html  css  js  c++  java
  • UML类图详解和示例

    ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/UMLDescription

    UML类图概述

    什么是UML类图

    要认识UML类图,要从UML是什么开始.UML(Unified Modeling Language)即统一建模语言,是用于系统可视化建模语言。它是国际统一软件建模标准,融合了OMT、OOSE、Booch方法中的建模语言。

    UML是一种可视化、可用于详细描述、文档化的语言。UML就像数学中的数字和加减符号一样,为所有软件开发的人员提供了一种图形化表达、标准化的语言。通过UML,软件开发人员可以准备的描述软件结构和建模,并通过UML建立整个系统架构和详细文档。

    UML类图正是UML建模元素中的一种。

    扩展
    
    UML2.0包括14种不同的图,非为表示系统静态结构的静态模型和表示系统动态结构的动态模型。
    
    静态模型:类图、对象图、包图、构件图、部署图、制品图
    
    动态模式:对象图、用例图、顺序图、通信图、定时图、状态图、活动图、交互概览图
    

    为什么要使用UML类图

    由于UML类图的精确、无歧义、完整的建模,通常,我们通过使用UML类图来详细的描述系统中的对象和他们的关系。认识UML类图也能帮助我们快速了解、理清系统中对象之间的关系。

    UML类图的组成

    UML是OO方法(面向对象设计分析方法)的核心。类图包含了:类和对象、类之间的关系、类之间的多重性。

    类和对象

    对象是描述客观世界中某个具体的实体,而类是对一类具有相同特征的对象的描述。对象是类的实例。在UML中类可表示为一个划分为三个格子的长方形,第一个格子包含类名,中间的格子包含类的属性,最后个格子包含类的操作。如下图:
    CatUML
    第一个方格,猫是这个类的类名。

    第二个方格包含了两个部分,左边的+、-、# 表示了属性的可见性,分表表示public、private、protected
    右边表示类的属性。

    第三个方格同属性一样,包含了两部分,前面的符号表示了方法的可见性,后面表示类的方法。

    类之间的关系

    建立模型时,类不可能是单独存在的。比如猫咪的抓如果没有其他对象,抓这个方法显得毫无意义。UML类图中类之间的关系主要包括:依赖关系、泛化关系、关联关系、实现关系。关联关系包含了聚合关系、组合关系。

    依赖关系

    定义:有两个元素X、Y,如果修改X的定义可能会引起对Y的定义修改,则称Y依赖与元素X

    产生依赖的原因有很多,通常表现为:一个类向另一个类发送信息;一个类是另一个类的数据成员;一个类是另一个类的操作参数等。如下图:

    依赖

    银行作为用户贷款操作的参数,用户依赖与银行,UML类图中用带箭头的虚线表示依赖关系

    泛化关系

    泛化关系描述了一般事物与该事物中的特殊种类之间的关系。Java中的继承关系,父类就是子类泛化。
    在UML中,泛化关系有三个条件:

    1. 付类所具有的关联、属性和操作,子类都应该具有
    2. 子类除了与父类一致的信息外还包含额外的信息
    3. 可以使用父类的地方,也可以使用子类实例

    泛化关系使用带空心箭头的实现表示,箭头指向父类。如下图:
    泛化

    关联关系

    关联关系表示两个类之间存在某种语义上的联系,比如一个公司有多个部门,一个部门有多个员工。
    关联关系是所有关系语义最弱的关联。UML类中中,用实线来表示

    关联

    在上图中1、1..n是用来表示关联的两个类之间的数量关系。具体参见类的多重性。

    聚合关系

    聚合关系是一种特殊的关联关系。聚合关系表示了类之间的整体与部分的关系。整体与部分之间并没有相同的生命周期,整体消亡后部分可依旧存在。在UML中用带有空心菱形的实线表示,空心菱形指向代表整体的类。比如:电脑是由CPU、主板等组成的。UML表示图如下:
    聚合

    组合关系

    组合关系也是部分和整体的关系,相对聚合关系,组合关系中的部分和整体联系更为紧密。整体与部分之间有相同的生命周期,整体消亡后部分也随之消亡。比如公司和部门之间的关系,一旦公司解散,部门也随之解散。UML中用带有实心菱形的实线表示。UML图如下:

    组合关系

    实现关系

    实现关系用来规定接口和实现接口的类或组件之间的关系。接口可以看作是操作的集合,这些操作用于规定类或组件的服务。在UML中,用一个带空心箭头的虚线来表示。比如我们抽象出飞行这个动作,而对于不同的类可以通过实现飞行接口来作个性化处理。UML图如下:

    实现关系

    类的多重性

    多重性是用来说明两个类之间的数量关系,表示为一个整数范围n...m,整数n定义所链接的最少对象的数目,m为最多对象数目(但不确定最大数时,可以*号表示)。常见的多重性如下表

    表示 含义
    0...1 表示0或者1的关联数目
    0...* 表示0或多个关联数目
    1...1 表示1个关联数目
    1...* 表示1或多个关联数目
    * 表示有多个关联数目
  • 相关阅读:
    mysql 数据迁移方案
    tomcat:run 指定端口号
    idea open gradle project
    tomcat:run命令执行端口号
    域名代理
    stackoverflow慢问题
    chrome 添加 vue tools
    深度学习——结构化机器学习项目(学习策略2)[9]
    深度学习——超参数调试[7]
    深度学习——优化算法[6]
  • 原文地址:https://www.cnblogs.com/warmsmile/p/11449197.html
Copyright © 2011-2022 走看看