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或多个关联数目
    * 表示有多个关联数目

    转载于:https://www.cnblogs.com/warmsmile/p/11449197.html

  • 相关阅读:
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    64位WIN7系统 下 搭建Android开发环境
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/13076186.html
Copyright © 2011-2022 走看看