Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Абстрактный базовый класс + виртуальные функции


Автор: 14SatanA88 1.12.2010, 11:49
Доброго времени суток, уважаемые программеры!
Понимаю, что прошу многого, но сам в этом задании ни черта не могу разобраться.


Общие требования к разрабатываемому программному решению:
?    вывод на экран;
?    методы получения значений полей;
?    методы установки значений полей;
?    необходимые конструкторы (если это не указано в задании явно).
Конструкторы и методы обязательно должны проверять параметры на допустимость; в случае  неправильных данных – выводить сообщение об ошибке и заканчивать работу.
Для демонстрации работы с объектами нового типа во всех заданиях написать главную функцию. В программе должны присутствовать различные способы создания объектов, массивов объектов. Программа должна демонстрировать использование всех функций и методов.
В следующих заданиях реализовать абстрактный базовый класс, определив в нем чистые виртуальные функции.
Кроме указанных выше требований к разрабатываемому программному коду, в основную программу, использующую объект созданного класса написать код, в котором отображены возможности использования объектов этих классов в динамической памяти.
Создать абстрактный базовый класс Body (тело) с виртуальными методами вычисления площади поверхности и объема. Создать производные классы: Parallelepiped (параллелепипед) и Ball (шар) со своими функциями площади поверхности и объема.

Буду очень благодарен, если Вы поможете с примерами либо объясните мне суть этой задачи.

Автор: RastaDja 1.12.2010, 12:22
абстрактный класс

Код

Class Body{
public:
   virtual void Draw() = 0;   //вывод
   virtual int Area() = 0      //площадь
   virtual int Volume() = 0  //обьем
}


класс Parallelepiped
Код

Class Parallelepiped :public Body{
public:
   int a, b, c;   //длины сторон
   Parallelepiped(){
       a=0;
       b=0;
       c=0;
   }
   Parallelepiped(int pa, int pb, int pc){
       a=pa;
       b=pb;
       c=pc;
   }

   void newData(int pa, int pb, int pc){//изменение данных
        a=pa;
        b=pb;
        c=pc;
    }

   void Draw() {   //вывод
       cout<< "a="<<a <<" b="<<b<<" c="<<c<<;
   }
   int Area() {      //площадь
       return 2*(a+b+c);
   }
   int Volume(){  //обьем
      return a*b*c;
   }
}


кля шара аналогично

Автор: 14SatanA88 1.12.2010, 13:26
RastaDja,  огромное спасибо!

Автор: RastaDja 1.12.2010, 15:09
незачто

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)