标签:情况下 的区别 三角形 结构化 生命周期 多个 形式 直线 之间
1 public class Driver 2 { 3 public void drive(Car car) 4 { 5 car.move(); 6 } 7 } 8 9 public class Car 10 { 11 public void move() 12 { 13 ... 14 } 15 }
如果在一个类的方法中调用了另一个类的静态方法,或者在一个类的方法中定义了另一个类的对象作为其局部变量,也是依赖关系的一种表现形式。
1 public class LoginForm 2 { 3 private JButton loginButton; 4 ... 5 } 6 7 public class JButton 8 { 9 ... 10 }
1 public class Customer 2 { 3 private Product[] products; 4 ... 5 } 6 7 public class Product 8 { 9 private Customer customer; 10 ... 11 }
1 public class Customer 2 { 3 private Address address; 4 ... 5 } 6 7 public class Address 8 { 9 ... 10 }
1 public class Node 2 { 3 private Node subNode; 4 ... 5 }
表示方式 |
多重性说明 |
1..1 |
表示另一个类的一个对象只与一个该类对象有关系 |
0..* |
表示另一个类的一个对象与零个或多个该类对象有关系 |
1..* |
表示另一个类的一个对象与一个或多个该类对象有关系 |
0..1 |
表示另一个类的一个对象没有或只与一个该类对象有关系 |
m..n |
表示另一个类的一个对象与最少m、最多n个该类对象有关系(m<=n) |
比如:一个界面(Form)可以拥有零个或者多个按钮(Buttom),但是一个按钮只能属于一个界面。
1 public class Form 2 { 3 private Button buttons[]; 4 ... 5 } 6 7 public class Button 8 { 9 ... 10 }
聚合关系(Aggregation)表示一个整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。
1 public class Car 2 { 3 private Engine engine; 4 public Car(Engine engine) 5 { 6 this.engine = engine; 7 } 8 9 public void setEngine(Engine engine) 10 { 11 this.engine = engine; 12 } 13 ... 14 } 15 16 public class Engine 17 { 18 ... 19 }
Car中定义了Engine类型的成员对象,Engine是Car的一部分,但是Engine可以脱离Car单独存在,因为在Car类中并没有直接实例化Engine,而是通过构造函数或者Setter方法将类外部实例化好的对象以参数形式传入Car中,这种方式成为注入。因为Engine和Car的实例化时刻不相同,因此它们之间不存在生命周期的制约关系仅仅只是部分与整体之间的关系。聚合关系表示整体与部分的关系较弱。
1 public class Head 2 { 3 private Mouth mouth; 4 public Head() 5 { 6 mouth = new Mouth(); 7 } 8 ... 9 } 10 11 public class Mouth 12 { 13 ... 14 }
1 public class Person 2 { 3 protected String name; 4 protected int age; 5 public void move() 6 { 7 ... 8 } 9 public void say() 10 { 11 ... 12 } 13 } 14 15 public class Student extends Person 16 { 17 private String studentNo; 18 public void study() 19 { 20 ... 21 } 22 }
1 public interface Vehicle 2 { 3 public void move(); 4 } 5 6 public class Ship implements Vehicle 7 { 8 public void move() 9 { 10 ... 11 } 12 } 13 14 public class Car implements Vehicle 15 { 16 public void move() 17 { 18 ... 19 } 20 }
标签:情况下 的区别 三角形 结构化 生命周期 多个 形式 直线 之间
原文地址:https://www.cnblogs.com/WindSun/p/10221737.html