愿你如阳光,明媚不忧伤。
1. UML 概述
UML (Unified Modeling Language)统一建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言,独立于任何具体程序设计语言。UML立足于对事物的实体、性质、关系、结构、状态和动态变化过程的全程描述和反映,可以从不同角度描述人们所观察到的软件视图,也可以描述在不同开发阶段中的软件形态。采用一组图形符号来描述软件模型,这些图形符号具有简单、直观和规范的特点,开发人员学习和掌握起来比较简单。所描述的软件模型,可以直观地理解和阅读,由于具有规范性,所以能够保证模型的准确、一致。
2. 类成员的可见性及返回值类型
------------------------------------------------------
・【语法】
+ Public 公共
- Private 私有
# Protected 保护
~ Package/Internal 包 / 内部
------------------------------------------------------
・【示例】
class Duck{
String beakColor
+boolean swim()
-String quack()
#Object[] swim1()
~List~string~ quack1()
}
------------------------------------------------------
3. 类图关系
------------------------------------------------------
・【语法】[classA][Arrow][ClassB]:LabelText
<|-- Inheritance 继承
*-- Composition 组合
o-- Aggregation 聚合
--> Association 协作
-- Link (Solid) 链接(实线)
..> Dependency 依赖
..|> Realization 实现
.. Link (Dashed) 链接(虚线)
------------------------------------------------------
・【示例】
classDiagram
classA --|> classB : Inheritance
classC --* classD : Composition
classE --o classF : Aggregation
classG --> classH : Association
classI -- classJ : Link(Solid)
classK ..> classL : Dependency
classM ..|> classN : Realization
classO .. classP : Link(Dashed)
------------------------------------------------------
4. 关系的基数 / 多重性
------------------------------------------------------
・【语法】[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
1 Only 1 一对一
0..1 Zero or One 0 或 1
1..* One or more ...
* Many ...
n n {where n>1} ...
0..n zero to n {where n>1} ...
1..n one to n {where n>1} ...
------------------------------------------------------
・【示例】
classDiagram
Customer "1" --> "*" Ticket
Student "1" --> "1..*" Course
Galaxy --> "many" Star : Contains
------------------------------------------------------
5. 类注释
------------------------------------------------------
・【语法】[classA] class Class_name <<desc>> Class_name
OR 与类定义一起在嵌套结构中 <<desc>>
<<Interface>> 表示接口类
<<abstract>> 代表抽象类
<<Service>> 代表服务等级
<<enumeration>> 代表一个枚举
------------------------------------------------------
・【示例】
classDiagram
class Color
<<enumeration>> Color
class Color {
<<enumeration>>
RED
BLUE
GREEN
WHITE
BLACK
}
------------------------------------------------------
6. 完整示例
------------------------------------------------------
・【示例】
classDiagram
Class01 <|-- AveryLongClass : Cool
<<interface>> Class01
Class09 --> C2 : Where am i?
Class09 --* C3
Class09 --|> Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
class Class10 {
>>service>>
int id
size()
}
------------------------------------------------------