UML类图
来源:互联网 发布:喜纳昌吉 知乎 编辑:程序博客网 时间:2024/06/06 00:33
UML类图
- UML类图
- 简介
- 类的表示
- 类之间的几种关系
- EA
简介
类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,用来显示系统中的类,接口以及他们之间的静态结构和关系的一种静态模型。
类的表示
类图有三个基本组件:类名、属性、方法,一个类在类图中用一个有三个区域的矩形表示,其中第一个区域表示类名,第二个区域表示类中包含的属性,第三个区域包括类的方法。当然,第二个区域和第三个区域并不是必须的。
类之间的几种关系
泛化(Generalization)
泛华表示的是is-a的关系;是一种继承关系,表示一般与特殊。在语言中适用继承得以实现。
表示方法:使用带三角箭头表示,从子类指向父类:
比如“猫”是“动物”的一个子类;继承了“动物”的所有属性和动作。他们之间是一种泛化关系。
实现(Realization)
实现是一个类和接口之间的关系:一个类“实现”了一个接口。
表示方法:使用带三角箭头的虚线箭头表示,从类指向接口。比如,“猫”实现一个接口“产仔”。
关联(Association)
关联是一种拥有关系。即可以是双向的关联,也可以是单向的关联。在代码中的体现为成员变量。
表示方法,使用尖的实线箭头表示。指向被关联的类。
比如说猫有一个属性是“窝”,那么“猫”和”窝“就是关联关系;是一个单向的关联。
依赖(Dependency)
依赖是一种使用关系。在代码中体现位类的局部变量、方法的参数等。
表示方法:使用尖的虚线箭头表示。指向被使用的类。
比如说:”猫“洗澡用”水“
聚合(Aggregation)
聚合是关联关系的一种特例,聚合也是一种拥有关系,但是这种拥有关系是可以分离的,他们具有各自的生命周期
代码体现:成员变量
表示方法:带空心菱形的实线,菱形指向整体。
比如:主人拥有猫
组合(Composition)
组合关系也同样是关联关系的一种特例;也称为强聚合。也是整体和部分的关系,但是此时整体和部分是不可以分离的。
代码体现:成员变量
表示方式:带实心菱形箭头的实线,菱形指向整体。
比如:猫拥有心脏。
上问中描述的关系如图所示:
EA
绘制上图使用了软件EA,软件还有通过代码生成UML类图和通过UML类图去生成代码的功能。
下面记录一下怎么使用代码生成UML图:
1. 新建一个工程,选择类图模式。
- 选择导入代码
假设我们有头文件代码如下:
class Animal {public: Animal(); ~Animal();private: void eat();};class Cat : public Animal{public: Cat(); ~Cat();};class Human {public: Human(); ~Human(); Cat cat;};
生成UML类图如下:
通过UML图生成代码也示在Code Engineering
选项内:
通过上面的图再生成代码如下:
Human.h
///////////////////////////////////////////////////////////// Human.h// Implementation of the Class Human// Created on: 22-7月-2017 10:43:14// Original author: xxx///////////////////////////////////////////////////////////#if !defined(EA_D1057E9F_EC82_4d3b_9885_0441EFB30798__INCLUDED_)#define EA_D1057E9F_EC82_4d3b_9885_0441EFB30798__INCLUDED_#include "Cat.h"class Human{public: Cat cat; Human(); ~Human();};#endif // !defined(EA_D1057E9F_EC82_4d3b_9885_0441EFB30798__INCLUDED_)
Cat.h
///////////////////////////////////////////////////////////// Cat.h// Implementation of the Class Cat// Created on: 22-7月-2017 10:43:14// Original author: xxx///////////////////////////////////////////////////////////#if !defined(EA_B6994D59_7541_4bfb_AA0E_C226CB7AEC03__INCLUDED_)#define EA_B6994D59_7541_4bfb_AA0E_C226CB7AEC03__INCLUDED_#include "Animal.h"class Cat : public Animal{public: Cat(); ~Cat();};#endif // !defined(EA_B6994D59_7541_4bfb_AA0E_C226CB7AEC03__INCLUDED_)
Animal.h
///////////////////////////////////////////////////////////// Animal.h// Implementation of the Class Animal// Created on: 22-7月-2017 10:43:13// Original author: xxx///////////////////////////////////////////////////////////#if !defined(EA_7C06886E_CCC9_46d3_8A5F_542250D47C7C__INCLUDED_)#define EA_7C06886E_CCC9_46d3_8A5F_542250D47C7C__INCLUDED_class Animal{public: Animal(); ~Animal();private: void eat();};#endif // !defined(EA_7C06886E_CCC9_46d3_8A5F_542250D47C7C__INCLUDED_)
同时,他也为所有的类函数生成了cpp,这里不贴出来了。
- 【Tools】【UML】UML 类图
- 【UML】UML类图
- #UML#UML类图
- 【UML】UML图--类图
- UML 类图
- UML类图
- UML类图
- UML类图
- UML类图
- uml类图
- UML类图
- UML类图
- UML类图
- UML类图
- UML类图
- uml类图
- UML类图
- UML类图
- Silver Cow Party(最短路 很有意思的题)
- Passing the Message
- linux服务器安全设置
- Battle City(POJ
- 出现对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。的解决办法
- UML类图
- 面试题七 C/C++ 两个字符串由数字组成的相加,最大不超过32bit整形的系统函数--程序员面试题
- 【二分图】poj 2536 Gopher II
- javascript深入理解js闭包
- ELK中elasticsearch的用法
- iOS NSNotification(通知)传值~demo
- eclipse编译过程出现堆栈溢出情况
- git删除二进制文件
- MPAndroidCharts:解决“禁用图例,直接禁用X轴会显示不全”的问题