一、类图示例

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

interface B
class A
A implements B
2.继承关系

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

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

public abstract class Human {
protected Leg mLeg;
protected Hand mHand;
protected Head mHead;
...
}
不同于聚合关系,人类的手,脚是不可以属于其他类的
5.依赖
概念:一种使用关系,一个类的实现需要另一个类的协助
表示方法:虚线箭头,需要依赖的类A指向依赖的类B

class Driver extends Human{
public void drive(){
}
}
public class Car {
public void run(Driver driver){
driver.drive();
}
}
6.关联
概念:比依赖关系更强烈,关系不是临时的,是长期性的
表示方法:实线箭头,可以是双向的

class Student {
}
public class Teacher {
private Student mStudent;
}
二、时序图示例

- 一开始用户给类型为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、对象
对象在矩形里边,左边是对象名称,右边是对象类型,下方还有一条线:

对象的排列顺序
1.对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交互频繁的对象尽可能的靠拢;
2.把初始化整个交互活动的对象放置在最左端。
2、生命线
在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

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

4、消息
消息用一根箭头,箭头上面写上消息信息,例如一个登录方法 login(userName,passWord):
消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message)。
- 消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义;
- 消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
- 返回消息表示从过程调用返回。

5、控制流


-
抉择(Alt)
W2K7C5yR1D45SVvZXY18.png!v.jpg
-
选项(Opt)
E59nJupftrA2PQVJNAVG.png!v.jpg
-
循环(Loop)
8RrbcwlfkOWs6kcsG47A.png!v.jpg
-
并行(Par)
7wl54XDbyKX4A6NCU2Ok.png!v.jpg
网友评论