Просьба помочь с идеей по ООП
От: sobakam  
Дата: 29.09.12 12:35
Оценка:
Приветствую!
Есть задание по ООП, программа-поезд.
Определить иерархию вагонов и локомотивов. Создать несколько
объектов. Собрать поезд с определением его общей грузоподъемности или числа
пассажиров.
В принципе ничего сложного, но встает вопрос как лучше хранить объекты локомотивов и вагонов для поезда.
Сначала подумал сделать 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>();

хотя в данном случае мы скрываем реализацию для конкретных объектов и придется довольствоваться
инструментами интерфейса (абстрактного класса), либо делать нисходящее преобразование...
Прошу помочь с идеей, каким образом лучше организовать класс поезда для хранения в нем локомотивов и вагонов,
приветствую критику!
Re: Просьба помочь с идеей по ООП
От: Аноним  
Дата: 30.09.12 07:50
Оценка: :)
Два класса: состав и единица состава. Ну еще может быть енум завести Лоокомотив|Паасажирский Вагон|Грузовой Вагон| чтобы тип единицы состава константами не хранить. С наследованием и прочей оопешной бредятиной не связывайтесь, настанет война и пассажирский вагон сможет перевозить грузы и товарняк в грузовых вагонах сможет перевозить людей.
Re[2]: Просьба помочь с идеей по ООП
От: insighter ОАЭ  
Дата: 30.09.12 08:26
Оценка:
функциональные вагоны нас спасут? )

А>Два класса: состав и единица состава. Ну еще может быть енум завести Лоокомотив|Паасажирский Вагон|Грузовой Вагон| чтобы тип единицы состава константами не хранить. С наследованием и прочей оопешной бредятиной не связывайтесь, настанет война и пассажирский вагон сможет перевозить грузы и товарняк в грузовых вагонах сможет перевозить людей.
java шараги -> enterprise галеры, банки -> highload microservices + bigdata/ml
Re: Просьба помочь с идеей по ООП
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 30.09.12 08:29
Оценка:
Локомотив это не locomotion, а locomotive. Locomotion означает "передвижение".
Ce n'est que pour vous dire ce que je vous dis.
Re: Просьба помочь с идеей по ООП
От: Аноним  
Дата: 30.09.12 08:40
Оценка:
Здравствуйте, sobakam, Вы писали:

S>Приветствую!

S>Есть задание по ООП, программа-поезд.
S>Определить иерархию вагонов и локомотивов. Создать несколько
S>объектов. Собрать поезд с определением его общей грузоподъемности или числа
S>пассажиров.

...
S>Потом появилась мысль объединить и вагоны и локомотивы для поезда под одним интерфейсом,
S>то есть абстрактные классы локомотива и вагона унаследовались еще и от VehiclesSet (единицы
S>подвижного состава)

S>public List<VehiclesSet> trainSet = new ArrayList<VehiclesSet>();


S>хотя в данном случае мы скрываем реализацию для конкретных объектов и придется довольствоваться

S>инструментами интерфейса (абстрактного класса), либо делать нисходящее преобразование...
S>Прошу помочь с идеей, каким образом лучше организовать класс поезда для хранения в нем локомотивов и вагонов,
S>приветствую критику!

Добавь в свой элемент подвижного состава
1. вместимость пассажиров (непр 100чел)
2. грузоподъёмность (напр 60т)
3. длинна
4. вес (20т)
5. мощность (напр 10,8, [МВт])
6. тяга (напр 78тонн, для локомотива >0 для вагонов <0 (~ -1тонна))

И потом можешь собирать поезд. Из критерия ограничения мощности на контактный провод, ограничения по длине станций и положительной тяги.
Всё что с положительной тягой в начало состава. Остальное сортируешь по другим критериям.
Re: Просьба помочь с идеей по ООП
От: sobakam  
Дата: 01.10.12 10:50
Оценка:
Всем огромное спасибо!
Да, Locomotion это я борщанул конечно
Короче долго думал думал и оставил таки 2 массива...
Просто потому, что локомотив и вагон какбы слишком разные объекты.
Локомотив не имеет полезной так сказать вместимости и не может перевозить полезный груз в отличие от вагона,
еще он имеет двигатель, и еще в расчетах грузоподъемности поезда его масса минусуется по идее.
В принципе мы то со своей программерской высоты можем плевать как хотим, но мне просто стремно,
что проверяющий обругает, если я эти вагоны и локомотивы солью воедино
Re: Просьба помочь с идеей по ООП
От: ResidentR6  
Дата: 02.10.12 22:00
Оценка:
Вагоны и локомотивы должны быть наследниками единого класса (или
интерфейса). Например "вагон". С методами "прицепить", "отцепить".
Например к поезд можно включить несколько локомотивов. Они имеют свой
вес! Притом и пассажирские тоже.

Отдельный класс "поезд", который содержит в себе вагоны. И он может быть
и без локомотивов. И должен быть метод, возвращающий текущий локомотив.
И класс знает какого типа поезд (пассажирский или грузовой). У поезда
может быть график следования (отдельный класс, с пунктами назначения), а
может и не быть.

У локомотива должны быть машинист и т.п., и в поезде должен быть метод
получения машиниста (в реализации берущие его в локомотиве). Также может
быть назначение (маневровый тепловоз, локомотив элекропоезда...).




Кстати, тебе снизят оценку если назовёшь хоть одно свойство "вид", "тип"
или "класс". А в реальном программировании за это бьют ногами. Потому
что только автору известно, что скрывается за словом "тип" — например
это "товарный/пассажирский" или "скорый/пассажирсикий"? Называй любыми
другими, смысловыми словами, а вот эти — табу!

PS. Не делай лишнего. Этого вполне достаточно, чтобы показать знания.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.