zoukankan      html  css  js  c++  java
  • UML类图介绍(转载)

    UML类图详细介绍

       类图主要描述程序对象以及他们之间的关系。一般来说,类、接口、抽象类这些程序对象的区别很容易,但是他们之间六种关系以前总是理解不够深刻,这次进行了一次复习,顺便写成博文以便加深理解

    类图中的三种对象

     类/抽象类

    类的表示一般一般如下图所示

     类名:图正中间的黑体字表示类的名称,如果是名字的字体是斜体字,则表明该类是抽象类

    • 属性:类名下面的区域表示类的属性
    • 操作:属性下面的区域表示类的操作(或者说方法)。
    • 可见性:属性和操作前面的+、-、#符号代表了这些对象的可见性分别是public、private、protected

      接口

      接口的表示一般如下图所示

       接口的图和类图类似,只不过加入了interface标识。接口中的成员可见性都是public

     类图中的六种关系

      类图中,类与类之间一般会有六种关系,他们分别是继承(Generalization)、实现(Implements)、组合(Composition)、聚合(Aggressgation)、依赖(Dependency)、关联(Association)

     继承(Generalization)

      如果对面向对象编程思想了解,则比较容易理解继承的概念。在面向对象的编程思想中,继承是指子类继承了父类的所有功能,并且能够在父类的基础上扩展自己的功能。这里的继承就是表现这种父类和子类的关系。继承关系如下图所示

      在这里Teacher和Student类分别是继承了Person类,自动拥有了Person类的公共属性和操作。同时他们分别扩展了自己独有的操作teach和listen。继承关系用一个实线空箭头的连线来表示,箭头指向父类

     实现(Implements)

      实现的概念和继承有些类似。但是接口中不会有已经写好的操作或者方法,接口中声明的操作都需要再实现类中实现。实现关系如下图所示

      在这里SuperMan类一样继承了Person类,因为超人还有一个特性是会飞,所以他还实现了一个Fly的接口。实现关系用一个虚线空心箭头的连线来表示,箭头指向接口。

    组合(Composition)

      组合表示的是两个对象之间一种强“拥有”的关系,如果B组合成为A,那么B是A的一个整体,B和A的生命周期是一样的。例如是一种部分与整体的关系,部分与整体之间的生命周期是一样的。组合关系用一个一个带箭头的连线表示,尾巴上有实心的菱形,箭头指向被拥有的对象。上面的数字表示两者之间的数量关系。如下图所示

      在这里,Hand和Person是组合关系,Hand是Person的部分,Person拥有Hand,而且Hand的生命周期依赖Person的生命周期。也就是说Person没有了,Person的Hand也没有了。在这里表示一个Hand一定归宿一个Person而一个Person可能有0个或者多个Hand。

    聚合(Aggressgation)

      聚合也表示两个对象之间的一种拥有关系,但是这个关系是一种弱的拥有关系。两者的生命周期是不依赖的。这是和组合的一个重要区别。聚合关系用一个带箭头的连续表示,尾巴带一个空心的菱形,箭头指向被拥有的对象。上面的数字表示两个对象之间的数量关系。如下图所示

      这里Classess是由Teacher和Student聚合而成,他们之间是一种拥有关系,但是Classes消亡,并不代表Teacher和Student的消亡,他们的生命周期是不依赖的。这是和组合的重要区别。这幅图里面聚合关系上的数字表示一个Teacher可以在0或者多个Classes中,而一个班级可以由0到多个Teacher。Classes和Student之间聚合关系上的的数量表示的是同样的含义。

     依赖(Dependency)

      如果一个对象的活动中要依赖另一个对象,则两者之间是依赖关系。例如学生上课依赖课程对象,老师教课也依赖课程对象。依赖关系用一个虚线箭头表示,箭头指向被依赖的对象。在代码中一般体现为操作的参数。如下图所示

     关联(Association)

      如果一个对象需要知道另一个对象,则对象之间是一种关联的关系。关联可以是单向的,即一个对象知道另一个对象,而另一个对象不知道该对象,也可以是双向的,即两个对象相互知道。关联式用一条实现表示,单向关联带一个箭头,指向被知道的对象,双向关联无箭头。例如学生需要了解考试对象的情况,考试对象需要了解学生的情况,这是一种双向关联关系。如下图所示。

  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/lojun/p/8626910.html
Copyright © 2011-2022 走看看