热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记用Visio画UML图类结构图(进阶篇)

本文和大家继续学习用Visio画UML图类结构图,上一篇文章中说明了类结构图的基本画法。要真正要完成实用的类图,还要有许多工作要做。用

本文和大家继续学习用Visio画UML图类结构图,上一篇文章中说明了类结构图的基本画法。要真正要完成实用的类图,还要有许多工作要做。

用Visio画UML图类结构图(进阶篇)

上一篇文章中说明了类结构图的基本画法。要真正要完成实用的类图,还要有许多工作要做。

类之间的关系

继承关系

用Visio画UML图中继承关系是最容易理解的关系。画成图的话就像下面这样。面向对象的说法就是is-a关系。也就是说Class2isaClass1。在C++中我们说Class2是Class1的派生类,或者说Class1是Class2的基类。

聚集和组成

从容易理解的关系说起.经常有一个类是另一格类的数据成员的情况。在UML中表现为,聚集(aggregation)和组成(composition)。

 

从图上来看,用Visio画UML图时这两种关系都表现为一端是菱形的直线。其中有菱形的一端是整体,另外一端是部分。区别就是菱形是空心还是实心的。从C++曾序来看的话,如果图画成实心菱形的话,Class1就要负责Class2的创建和销毁。更准确的说,就是如果Class1不存在了,Class2也一定不存在。例如象下面的程序。 

  1. classClass2  
  2. {  
  3. };  
  4.  
  5. classClass1  
  6. {  
  7. Class2m_objClass2;  
  8. }  
  9.  

当然也有下面的情况 

  1. classClass2  
  2. {  
  3. };  
  4. classClass1  
  5. {  
  6. Class1();  
  7. ~Class1();  
  8. Class2*m_pClass2Obj;  
  9. };  
  10.  

光看类的声明就不行了。这是就需要看类的实现部分了。 

  1. Class1::Class1()  
  2. {  
  3. m_pClass2Obj=newClass1;  
  4. }  
  5. Class1::~Class1()  
  6. {  
  7. deletem_pClass2Obj;  
  8. m_pClass2=NULL;  
  9. }  
  10.  

组成(Composition)关系,如果在Class1的对象销毁的时候,比如在析构函数中没有将数据成员销毁的代码,那么这种关系就是聚集(aggregation)关系。当然,销毁数据成员的代码,会有很多种。

依赖关系

用Visio画UML图中依赖关系就是在以个类中使用了另一个类。例如下面的代码

  1. Class1::DoSomething()  
  2. {  
  3. Class3obj;  
  4. obj.DoClass3Work();  
  5. }  
  6.  

就是这样的情况。画成图的话就像下面这样。


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 第四单元和课程总结:简单的架构设计意识
    一、第四单元架构设计总结第一次作业由于需要按名查找类图模型,于是建立"Class"类进行管理由于方法具有参数导致类中存在二级结构 ... [详细]
  • linux location root访问文件夹404_Linux下yum安装PHP7.2+Nginx+Mysql
    一.安装NGINX1.先查看是否安装了第三方软件库:yumlistinstalled|grepepel-release或rpm-qepel-release如果已经安装 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 装饰模式(Deocrator)     动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。    所谓装饰,就是一些对象给主题 ... [详细]
  • 开发笔记:里氏替换原则
    本文由编程笔记#小编为大家整理,主要介绍了里氏替换原则相关的知识,希望对你有一定的参考价值。1.定义:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2, ... [详细]
  • 【blockly教程】第五章 循环结构
    在这里,我们将介绍一个新游戏--PondTutor在PondTutor(https:blockly-games.appspot.compond-tutor)这个游戏中 ... [详细]
author-avatar
MrBatista
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有