接着我们上篇博客再回首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. 操作系统内核Hack:(四)内核雏形

    操作系统内核Hack:(四)内核雏形 在本系列的前一篇文章<操作系统内核Hack:(三)BootLoader制作>中,我们制作出了一个两阶段引导BootLoader,并进入了一个内核的空壳 ...

  2. Java异常封装(自己定义错误码和描述,附源码)

    真正工作了才发现,Java里面的异常在真正工作中使用还是十分普遍的.什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码和异常描述. 下面小宝 ...

  3. SSL协议相关证书文件

    密钥: 我理解是公钥+私钥的统称. 密钥对: 公钥(证书)和私钥成对存在.通信双方各持有自己的私钥和对方的公钥.自己的私钥需密切保护,而公钥是公开给对方的.在windows下,单独存在的公钥一般是后缀 ...

  4. How to speed up Remote Desktop Connection in Win7

    run following command in DOS window: netsh interface tcp set global autotuninglevel=disabled or nets ...

  5. EBS采购(PO)模块常用表

     select * from po_requisition_headers_all 请求头 select * from po_requisition_lines_all 请求行 select * ...

  6. android推荐使用dialogFrament而不是alertDialog

    DialogFragment在android 3.0时被引入.是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框.典型的用于:展示警告框,输入框,确认框等等. 在Dia ...

  7. android问题:Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER

    转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/24196143 Installation error: INSTALL_FAILED_C ...

  8. Android初级教程图片信息

    对图片常规信息要了解其性质.图片大小.像素.位图等等概念总结如下: 图片在计算机中的大小 图片的总大小 = 图片的总像素 * 每个像素占用的大小(图片的总像素=像素尺寸也就是分辨率,例如设定800*4 ...

  9. jdbcTemplate的queryForList

    jdbcTemplate的queryForList的使用方法如下,它不一样的地方是,它获得的结果,会再放到一个map里去: List rows = jdbcTemplate.queryForList( ...

  10. java编程小记

    http://blog.csdn.net/pipisorry/article/details/51050189 很久没写java,什么都不会了,小记一下. 类型转换 字符串转int类型:Integer ...