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)

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

  • 相关阅读:
    仿小米网jQuery全屏滚动插件fullPage.js
    如何让低版本的IE浏览器(IE6/IE7/IE8)支持HTML5 header等新标签
    javascript--烟火效果
    javascript--15条规则解析JavaScript对象布局(__proto__、prototype、constructor)
    javascript——集合类
    javascript——可以判断值的类型的函数
    ”拍平数组“
    自定义的分页插件
    那些年,我们一起被坑的H5音频
    javascript-处理XML
  • 原文地址:https://www.cnblogs.com/lojun/p/8626910.html
Copyright © 2011-2022 走看看