UML类图和时序图

一、类图示例

uml_class_struct.jpg
  • 车的类图结构为<>,表示车是一个抽象类;
  • 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
  • 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;
  • 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
  • 学生与班级之间是聚合关系,使用带空心箭头的实线表示;
  • 学生与身份证之间为关联关系,使用一根实线表示;
  • 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;

1.实现关系

uml_realize.jpg
interface B
class A

A implements B

2.继承关系

uml_generalization.jpg
class B
class A

A extends B

3.聚合关系 has-a

概念:关联的一种特例,是强的关联关系,聚合是整体和个体之间的关系。整体和个体可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象所共享。


uml_aggregation.jpg
class Student {
}
public class School{
  private Student mStudent;
}

4.组合关系

概念:关联的一种特例,整体和部分的关系,即contains-a的关系,部分与整体的生命周期一致,整体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。
表示方法:实心的菱形箭头,也可以没有箭头


uml_composition.jpg
public abstract class Human {
    protected Leg mLeg;
    protected Hand mHand;
    protected Head mHead;
    ...
}
不同于聚合关系,人类的手,脚是不可以属于其他类的

5.依赖

概念:一种使用关系,一个类的实现需要另一个类的协助
表示方法:虚线箭头,需要依赖的类A指向依赖的类B


uml_dependency.jpg
class Driver extends Human{

    public void drive(){
        
    }
}
public class Car {
    public void run(Driver driver){
        driver.drive();
    }
}

6.关联

概念:比依赖关系更强烈,关系不是临时的,是长期性的
表示方法:实线箭头,可以是双向的

uml_association.jpg
class Student {
}
public class Teacher {
  private Student mStudent;
  
}

二、时序图示例

v2-1836b67bd117d0709c91ca100a084866_hd.jpg
  • 一开始用户给类型为GUI(界面)的Login对象发送一个登录信息 「 login(userName,passWord)」 ;
  • Login这个对象接收到了就会产生活动条,这时候Login这个界面会给类型为Controller的loginController发送登录信息「 login(userName,passWord)」 ;
  • 此时loginController接收到信息产生活动条,这时候loginController去找类型为DB的UserDao,给它发送了一个获取用户密码的信息「getUserPassword(userName)」;
  • UserDao接收到信息后产生活动条,返回用户的密码;
  • 此时loginController接收到信息(用户的密码 userPassword),loginController此刻将信息发送给自己,通过verify去校验密码并且用result接收结果;
  • 校验就产生了分支控制流,当resul为true的时候loginController会发送success给Login,当result为false的时候,loginController会发送failure给Login;
  • 最后Login最后给用户发送messag信息。

时序图的组成部分

  • 对象
  • 生命线
  • 活动条
  • 消息
  • 控制流
1、对象

对象在矩形里边,左边是对象名称,右边是对象类型,下方还有一条线:


v2-f665dd015c61cbd78b3e79cc1567bc71_hd.jpg
对象的排列顺序

1.对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交互频繁的对象尽可能的靠拢;
2.把初始化整个交互活动的对象放置在最左端。

2、生命线

在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。


v2-9a97b487f8663bfeb1186967848a8666_hd.jpg
3、活动条

活动条是一个竖着的矩形,当接收到消息的时候,这个对象就会有活动条:


v2-452a9276c3f653d107f0c768d00b5a5c_hd.jpg
4、消息

消息用一根箭头,箭头上面写上消息信息,例如一个登录方法 login(userName,passWord):
消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message)。

  • 消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义;
  • 消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
  • 返回消息表示从过程调用返回。
v2-10c8973c4fd5e19d90973c7eb0a69247_hd.jpg
5、控制流
8BnackesskIT5WYJI6Kf.png!v.jpg
KkHPoU1dR0AY4sLbzlc5.png!v.jpg
  • 抉择(Alt)


    W2K7C5yR1D45SVvZXY18.png!v.jpg
  • 选项(Opt)


    E59nJupftrA2PQVJNAVG.png!v.jpg
  • 循环(Loop)


    8RrbcwlfkOWs6kcsG47A.png!v.jpg
  • 并行(Par)


    7wl54XDbyKX4A6NCU2Ok.png!v.jpg

你可能感兴趣的:(UML类图和时序图)