Aggregation: has-a (weak)
- Aggregation is a weak
has-a
relationship. - One class uses/contains another, but both can exist independently. The contained object can outlive the container or be shared among multiple containers.
- UML Notation:
o--
orHollow diamond (◇)
at the container class.Container-Class o-- Contained-Class
- Example: Car
has-a
Engine.
Car o-- Engine
Following the code, for more details:
// Car.java
package oops.aggregation;
public class Car{
Engine engineObj;
Car(Engine engineObj){
// Engine is passed from outside the Car
this.engineObj = engineObj;
}
public static void main(String[] args){
/*
* Note: that Engine is created outside class,
* And it is passed in during car-object creation.
*/
Engine engineObj = new Engine(2);
Car carObj = new Car(engineObj);
carObj.engineObj.drive();
carObj.engineObj.drive();
carObj.engineObj.drive();
}
}
//Engine.java
package oops.aggregation;
public class Engine {
private float fuel = 0;
Engine(float fuel){
this.fuel = fuel;
}
void drive(){
if(this.fuel <= 0){
System.out.println("Not Enough Fuel");
return;
}
System.out.println("Drove one unit");
this.fuel--;
}
}