接着我们上篇博客再回首UML之上篇说,在类图中有四种关系,关联、依赖、泛化、实现,接下来,我们来看看依赖,依赖--描述的是一种使用关系,她说明一个事物的规格说明的变化可能影响到他使用的另一个事物,反之未必,一如我们上图所示,顾客和超市构成一种依赖关系,特别需要注意的是,箭头指向被依赖的一方,如下图:

看看依赖的代码实现

class Customer{};
class supermarket{};
{
 void buy(Customer& Customer){}
 void buy(Supermarket* psupermarket){}
};

泛化,泛化--简单的来说,A是B和C的父类,B、C具有公共类也就是父类A,说明A是B和C的一般化,在我们的UML当中,对于泛化关系有三个要求,首先,子类和父类应该完全一致,父类所具有的属性、操作,子类应该都有,再者,子类中除了与父类一致的信息以外,还包括额外的信息;最后可以使用父类实例的地方,也可以使用子类的实例。如下图:

那么泛化的代码是如何体现的:

class Animal{};
class Person : public Animal{};
Animal* pAnimal = new Person;

实现关系指定两个实体之间的一种合约,换言之,一个实体定义一个合约,而另一个实体保证履行合约。

再来看看她的代码实现:

public interface CollegePerson{
}
public class Professor implements Collegepers{
}

时序图是一种行为图,她通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。她可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机引起转换的触发事件。

     时序图描述对象是如何交互的,并且将重点放在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。以机房收费系统为例,看看我们上下机的时序图是如何体现的:
         
       在这里,我们要特别注意,我们需要使用的单线程,当用户发出去一个命令,必须要返回一个信息。至此,我们三类图就介绍到这里。
 UML这三个字母的全称是Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一走很难过有特殊用途的语言,开始接触UML的时候,有个疑惑,这明明是一种图形,为什么说是语言呢?试想想,我们伟大的汉字还不是从图形-象形文字开始的么语言包括文字和图形,其实有很多内容文字是无法表达的,我们都见过建筑设计图纸,里面有很多图形,光用文字不能完全表达清楚建筑设计,在建筑界,有一套标准来描述设计,同样的道理,在软件开发的世界里,我们也需要一套标准来帮助我们做好软件开发的工作,UML就是其中的一种标准。来提高我们的软件开发水平。
  在学习的过程中,很多师哥师姐都告诉我,UML的主要用途就是软件设计,但是当我第一次接触的时候,应用UML却不是软件设计,而是需求分析,当我们与客户面对面沟通调研需求的时候,直接用类图,时序图,活动图等进行沟通,我们并没有因此和客户无法沟通,反而是更加顺畅,客户在我们的引导下,很快读懂这些图,让我们和客户的沟通效率和效果更好,UML可帮助我们做软件需求分析和软件设计的工作,UML会让我们的工作更上一层楼,告诉读者一个秘密,UML应用于软件需求分析时,其学习门槛将会大大降低,只要你对软件需求分析感兴趣,认真学习和应用UML,就很有机会成为软件需求分析高手。

再回首UML之下篇的更多相关文章

  1. 再回首UML之上篇

    UML,统一建模语言,是一种用来对真实世界物体进行建模的标准标记,这个建模的过程是开发面向对象设计方法的第一步,UML不是一种方法学,不需要任何正式的工作产品. UML提供多种类型的模型描述图,当在某 ...

  2. UML——再回首

    概述     在画图的过程中,发现自己还是有好多不懂的地方,对于四大关系理解的不是特别透彻,所以画图的过程中总是"剪不断,理还乱!"再一次整理四大关系,再回首必然丰收~~~ 1.实 ...

  3. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  4. 再回首,Java温故知新——开篇说明

    不知不觉在IT界从业2年了,两年时间足够一个人成长很多,当然也会改变很多事.在这两年时间里,随着对技术的深入了解,知识面的拓展以及工作难度的增大,渐渐的感觉自己技术方面根基不稳,多数问题也只是做到知其 ...

  5. 再回首,Java温故知新(一):Java概述

    Java发展历程 Java的发展要追溯到1991年,Patrick Naughton(帕特里克·诺顿)和James Gosling(詹姆斯·高斯林)带领Sun公司的工程师打算为有线电视转换盒之类的消费 ...

  6. 再回首,Java温故知新(八):Java基础之字符串

    字符串是Java中使用频率最高的类,但是它却不属于基本类型,而是预定义了String类来表示.从String类的源码可以看到,String是基于char[]实现的,而且Java中的String是不可变 ...

  7. 再回首,Java温故知新(七):Java基础之运算符

    常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...

  8. [二十六]JavaIO之再回首恍然(如梦? 大悟?)

    流分类回顾 本文是JavaIO告一段落的总结帖 希望对JavaIO做一个基础性的总结(不涉及NIO) 从实现的角度进行简单的介绍 下面的这两个表格,之前出现过 数据源形式 InputStream Ou ...

  9. MySQL数据库再回首

    前言: 数据库是程序员的数据源泉,加上近期 要开发DB可视化.性能分析的功能 重新回顾一下MySQL知识,以下是笔记: MySQL架构 MySQL基础理论 1.什么是关系型数据库? 关系型数据库,这个 ...

随机推荐

  1. Linux常见目录及命令介绍

    一.Linux中常用的目录介绍:     /        -根目录     /bin    -命令保存目录(普通用户亦可读取的命令)     /boot    -启动目录,启动相关文件     /d ...

  2. cassandra 3.x官方文档(6)---内部原理之存储引擎

    写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...

  3. Freemarker商品详情页静态化服务调用处理

    --------------------------------------------------------------------------------------------- [版权申明: ...

  4. 使用GDAL进行RPC坐标转换

    使用GDAL进行RPC坐标转换 对于高分辨率遥感卫星数据而言,目前几乎都提供了有理函数模型(RFM)来进行图像校正(SPOT系列提供了有理函数模型之外还提供了严格轨道模型).对遥感影像进行校正目前最常 ...

  5. JVM类加载原理学习笔记

    (1)类的生命周期包括了:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Usin ...

  6. How to kill a particular user terminal on Linux

    Intro. Sometimes, the application we launched from command promp failed to exit. What we require is ...

  7. J2EE进阶(十八)基于留言板分析SSH工作流程

    J2EE进阶(十八)基于留言板分析SSH工作流程   留言板采用SSH(Struts1.2 + Spring3.0 + Hibernate3.0)架构.   工作流程(以用户登录为例):   首先是用 ...

  8. Redis源码剖析--源码结构解析

    请持续关注我的个人博客:https://zcheng.ren 找工作那会儿,看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识.在面试过程中,redis确实 ...

  9. CCSpriteBatchNode中存放元素的一点理解

    该对象只能包含基于CCSprite的对象,并且该要求适用于一切子孙对象.即加入CCSpriteBatchNode的任何对象都必须是CCSprite或其子类. 比如CCSpriteBatchNode包含 ...

  10. nginx反向代理和rewrite进行解决跨域问题、去掉url中的一部分字符串,通过nginx正则生成新的url

    场景:表面上访问的是http://127.0.0.1:7777/test/xhtml//tpl/app-tpl-webapp/css/base.css, 实际上看的是http://127.0.0.1: ...