欢迎和我一起来做一个人不傻,钱很多,活得久的快乐的程序员
元(本人的叫法)是对于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(){
…
}
}