starUML教程-用例图/类图
用例图
也称为用户模型图 是从软件需求分析到最终实现的第一步 它是从客户的角度来描述系统功能
它包含3个基本组件:
1.参与者:与系统打交道的人或使用该系统的人
2.用例:表示该系统的某项完整功能
3.关系:定义用例之间的关系 ——泛化关系 扩展关系 包含关系
用例之间的关系——泛化关系:
表示同意业务目的(父用例)的不同技术实现(各个子用例)在UML中 用例泛化用一个三角箭头从子例指向父例 说白了就是面向对象继承里的父子类关系
用例之间的关系——包含关系:
一个用例可以包含其他用例具有的行为 并把它包含的用例行为作为资深行为的一部分 在UML中包含关系用虚线箭头加 “<<include>>” 箭头指向被包含的用例
用例之间的关系——扩展关系
如果在完成某个功能的时候偶尔会执行另一个功能 则用扩展关系表示 在UML中扩展关系用虚线箭头 加 "<<extend>>" 箭头指向被扩展的用例
类图
类图是面向对象系统建模中最常见的图 是定义其他图的基础
类图主要是用来显示系统中的类 接口 以及它们之间的关系
类图包含的主要元素有类 接口 和关系 其中关系有泛化关系 关联关系 依赖关系和实现关系 在类图中也可以包含注释和约束
类的表示法:
类是类图的主要组成 由3部分组成:类名 属性和方法 在UML中 类用矩形来表示 顶端部分存放类的名称 中间部分存放类的属性 属性的类型及值 底部部分存放类的方法 方法的参数和返回类型
在UML中可以根据实际情况有选择的隐藏属性部分或方法部分或两者都隐藏
类之间的关系——泛化关系:
在UML中 泛化关系用来表示类与类 接口与接口之间的继承关系 泛化关系有时候也称为 “is a kind of” 关系
在UML中泛化关系用一条实心空箭头 子类指向父类
类之间的关系——实现关系
在UML中 实现关系用来表示类与接口之间的实现关系
在UML中 实现关系用一条虚线空心箭头由子类指向父类
类之间的关系——依赖关系:
对于两个相对独立的系统,当一个系统负责构造另一个系统的实例 或者依赖另一个系统的服务时 这两个系统之间体现为依赖关系 例如生产零件的机器和零件 机器字符构造零件对象; 充电电池和充电器 充电电池通过充电器来充电 ;自行车和打气筒 自行车通过打气筒来充气
#include <iostream>
using namespace std;
class Car
{
public:
void run() {
cout << "开车去上班" << endl;
}
};
class Person
{
public:
//这里的car不是Person的成员变量 属于依赖关系
void GoWork(Car * car) {
car -> run();
}
};
int main() {
Person p;
//必须创建一个Car对象才能跑得起来
//不能直接通过Person对象跑起来
//所以属于依赖关系
Car c;
p.GoWork(&c);
return 0;
}
类之间的关系——关联关系
对于两个相对独立的系统 当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时 这两个系统之间为关联关系 例如客户和订单 每个订单对应特定的客户 每个客户对应一些特定的订单
#include <iostream>
using namespace std;
class Car
{
public:
void run() {
cout << "开车去上班" << endl;
}
};
class Person
{
public:
void GoWork() {
car -> run();
}
//这里的car是Person的成员变量 属于一个固定的关联关系
Car* car;
};
int main() {
Person p;
//这里不再需要创建Car对象
//因为Car就是Person的成员变量
//属于固定的关联关系
p.GoWork();
return 0;
}
类之间的关系——聚合
聚合关系是关联关系的一种 是更强的关联关系
聚合是整体和部分之间的关系 例如汽车由引擎、轮胎以及其他零件组成
聚合关系也是通过成员变量来实现的 但是关联关系所涉及的两个类处在同一层面上 而聚合关系中两个类处于不同的层次上 一个代表整体 一个代表部分
类之间的关系——组合
组合关系也是关联关系的一种 是比聚合还要强的关系
代表整体的对象负责代表部分的生命周期
链接:https://pan.baidu.com/s/1fDNk4WVQkImfCfSAcsH0SA
提取码:xm19