Мне задали написать программу в С++ на тему "Наследование". Это когда у материнского класса свойства перенимает дочь класс и при этом изменяя дочь мы не меняем мать, а меняя мать мы меняем и дочь. Ну я думаю вы про это знаете, это базовая тема в С++.
Вот вариант который мне задали:
Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, CCar и CShip. Классы должны иметь возможность задавать и получать координаты, параметры средств передвижения (цена, скорость, год выпуска). Для самолета должна быть определенна высота, для самолета и каробля - колличество пассажиров. Для корабля - порт приписки.
Написать программу, создающую список обьектов этих классов в динамической памяти. Программа должна содержать меню, позволяющую осуществлять проверку всех методов класса.
Если у кого нибудь есть время, пожалуйста помогите, программа вроде не сложная. А то я не уверен что сам справлюсь.
Сообщение отредактировал mistik - Среда, 23 Мая 2012, 13:01
Добавлено (23.05.2012, 17:19) --------------------------------------------- или проверка это просто вызов методов с програм с последующим их выводом в консоль, а не обработка запросов из консоли?
Добавлено (23.05.2012, 17:19) --------------------------------------------- Так к чему тогда меню?
Не знаю, как на плюсах, а на шарпе я ничего сложного не вижу. В чем именно возникает затруднение? *Не убегай от снайпера, умрешь уставшим. *Мои статьи...
Ого "прямо пока запущена программа менять поля", врятли, как это вообще реализовать, создание новых полей класса рантайм? Видимо нужно в исходниках класса написать поля а потом просто задавать значения этих полей для дочерних классов.
mistik, абстрактный класс - должен иметь хотя бы один pure virtual method. Ты не можешь создавать объекты этого класса. У сабклассов пиши например class CPlane : CVehicle{...}; И должен обязательно имплиментиировать абстрактные методы в них. Чтоб overloading methods определялись динамически, перед функцией надо писать virtual. Например ты можешь хранить в поинтере от суперкласса объект сабкласса и если хочешь вызувать методы в зависимости от хранимого объекта, надо писать virtual.
P.S.: Для динамической памати лучше сделать copy constructor, overloading assignement operator и virtual destructor.
Вот как-то так, без переопределения методов базового класса в наследуемых (но этого в условии и не требуется), и с проверкой методов каждого класса вручную, а не через меню. О создании в динамической памяти, видимо имелось в виду через указатели.
Code
#include <iostream>
class cVechile { public: cVechile(){} virtual ~cVechile(){}
Добавлено (23.05.2012, 21:12) --------------------------------------------- Вообще работаю постоянно в QtSdk, но и в Code::Blocks прекрасно скомпилировалось.