Приветствую!
Есть задание по ООП, программа-поезд.
Определить иерархию вагонов и локомотивов. Создать несколько
объектов. Собрать поезд с определением его общей грузоподъемности или числа
пассажиров.
В принципе ничего сложного, но встает вопрос как лучше хранить объекты локомотивов и вагонов для поезда.
Сначала подумал сделать 2 массива:
public class Train {
private boolean prepared;
private String name;
private String type;
private List<AbstractWagon> wagons = new ArrayList<AbstractWagon>();
private List<AbstractLocomotion> locomotions = new ArrayList<AbstractLocomotion>();
...
Сейчас структура программы такова:
Есть абстрактный класс для локомотивов, от которого наследуются конкретные локомотивы,
грузовой и пассажирский.
Есть абстрактный класс вагонов, от которого наследуются 4 вида вагонов, крытый, платформа,
пассажирский, цистерна...
Потом появилась мысль объединить и вагоны и локомотивы для поезда под одним интерфейсом,
то есть абстрактные классы локомотива и вагона унаследовались еще и от VehiclesSet (единицы
подвижного состава)
public List<VehiclesSet> trainSet = new ArrayList<VehiclesSet>();
хотя в данном случае мы скрываем реализацию для конкретных объектов и придется довольствоваться
инструментами интерфейса (абстрактного класса), либо делать нисходящее преобразование...
Прошу помочь с идеей, каким образом лучше организовать класс поезда для хранения в нем локомотивов и вагонов,
приветствую критику!