dan*_*vic 12 java oop dependencies uml composition
依赖
类的结构或行为的变化会影响其他相关的类,然后这两个类之间存在依赖关系.它不一定相同,反之亦然.当一个类包含另一个类时,就会发生这种情况.
组成
组合是聚合的特例.以更具体的方式,受限制的聚合称为组合.当一个对象 包含另一个对象时,如果所包含的对象不存在而不存在容器对象,那么它就称为组合.
依赖
class Employee {
private Address address;
// constructor
public Employee( Address newAddress ) {
this.address = newAddress;
}
public Address getAddress() {
return this.address;
}
public void setAddress( Address newAddress ) {
this.address = newAddress;
}
}
Run Code Online (Sandbox Code Playgroud)
组成
final class Car {
private final Engine engine;
Car(EngineSpecs specs) {
engine = new Engine(specs);
}
void move() {
engine.work();
}
}
Run Code Online (Sandbox Code Playgroud)
mea*_*ers 22
可以在两个构造函数中看到差异:
依赖性:Address对象来自外部,它被分配到其他地方.这意味着Address和Employee对象分开存在,并且只相互依赖.
组成:在这里你看到里面Engine创建了一个新的.该对象是其中的一部分.这意味着,被构成的. CarEngineCarCarEngine
简单的说 :
多亏了Marko Topolnik...
Dependency当一个对象"依赖"另一个对象时发生.它可以在两个对象之间有或没有关系的情况下发生.实际上,一个对象可能甚至不知道另一个对象存在,但它们可能是依赖的.示例:生产者 - 消费者问题.生产者不需要知道消费者存在,但它必须做wait()和notify().所以,"不",依赖不是关联的子集.
Composition:是一种关联类型,其中"子"对象在没有父类的情况下不能存在.即,如果子对象存在,那么它必须在父对象中而在其他地方.
EG:汽车(父母)有燃油喷射系统(儿童).现在,在汽车外面安装燃油喷射系统是没有意义的(这是没用的).即,没有汽车就不能存在燃油喷射系统.
Aggregation:这里,子对象可以存在于父对象之外.一辆车有一个司机.司机CAN存在于车外.