UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
依赖关系(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):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):类之间的联系,如客户和订单。每一个订单相应特定的客户,每一个客户相应一些特定的订单。再如篮球队员与球队之间的关联(下图所看到的)。
通常有“*”(表示全部,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个)。“n...m”(表示n到m个都能够),“m...*”(表示至少m个)。
- 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):表示的是总体和部分的关系,总体与部分 能够分开.
- 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):也是总体与部分的关系。可是总体与部分不能够分开.
- public class Head
- {
- private Mouth mouth;
- public Head()
- {
- mouth = new Mouth();
- }
- ……
- }
- public class Mouth
- {
- ……
- }
如:公司和部门,部门是部分,公司是总体,公司A的財务部不可能和公司B的財务部对换,就是说,公司A不能和自己的財务部分开; 人与人的心脏.
实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。
- public interface Vehicle
- {
- public void move();
- }
- public class Ship implements Vehicle
- {
- public void move()
- {
- ……
- }
- }
- public class Car implements Vehicle
- {
- public void move()
- {
- ……
- }
- }