📅  最后修改于: 2023-12-03 14:44:53.772000             🧑  作者: Mango
OOAD(面向对象分析与设计)-UML(统一建模语言)结构图是一种用于描述系统的静态结构和组成部分的图解表示。它通过使用各种联接元素,如类、接口、对象、组件、包和节点等来反映系统的各个组成部分之间的关系。在软件系统的设计和开发中,这种结构图被广泛应用于说明软件组件之间的关系和依赖性。
在UML中存在的主要结构图类型包括:
这些UML结构图类型形成了一个完整的描述软件系统结构的体系,程序员可以根据系统开发要求选择和应用不同类型的UML结构图。
类图是UML中最常用的结构图之一。它用于表示类、接口和它们之间的关系。在一个类图中,类通常会显示为一个矩形框,类的属性和方法会显示在框的内部。关系则由各种不同的线条表示,包括:
例如:
@startuml
class 类名 {
-私有变量1
-私有变量2
#受保护变量1
+公共变量1
+公共变量2
-私有方法1()
-私有方法2()
+公共方法1()
+公共方法2()
}
class 类名2 {
...
}
类名 --|> 类名2
类名 --> 接口名
类名1 -- class
@enduml
此UML代码片段创建了一个简单的类图,其中包含类、关联关系和继承关系。其中,类名具有几个私有变量和公共方法,与另一个类名2有着继承关系。
对象图描述了一个给定时间点的类实例集合。它通常用于对现有对象进行建模,如解释器、编译器等。在一个对象图中,每个对象通常表示为一个矩形,其中包含对象名称、属性和相关方法。对象之间则由线条表示,这些线条通常表示对象之间的关系或是否具有引用关系。
例如:
@startuml
object 对象1 {
变量1 = 值1
变量2 = 值2
}
object 对象2 {
...
}
对象1 -> 对象2 : 关联关系
对象1 --> 对象2 : 引用关系
类1 --> 对象1
@enduml
此UML代码片段创建了一个简单的对象图,其中对象1和对象2之间具有引用关系和关联关系,同时对象1由类1实例化。
组合结构图描述了程序代码中的组合结构。这种图通常用于显示程序的复杂部分,如线程或进程。在组合结构图中,组件通常显示为矩形,并使用各种线条表示组件之间的关系。
例如:
@startuml
class 组件1 {
+公共变量
+公共方法()
}
class 组件2 {
...
}
组件1 -组合- 类1
组件1 -组合- 组件2
@Component
class 类1 {
...
}
@enduml
这个UML代码片段创建了一个组合结构图,其中组件1由类1实例化,同时还具有组件2的实例,它们之间具有组合关系和共同的公共方法。
部署图通常用于描述系统的部署结构。在一个部署图中,节点表示为盒状物,节点可以是硬件或软件执行环境。组件可以放置在一个节点中以表示它所在的运行环境。
例如:
@startuml
node 节点1 {
component 组件1 {
+公共方法1()
+公共方法2()
}
component 组件2 {
...
}
}
node 节点2 {
component 组件3 {
+公共方法1()
+公共方法2()
}
component 组件4 {
...
}
}
节点1 -.....> 节点2 : 视察
@enduml
这个UML代码片段创建了一个简单的部署图,其中两个节点(节点1和节点2)之间具有运行环境部署关系。在节点1中,组件1和组件2运行在共同的运行环境中。
包图用于描述程序代码的包结构。在一个包图中,包通常表示为文件夹形状,其中包含多个类、接口和其他包。包之间则由各种线条表示,包括:
例如:
@startuml
package 包名1 {
class 类名1 {
...
}
class 类名2 {
...
}
}
package 包名2 {
class 类名3 {
...
}
class 类名4 {
...
}
包名2 <-- 包名1 : 依赖关系
}
@enduml
这个UML代码片段创建了一个简单的包图,其中包括两个包——包名1和包名2。类名1和类名2属于包名1,类名3和类名4属于包名2,同时它们之间具有依赖关系。