1、安装PlantUML
2、安装Graphviz
brew install Graphviz
3、uml类图用法
4、文档下载
@startuml
title uml类图用法
/'
+ 表示 public
- 表示 private
# 表示 protected
~ 表示 package private
'/
/'
abstract 抽象
abstract class 抽象(等同abstract)
annotation 注解
circle 圆
() 圆缩写形式
class 类
diamond 菱形
<> 菱形写形式
entity 实例
enum 枚举
interface 接口
{static} static
'/
/'
类的关系有泛化(继承)、实现、依赖、关联等,其中关联又分为一般关联、聚合、组合。
'/
ClassA <|-- ClassB: 泛化
ClassA <|.. ClassB: 实现
ClassA <.. ClassB : 依赖
ClassA <-- ClassB : 关联
ClassA o-- ClassB : 聚合
ClassA *-- ClassB : 组合
' 泛化关系(继承关系),带三角箭头的实线,箭头从子类指向父类
/'
class Person {
public:
void talk(){}
};
class Teacher : public Person {
public:
void teach(){}
};
'/
namespace 泛化关系 #orange{
class Person {
+ void talk()
}
class Teacher {
+ void teach()
}
Person <|--[#red] Teacher
}
' 实现关系,带三角箭头的虚线,箭头从实现类指向接口类
/'
class Runnable {
public:
virtual void run() = 0;
};
class TimeTask : public Runnable {
public:
void run(){}
};
class PeriodTask : public Runnable {
public:
void run(){}
};
'/
namespace 实现关系 #green{
class Runnable<<任务>> {
+ virtual void run()
}
class TimeTask<<定时任务>> {
+ void run()
}
class PeriodTask<<周期任务>> {
+ void run()
}
Runnable <|.. TimeTask
Runnable <|.. PeriodTask
}
' 依赖关系:类A的变化会引起类B的变化,则说类B依赖于类A。
' 带箭头的虚线表示,箭头从使用类指向被依赖的类
/'
class Car {
public:
void move(){}
};
class Driver {
public:
void drive(Car* car) {
car->move();
}
};
'/
namespace 依赖关系 #gray{
class Car {
+ void move()
}
class Driver {
+ void drive()
}
Car <.. Driver
}
' 关联关系:对象之间一种引用关系
' 带箭头的实线表示,箭头从使用类指向被关联的类,可以是单向和双向的。
/'
class Person {
private:
IdCard idcard;
}
class IdCard {
private:
int id;
String snum;
}
'/
namespace 单向关联关系 #yellow{
class Person {
- IdCard idcard
}
class IdCard {
- int id
- String snum
}
IdCard "1" <-- "1" Person
}
/'
class Customer;
class Product {
private:
Customer* customer;
}
class Customer {
private:
std::vector<Product*> products;
}
'/
namespace 双向关联关系 #yellow{
class Product {
- Customer* customer
}
class Customer {
- std::vector<Product*> products
}
Product "N" <--> "1" Customer
}
' 聚合关系:整体和部分的关系,成员关系是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
' 如:车和轮胎是整体和部分的关系
' 带空心菱形的实线表示,菱形指向整体。
/'
class Car {
private:
Tire tire;
}
class Tire {
private:
double radius;
double perimeter;
}
'/
namespace 聚合关系 #pink{
class Car {
- Tire tire
}
class Tire {
- double radius
- double perimeter
}
Car o-- Tire
}
' 组合关系:整体和部分的关系,部分和整体具有统一的生存期,部分不能脱离整体存在。
' 如:身体和鼻子
' 带实心菱形的实线表示,菱形指向整体。
/'
class Body {
private:
Nose nose;
private:
class Nose {
}
}
'/
namespace 组合关系 #purple{
class Body {
- Nose nose
}
class Nose {
}
Body *-- Nose
}
@enduml
原文地址:http://www.cnblogs.com/wandaren/p/16825426.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性