未完成类之间的各种关系
Posted hmzmua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未完成类之间的各种关系相关的知识,希望对你有一定的参考价值。
一、依赖关系
假设A类的变化引起了B类的变化,就说明B依赖于A。
在UML图中,用虚线箭头表示类之间的依赖关系。
依赖关系有下面具体三种情况。
- 1、A类是B类中的局部变量,这时,A的变化能够引起B变化,说明B依赖A.
- 2、A类是B类方法中的一个参数,A变化同样能引起B变化。
- 3、A类向B类发送消息,这样A也能使B发生变化,也能说B依赖A。
public class Driver
public void drive(Car car) //类Car是Driver里一个方法的参数,说明Car的变化能带来Driver的变化,则说明Driver依赖Car
car.move();
public class Car
public void move()
...
二、泛化(继承)关系
A是B、C的父类,说明A是 B, C 的泛化。
在UML图中,泛化关系用实线空心三角形表示。在Java中,泛化关系用extends来实现。
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、可以使用父类的实例的地方,也可以使用子类的实例。
三、关联关系
类之间有关联,比如客户和订单,一个客户有很多订单,一个订单对应一个客户,这就说他们之间存在关联。
在UML中,关联关系使用实线来连接
关联,通常将一个类的对象作为另一个类的属性
- 1、双向关联
你中有我我中有你。
public class Customer
private Product [] products;
public class Product
private Customer customer;
- 2、单向关联
只有一个类中以另外一个类作为属性
用单向实心箭头表示。 - 3、自关联
一些类的属性对象类型为他自己 4、重数性关联:表示一个类的对象与另一个类的对象连接的个数
1..1 表示另一个类的一个对象只与一个该类对象有关系
0..* 表示另一个类的一个对象与零个或多个该类对象有关系
1..* 表示另一个类的一个对象与一个或多个该类对象有关系
0..1 表示另一个类的一个对象没有或只与一个该类对象有关系
m..n 表示另一个类的一个对象与最少m、最多n个该对象有关系
public class Form
private Button buttons[];
...
public class Button
...
四、聚合关系
表示整体和部分的关系。通常在定义了一个整体类后,再去分析这个整体类的组成结构,从中找出成员类,该整体类和成员类之间就形成了聚合关系。在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但成员对象可以脱离整体对象独立存在。
在UML图中,聚合关系用带空心菱形的直线表示
public class Car
private Engine engine;
public Car(Engine engine)
this.engine = engine;
public void setEngine(Engine engine)
this.engine = engine;
...
public class Engine
...
五、组合关系
也就是整和部分的关系,但是整体与部分不可以分开。部分和整体具有统一的生存期,一旦整体对象不存在,部分对象也将不存在。同生共死。
在UML中,组合关系常用带实心菱形的直线表示。
public class Head
private Mouth mouth;
public Head
mouth = new Mouth();
public class Mouth
...
六、实现关系
用来规定接口和实现接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。
这里没学到接口,先放一放
以上是关于未完成类之间的各种关系的主要内容,如果未能解决你的问题,请参考以下文章