Упражнение No 2

Класове и обекти

Пример 1: Да се дефинира клас за фигура от равнината – ТРИЪГЪЛНИК. Член-променливите на класа са дължините на трите страни на триъгълника: a, b, c. Член-функциите включват функции за: въвеждане на дължините на трите страни на триъгълника sides(); изчисляване на лицето на триъгълника face(); извеждане на информация за страните на триъгълника show(). Да се състави главна функция main(), която тестува класа triangle, като създава обект от този клас, указател към обект от същия клас и извиква член-функциите на класа, веднъж посредством името на обекта и втори път посредством указателя към същия обект.

#include <iostream.h>
#include <math.h>
class triangle {       // Начало на декларацията на клас triangle
        private:               // Капсулиране на член-променливите
        float a,b,c;           // Член-данни на класа
        public:                // Свободен достъп до член-функциите
        void sides();          // Декларация на член-функция
        float face( );         // Декларация на член-функция
        void show(char *);     // Декларация на член-функция
};                             // Край на декларацията на класа
void triangle::sides()         // Дефиниция на член-функция
{       do
        {       cout << "\nВъведете трите страни на триъгълника: ";
               cin >> a >> b >> c;
        }
        while(!((a>0)&&(b>0)&&(c>0)&&((a+b)>c)&&((a+c)>b)&&((b+c)>a)));
}
float triangle::face()         // Дефиниция на член-функция
{       float p, s;
        p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c));
        return s;
}
void triangle::show(char *name)// Дефиниция на член-функция
{       cout << "Страни на триъгълника " << name << " :\n";
        cout << "a=" << a << ", b=" << b << ", c=" << c;
}                              // Край на дефиницията на клас triangle
void main()
{
   triangle alfa;      // Създава се обект alfa от клас triangle
   alfa.sides();       // Извиква се член-функция sides() за обект alfa
   float s;
   s=alfa.face();      // Извиква се член-функция face() за обект alfa
   alfa.show("АЛФА");// Извиква се член-функция show() за обект alfa
   cout << "\ns=" << s ;// Извежда се лицето на триъгълника alfa
   triangle *beta;// Декларира се указател към обект от клас triangle
   beta =&alfa; // Установява се указателят 
                                                                                                     // така че да сочи към триъгълника alfa
   beta->sides();      // Извиква се член-функция sides() за обект alfa
   s=beta->face();     // Извиква се член-функция face() за обект alfa
   beta->show("АЛФА");// Извиква се член-функция show() за обект alfa
   cout << "\ns=" << s;// Лице на триъгълника alfa
}

 

 

 

Модификации

1.      Да се модифицира дефиницията на клас triangle от Пример 1, като досегашната член-функция sides() се преименува по името на класа и се превърне по този начин в конструктор. Да се добави нова член-функция – деструктор, която да извежда съобщение за разрушаване на обект. Да се състави главна функция main(), която създава обект от клас triangle и тестува конструктора и деструктора.

2.      Да се модифицира клас triangle, като освен конструктор, деструктор и член-функции show() и face(), се добавят член-функции за изчисляване на радиусите на описаната и вписаната окръжности, които да се обявят за private и да се извикват от член-функция face(). Да се състави главна функция main(), която тестува класа, като създава 3 обекта и извиква член-функциите show() и face () за всеки от тях.