UML之类图
来源:互联网 发布:urllib2 post json 编辑:程序博客网 时间:2024/05/14 18:53
UML图中类之间的关系包括:泛化(Generalization)[继承], 实现(Realization)[接口实现], 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency)。
这些也是画类图的重点!
类的特点:
1. 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。
2. 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。
3. 类的属性即类的数据职责,类的操作即类的行为职责
类图:分为三层 类名 属性 方法 (图一是Visio的,图二是rose的)
Visio图中的加号(+)表示public;减号(-)表示private;#号表示protected;
rose图中的有锁的:表示private,有个钥匙标识的:表示protected,都没有的:表示public
Visio画类图的时候:双击类图对象,弹出UML类属性对象页面,其中类对应着类名,特性对应着类图的属性,操作对应着类图中的方法。
其中需要给方法添加参数时:操作-属性-参数!!!!就可以添加了!!!
一、依赖关系(Dependence)
依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。
- public class Driver
- {
- public void drive(Car car)
- {
- car.move();
- }
- ……
- }
- public class Car
- {
- public void move()
- {
- ......
- }
- ……
- }
依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化;
二、泛化关系(Generalization)
泛化关系(Generalization):A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)
- public class Person
- {
- protected String name;
- protected int age;
- public void move()
- {
- ……
- }
- public void say()
- {
- ……
- }
- }
- public class Student extends Person
- {
- private String studentNo;
- public void study()
- {
- ……
- }
- }
在UML当中,对泛化关系有三个要求:
1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
2、子类中除了与父类一致的信息以外,还包括额外的信息;
3、可以使用父类的实例的地方,也可以使用子类的实例;
三、关联关系(Association)
关联关系(Association):类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联(下图所示)。
- public class Customer
- {
- private Product[] products;
- ……
- }
- public class Product
- {
- private Customer customer;
- ……
- }
- public class Customer
- {
- private Address address;
- ……
- }
- public class Address
- {
- ……
- }
- public class Node
- {
- private Node subNode;
- ……
- }
表示方式
多重性说明
1..1
表示另一个类的一个对象只与一个该类对象有关系
0..*
表示另一个类的一个对象与零个或多个该类对象有关系
1..*
表示另一个类的一个对象与一个或多个该类对象有关系
0..1
表示另一个类的一个对象没有或只与一个该类对象有关系
m..n
表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n)
- public class Form
- {
- private Button buttons[];
- ……
- }
- public class Button
- {
- …
- }
四、聚合关系(Aggregation)
聚合关系(Aggregation):表示的是整体和部分的关系,整体与部分 可以分开.
- public class Car
- {
- private Engine engine;
- public Car(Engine engine)
- {
- this.engine = engine;
- }
- public void setEngine(Engine engine)
- {
- this.engine = engine;
- }
- ……
- }
- public class Engine
- {
- ……
- }
如:电话机包括一个话筒
电脑包括键盘、显示器,一台电脑可以和多个键盘、多个显示器搭配,确定键盘和显示器是可以和主机分开的,主机可以选择其他的键盘、显示器组成电脑;
五、组合关系(Composition)
组合关系(Composition):也是整体与部分的关系,但是整体与部分不可以分开.
- public class Head
- {
- private Mouth mouth;
- public Head()
- {
- mouth = new Mouth();
- }
- ……
- }
- public class Mouth
- {
- ……
- }
如:公司和部门,部门是部分,公司是整体,公司A的财务部不可能和公司B的财务部对换,就是说,公司A不能和自己的财务部分开; 人与人的心脏.
六、实现关系(Implementation)
实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。
- public interface Vehicle
- {
- public void move();
- }
- public class Ship implements Vehicle
- {
- public void move()
- {
- ……
- }
- }
- public class Car implements Vehicle
- {
- public void move()
- {
- ……
- }
- }
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
下面这张UML图,比较形象地展示了各种类图关系:
- 【UML】UML之类图
- uml图之类图
- UML图之类图
- UML之类图
- UML学习之类图
- UML学习之类图
- UML之类图
- UML之类图
- UML之类图
- UML之类图关系
- UML之类图
- UML之类图
- UML之类图
- UML之类图
- UML之类图
- UML之类图
- UML之类图
- UML之类图
- 并发编程专题
- ImageLoader的使用
- 为自己选择一个英文名字
- 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position问题
- cursor 与refcursor及sys_refcursor的区别 (转载)
- UML之类图
- ucos ii学习笔记(1):任务Task
- MongoDB 分片
- 小白学算法2.4——希尔排序
- Asp.net使用JQuery实现评论的无刷新分页及分段延迟加载效果
- 浅析ajax
- 日志显示请立即升级固件
- spring注解和一些配置
- CSS入门(11)-制作下拉式菜单