Unified Modeling Language (UML)包含不同类型的类图,用于描述系统中的类、对象和它们之间的关系。以下是几种常见的类图类型及其介绍:
类图 (Class Diagrams): 类图是描述系统中类及其之间关系的静态结构图。它展示了类的属性、方法、关联、继承、接口等信息。主要元素包括类、接口、关联、继承、依赖、聚合和组合等。
对象图 (Object Diagrams): 对象图是类图的实例化表示,它展示了系统中特定时间点的对象及其之间的关系。它描述了类的实例或对象及其属性值、连接和相互作用。
包图 (Package Diagrams): 包图展示了系统的物理和逻辑组织结构,用于组织和管理类、对象、组件和其他结构化元素。它显示包、子包和其中包含的元素。
部署图 (Deployment Diagrams): 部署图描述了系统的物理部署,展示了软件组件如何部署在硬件节点上。它显示了节点、组件、连接以及节点上的部署关系。
组件图 (Component Diagrams): 组件图描述了系统中组件及其关系,强调了系统的物理和逻辑组成。它显示了组件、接口、依赖关系等。
交互图 (Interaction Diagrams): 交互图包括序列图和协作图,用于展示对象之间的交互和消息传递。序列图描述了对象之间的交互顺序,而协作图描述了对象之间的协作关系。
状态图 (State Diagrams): 状态图描述了对象在其生命周期中状态的变化以及导致状态转换的事件。它展示了对象状态之间的转移和行为。
依赖关系(只要A用到了B,A和B就存在依赖关系)
依赖的范围比较广,类与类之间是肯定存在依赖关系的,如果不存在那么就没必要研究,因此解耦只能说尽可能的解耦,如果解耦到两个类完全没有关系那么就没有必要研究。
关联关系(1对多等关系就是关联)
关联关系和后面的聚合关系有点像,关联关系一般体现在A和B相互关联,例如A有成员变量B,同时B有成员变量A
public class A { private B b;// 相互关联 public B getB() { return b; } public void setB(B b) { this.b = b; } } class B { private A a;// 相互关联 public A getA() { return a; } public void setA(A a) { this.a = a; } }
泛化关系(等同于父子类的继承关系)
泛化就是继承
实现关系(等同于接口的实现)
实现关系很简单就是接口的实现,就不解释了。
聚合关系(可以单一存在的两个类)
如下代码创建A不一定需要创建B(A和B可以拆分)
public class A { private B b;// 聚合,通过set方式进行聚合,这个b不一定是B可以是B的子类 public B getB() { return b; } public void setB(B b) { this.b = b; } } class B { }
组合关系(不可拆分的两个类)
如下代码是属于组合关系,当我们创建A的时候B也会一起伴随着创建(好像不可拆分一样)。
public class A { private B b=new B();// 组合 } class B { }