UML相关学习

欢迎和我一起来做一个人不傻,钱很多,活得久的快乐的程序员

元(本人的叫法)是对于UML基础部件及概念的总称。

UML : (Unified Modeling Language)统一建模语言

UML : (Unified Modeling Language)统一建模语言

作用:对软件密集型系统制品的,可视化,详述,构造,文档化

制品:

体系结构,设计,源代码,项目计划,测试,原型,发布。

UML来表达设计模式不仅方便了开发人员的交流,而且更加清晰、准确

在这里插入图片描述
UML图具有如下特点:
1、统一的标准(被OMG所认定的建模语言标准)。
2、面向对象。UML是支持面向对象软件开发的建模语言。
3、可视化、表现能力强。
4、独立于开发过程,UML不依赖于特定的软件开发过程。
5、概念明确,建模表示法简洁,图形结构清晰,容易掌握和使用。

接口
接口的UML图与类的UML类似;
第一部分是接口的名称,必须用斜体字型表示,而且顶端要用<>修饰。
第二部分是常量,描述接口中的常量及类型。
第三部分是方法(操作),描述类的方法及返回类型。
由于接口中常量与方法的访问权限都是public的,所以在常量与方法名字前要用加号(+)修饰。
在这里插入图片描述

注释:
UML以一个右上方带卷角的长方形表示注释,并且用线将注释与它所注释的实体连接起来,注释表明对类图的附加说明。

在这里插入图片描述

类与类之间的关系:

泛化关系(继承)
在UML中泛化关系表示为连接两个类的带空心三角的实线,实线起始端是子类,终点端是父类。

在这里插入图片描述
A.java

public abstract class A{ …
}

B.java

public class B extends A{ …
}

实现关系
在UMl中带空闲三角形的虚线连接类和它实现的接口,虚线起始端是类,终端是该类实现的接口。
在这里插入图片描述
A.java

public interface A{
public void methodA(){

}
}
B.java

public class B implements A{
public void methodA(){

}
}

依赖关系
如果B类作为参数被A类在某个方法中使用,则A类与B类具有依赖关系,即A依赖于B。
在UML图中用带箭头的虚线连接具有依赖关系的两个类,虚线的起始段是A,终点端是B。
在这里插入图片描述
Person.java

public class Person{
public void method(Bus bus){
bus.drive();
}
}

Bus.java

public class Bus{
public void drive(){

}
}

关联关系
如果A类中的成员变量是用B类声明的变量,即B类作为A类的一个属性存在,则A、B两类间具有关联关系,称A关联于B。关联关系是类与类之间最常用的一种关系,用于表示一类对象与另一类对象之间有联系。

在UML中用带箭头的实线连接具有关联关系的两个类。如果A类关联于B类,则实线的起始段是A类,终点端是B类。通常,关联关系有三种类型:单向关联、双向关联和自关联

在这里插入图片描述
A.java

public class A{
private B b;
public B getB(){
return b;
}
public void setB(B b){
this.b = b;
}
public void method(){
B.methodB();
}
}

B.java

public class B{
public void method(){

}
}

双向关联
双向关联可以表示为双向箭头或者没有箭头
在这里插入图片描述

在这里插入图片描述

自关联
一个类的属性的类型为该类本身,这种关联称为自关联
在这里插入图片描述
聚合关系:
聚合关系是关联关系的一种(弱关联),与关联不同的是聚合体现的是整体和个体的关系(这里的整体和个体是可以分离的,即个体可以独立于整体存在,例如火车站上的火车),二者是has-a的关系,而关联体现的是两个处在同一层次的类之间的关系。代码上表示A类中的成员变量是用B类声明的变量。

Station.java

public class Station{
private Train train;
public Train getTrain(){
return train;
}
public void setTrain(Train train){
this.Train = train;
}
public void start(){
thain.run();
}
}

Train.java

public class Train{
public void run(){

}
}

组合关系
组合关系也是关联关系的一种(强关联),与聚合类似,同样体现的是整体和个体的关系(单这里的这整体和个体是不可以分离的,即个体是整体的一部分,例如汽车上的引擎),所以这种关系比聚合更强,是一种contrains-a的关系,也成为强聚合。一旦整体对象不存在,部分对象也不存在,部分和整体具有相同的生命周期。代码上同样表现为A类中的成员变量是用B类中声明的变量,并且B对象在A对象创建的时刻创建。

在UML图中用带实心菱形头和箭头的实线表示聚合,菱形头端指向A类,箭头端指向B类。组合和聚合都有“一个对象包含一个或多个对象”的意思,但是组合意味着被包含对象是包含对象的一部分,而聚合意味着被包含对象更像是一个集合。我们可以认为组合是一种非共享的关联,被包含对象的生存周期由包含对象控制。

在这里插入图片描述
Car.java

public class Car{
private Engine engine;
public Car(){
engine = new engine();
}
public Train getEngine(){
return engine;
}
public void start(){
engine.start();
} }

Engine.java

public class Engine{
public void start(){

}
}

发布了73 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hello250sunshine/article/details/105221773