Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей Java

Алексей Пахомов Ученик (131), на голосовании 9 месяцев назад
Я прохожу курс на степике по Java. Попалась такая задача:
Создайте проект, в котором будет реализована иерархия классов (с наследованием!) любого транспорта. Так же создайте интерфейсы для работы с некоторыми из них. Например, автобус и троллейбус являются представителями общественного транспорта (общественный транспорт можно реализовать в качестве интерфейса), а танк и истребитель - военная техника. Так же примером хорошего интерфейса может являться паровая техника! Например, паровоз и пароход будут явно унаследованы от разных классов, но и один и другой работает на пару. Подумайте, какую структуру пакетов удобно использовать. Подключите к вашему проекту Git репозиторий. Делайте коммиты в ключевых точках, а в конце разработки проекта сделайте push в удалённый репозиторий.
Я организовал все так:Сделал пакеты для: военного, частного, общественного транспорта и интерфейсов.
Сделал абстрактный класс Transport от которого наследуется весь транспорт.
Затем сделал классы самолетов, машин, кораблей и.т.д. в каждом пакете. Почему я сделал именно так:
Мне показалось, что если интерфейсы и пакеты поменять местами - будет неудобно т.к. вертолет может быть как военным, так и частным. И так со всем. Но в моем варианте меня смущают интерфейсы. Есть ли от них вообще смысл, в этом варианте?

Я запутался. Подскажите как лучше сделать( Заранее всем спасибо.
Ответы GPT прошу не присылать. Мне интересный ответы людей, а не GPT.
Голосование за лучший ответ
Катя Левкович Профи (731) 10 месяцев назад
Да, интерфейсы имеют смысл в данном случае, так как они представляют абстрактные воздушные, например, или водные транспорты. Вследствие этого в воображаемом проекте, где использовалась бы ваша иерархия классов, можно было бы работать с интерфейсом AirTransport, к примеру, не зная с самого начала, какая именно реализация воздушного транспорта окажется под капотом. То есть можно было бы помещать разные объекты, реализующие интерфейс AirTransport, прямо во время выполнения программы.
Это называется полиморфизмом - один из китов ООП, о которых можно почитать здесь . Работаем одними и теми же способами с разными объектами.
Андрей Панарин Искусственный Интеллект (249285) 10 месяцев назад
Я бы сделал интерфейсы в пакете transport, а реализации - в дочерних пакетах без упоминания слова transport. Представьте, как их будут импортировать:
 import com.program.transport.AirTransport;
import com.program.transport.personal.Car;
Вместо private пишу personal, так как private - зарезервированное слово в языке Java.
Александр Искусственный Интеллект (301580) 10 месяцев назад
в данном задании не говорят что есть одно и только одно верное решение.
главное чтобы ты продемонстрировал умение работать с интерфейсами, с наследованием и пр.
можно было сгруппировать по типу (воздушный, наземный, поезда, водный...), сделав для этого какой-нибудь enum, например TransportType, и в классе поле под этот тип...
если попробуешь задумываться как вся твоя техника будет храниться в базе данных, то поймёшь что лучше... но этот вопрос не в рамках твоей задачи
Похожие вопросы