1 public class Product {
 2     private String name;
 3     private double prize;
 4     private int number;
 5 
 6     Product(String name, double prize, int number) {
 7         this.name = name;
 8         this.prize = prize;
 9         this.number = number;
10     }
11 
12     public String getName() {
13         return name;
14     }
15     public double getPrize() {
16         return prize;
17     }
18     public int getNumber() {
19         return number;
20     }
21 }
 
 1 public class Factory {
 2     private Product product;    // factory produrces 1 product
 3 
 4     Factory(Product product) {
 5         this.product = product;
 6     }
 7 
 8     public double calculateTurnover() {
 9         return product.getNumber() * product.getPrize();
10     }
11 }
 
 1 import javax.xml.ws.FaultAction;
 2 import java.util.ArrayList;
 3 
 4 public class Company {
 5     private ArrayList<Factory> factories = new ArrayList<>();  // company holds * factories
 6 
 7     Company(ArrayList factories) {
 8         this.factories = factories;
 9     }
10 
11     public double calculateTotalTurnover() {
12         double totalTurnover = 0;
13         for (Factory factory: factories)
14             totalTurnover += factory.calculateTurnover();
15         return totalTurnover;
16     }
17 }
 
 1 import java.util.ArrayList;
 2 import java.util.Arrays;
 3 
 4 public class Main {
 5 
 6     public static void main(String[] args) {
 7         Factory f1 = new Factory(new Product("4 TiB Hard disk", 195.5, 7000));    // Composition
 8         Factory f2 = new Factory(new Product("250 GiB SSD", 149.9, 6000));
 9 
10         Company c1 = new Company(new ArrayList<Factory>(Arrays.asList(f1, f2)));  // Aggregation
11 
12         System.out.println(c1.calculateTotalTurnover());
13     }
14 }


Sequence diagram of company, factory and product

Last modified: Monday, 13 May 2019, 10:03 AM