С нуля до джуна #11
В понедельник был новый урок и мы проходили новую тему наследование. По ней мы делали такую задачу:
Есть класс машин, каждая машина в этом классе имеет марку, модель, год выпуска, тип мотора(бензин, дизель и электро). Для каждой машины есть объем двигателя, состояние мотора(запущен или заглушен). Нужно сделать класс для бензиновых машин, дизельных и электро, они наследуются от обычной машины. Функция, которая запускает или глушит машину, дизельную или бензиновую можно, а электро нельзя заглушить(по умолчанию true). Функция чтобы проехать машине(пробег). передаем пробег, выдать функцию что машина проехала пробег и + в пробег 10к, если пробег больше 100к, то больше ехать не может, сообщение о ремонте. Для дизельных 80к предел. Для электро 50к предел.
Решение:
Создаем функцию Car и добавляем туда все свойства и создаем конструктор, для типа мотора я решил использовать константы.
open - нужно для того чтобы можно было наследоваться к этому классу.
Далее создал 3 класса: ElectroCar, DieselCar, ElectroCar и прописал в каждом чтобы он наследовался от класса Car
для остальных также, только название класса другое.
В main файле создал объекты для каждой машины(все данные в основном ставил на рандом ибо лень гуглить, главное чтоб работало)
Далее создал в классе car функцию для вывода информации об машине чтобы проверить что все как надо работает:
пример вывода для электро машины:
все работает, можно продолжать
Сделал функции для старта и выключения машины(знаю что можно как то по правильному назвать типо зажигания или заглушение, но мне пофиг)
Опять же проверки, что если машина запущена/заглушена, то этого уже сделать нельзя, если это електро машина, то заглушить нельзя.
Пример:
Далее взялся за функцию с проверкой пробега:
в классе car создал основную функцию
open нужно опять же чтобы можно было наследоваться
впринципе уже можно проверять, но у каждого типа машины есть свой лимит пробега, а писать проверки на тип машины скучно, поэтому решил сделать по другому:
класс ElectroCar:
Override — это переопределение или модификация метода базового класса в его производном классе. Т.е. это нужно чтобы мы одну и ту же функцию могли менять в разных классах типа
Просто поменял на нужный лимит
DieselCar
GasolineCar
пусто, потому что его лимит стоит в функции класса Car, так что смысла изменять нет.
Ну собственно проверочка:
main
Еще:
main
и последнее:
main
На этом собственно все, все работает, можно отдыхать. Задачка не сложная, но довольно интересная. Возможно на следующей неделе будет долго выходить пост, т.к. я работаю и времени свободного на след. неделе практически не будет, сори.
Всем спасибо за внимание!
P.s. подписывайтесь на тг канал, там бывают новости из моей жизни