Всем здравствуйте, задали задачку на построение иерархии, Создал класс Port
public class Port extends Ship{
    private Ship[] ships;
    private int count;

    public Port(int count) {
        if (count < 0){
            System.out.println("Ошибка! Нет кораблей!");
        } else {
            this.ships = new Ship[count];
        }
    }

    private void add(Ship ship) {
        if (count >= 10) {
            System.out.println("В порту максимумум 10 кораблей");
        } else {
            count++;
        }
    }

    private void delete(String name) {
        if (count <= 0) {
            System.out.println("Ошибка кораблей нет");
        } else {
            count--;
        }
    }
}
И класс Container
public abstract class Container {
    private double waterValue;
    private double hightContainer;
    private int baseConeBig;
    private int baseConeSmall;
    private int baseSquareBig;
    private int baseSquareSmall;
    private int baseCylinderBig;
    private int baseCylinderSmall;

    public Container() {
    }

    public double getWaterValue() {
        return waterValue;
    }

    public void setWaterValue(double waterValue) {
        this.waterValue = waterValue;
    }

    public double getHightContainer() {
        return hightContainer;
    }

    public void setHightContainer(double hightContainer) {
        this.hightContainer = hightContainer;
    }

    public int getBaseConeBig() {
        return baseConeBig;
    }

    public void setBaseConeBig(int baseConeBig) {
        this.baseConeBig = baseConeBig;
    }

    public int getBaseConeSmall() {
        return baseConeSmall;
    }

    public void setBaseConeSmall(int baseConeSmall) {
        this.baseConeSmall = baseConeSmall;
    }

    public int getBaseSquareBig() {
        return baseSquareBig;
    }

    public void setBaseSquareBig(int baseSquareBig) {
        this.baseSquareBig = baseSquareBig;
    }

    public int getBaseSquareSmall() {
        return baseSquareSmall;
    }

    public void setBaseSquareSmall(int baseSquareSmall) {
        this.baseSquareSmall = baseSquareSmall;
    }

    public int getBaseCylinderBig() {
        return baseCylinderBig;
    }

    public void setBaseCylinderBig(int baseCylinderBig) {
        this.baseCylinderBig = baseCylinderBig;
    }

    public int getBaseCylinderSmall() {
        return baseCylinderSmall;
    }

    public void setBaseCylinderSmall(int baseCylinderSmall) {
        this.baseCylinderSmall = baseCylinderSmall;
    }
}
Не могу понять как реализовать наполнение водой, "пригонять корабли", как реализовать подклассы родительского класса Container Как поместить эти контейнеры после на палубу, а палубу на корабль. Если можно натолкните на правильное решение данной задачи или как правильно ее реализовать. Здесь на сайте всё так легко обьясняли на примере с телефонами, а когда столкнулся с реальной задачей, уже возникают трудности. Большое спасибо.