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


Автор: Fil75 7.7.2006, 21:06
Добрый день. Помогите пожалуйста дописать программу-пример. Вот что у меня получилось.
#include <iostream.h>
class Insekt //насекомое
{
protected:
int laenge; //длина
int gewicht; //вес

public:
Insekt(int,int); //конструктор
virtual void Essen(); //метод еда
virtual void Ausgabe(); //вывод на экран
};

class Libelle : public Insekt //производный класс стрекоза
{
protected:
Libelle(int);
int fluegellaenge; //длина крыла
void Essen();

};
Insekt::Insekt(int l,int g) //инициализируем конструктор
{laenge=l; //длина
 gewicht=g; // вес
}

void Insekt::Essen() // описываем метод еда
{ laenge++; // увеличиваем длину
  gewicht++; // увеличиваем вес
}

void Insekt::Ausgabe() // метод вывод на экран
{
cout << "Eta Strekosa  " << laenge <<" cm dlinoy" <<endl;
cout << "i " << gewicht << " g vesom"<<endl;
}

Libelle::Libelle(int fl) //конструктор произв.класса
{   fluegellaenge=fl; }

Libelle::Essen()       //увеличиваем длину крыла
{   fluegellaenge++;}

void main()
{

char p[50];
cin.getline(p,50);
}
Написать производный класс Strekosa. Этот класс должен содержать дополнительно свойство fluegellaenge (длина крыла). Метод Essen() этого производного класса должен увеличивать fluegellaenge (длина крыла). Изменить метод Ausgabe() класса Insekt чтобы дополнительно выводить длину крыла. Написать Main(). Которая бы выводила на экран следущее.
“Eta Strekosa 20 cm dlinoy and 1 gramm massoy. Ona imeet dlinu krila 20 cm.
“Eta Strekosa 25 cm dlinoy and 6 gramm massoy. Ona imeet dlinu krila 25 cm.

Помогите дописать Main().
 

Автор: EEEEEE 7.7.2006, 23:43
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#include <conio.h>

#pragma hdrstop

//---------------------------------------------------------------------------
//                   Описание класса Насекомое
//---------------------------------------------------------------------------
class Insekt //насекомое
{
 protected:
          int laenge; //длина
          int gewicht; //вес

 public:
        Insekt(int,int)       ; //конструктор
        virtual void Essen()  ; //метод еда

};
//---------------------------------------------------------------------------
//                   Реализация класса Насекомое
//---------------------------------------------------------------------------
Insekt::Insekt(int l,int g) //инициализируем конструктор
{
 laenge=l; //длина
 gewicht=g; // вес
}
//...........................................................................
void Insekt::Essen() // описываем метод еда
{
 laenge++; // увеличиваем длину
 gewicht++; // увеличиваем вес
}
//===========================================================================


//---------------------------------------------------------------------------
//        Описание класса Стрекоза производного от класса Насекомое
//---------------------------------------------------------------------------
class Libelle : public Insekt //производный класс стрекоза
{
public:
          void Ausgabe(); //вывод на экран
          Libelle(int LengthOfDragonfly, int Weight, int LengthCovered);

protected:
          void Essen();
          int fluegellaenge; //длина крыла
};
//---------------------------------------------------------------------------
//          Реализация класса Стрекоза производного от класса Насекомое
//---------------------------------------------------------------------------
Libelle::Libelle(int LengthOfDragonfly, int Weight, int LengthCovered) :
          Insekt (Weight, LengthCovered)   //конструктор произв.класса
{
 fluegellaenge = LengthOfDragonfly;
}
//...........................................................................
void Libelle::Essen()       //увеличиваем длину крыла
{   fluegellaenge++;}

//...........................................................................
void Libelle::Ausgabe() // метод вывод на экран
{
// “Eta Strekosa 20 cm dlinoy and 1 gramm massoy. Ona imeet dlinu krila 20 cm.

 cout << "Eta Strekosa  " << laenge << " cm dlinoy and "
      << gewicht << " gramm massoy. Ona imeet dlinu krila "
      << fluegellaenge << " cm." << endl;
}
//===========================================================================

#pragma argsused
int main(int argc, char* argv[])
{
  Libelle  Dragonfly_1(20,1,20);
  Libelle  Dragonfly_2(25,6,25);
  cout << "==================================================== " << endl;
  Dragonfly_1.Ausgabe();
  cout << ".................................................... " << endl;
  Dragonfly_2.Ausgabe();
  cout << "==================================================== " << endl;

getch();




        return 0;
}
//---------------------------------------------------------------------------
 
 

Автор: Fil75 9.7.2006, 00:03
Спасибо за помощь. Попутно еще один небольшой вопрос. В задачнике имеется 
часть кода:  
dog  big_dog(a);
 Small_dog small_dog(b,c);
 dog *Liste[2];
 Liste[0]=&small_dog;
 Liste[1]=&big_dog;
Liste[0]->to_bark(); //лаять
Liste[1]->to_bark(); //лаять

Класс small_dog это производный класс от класса dog. В классе small_dog метод to_bark() – перегружается. Как будет описано полное имя методов которые в последних двух строках вызываются, при условии что метод to_bark() описан не как виртуальный(virtual) Укажите имя в следущей форме Имя класса::Имя метода
Я сделал так dog::to_bark();
Правильно ли так?
 

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