Демонстрация на наследяване

Програмата, която писахме в часа:

#include <iostream>
#include <windows.h>

using namespace std;

const float pi=3.14;

// Точка (координати X, Y)
class tochka {
public:
  float x, y;
  void vhod();
  void pechat() const;
};

void tochka::vhod() 
{
  cout<<"Vavedete x i y:";
  cin>>x>>y;
}

void tochka::pechat() const
{
  cout<<"Tochka ("<<x<<","<<y<<")\n";
}

// Окръжност (радиус, обиколка)
class okraznost: public tochka
{
public:
  float r;
  float obikolka() const;
  void vhod();
  void pechat() const;
};

void okraznost::vhod()
{
  tochka::vhod();
  cout<<"vavedete radius:";
  cin>>r;
}

void okraznost::pechat() const
{
  cout<<"Okraznost s centar\n";
  tochka::pechat();
  cout<<"i radius "<<r<<endl;
}

float okraznost::obikolka() const
{
  return 2*pi*r;
}
 
// Кръг (лице)
class krug: public okraznost
{
  float lice() const;
};

float krug::lice() const
{
  return pi*r*r;
}

// Пръстен (радиус на отвора, лице на пръстена)
class prasten: public krug
{
public:
  float ro;
  float lice() const;
  void vhod();
  void pechat() const;
};

float prasten::lice() const
{
  return pi*r*r - pi*ro*ro;
}

void prasten::vhod()
{
  okraznost::vhod();
  cout<<"Vavedete radius na otvora:";
  cin>>ro;
}

void prasten::pechat() const
{
  cout<<"Parsten s centar\n";
  tochka::pechat();
  cout<<"i radiusi "<<r<<" i "<<ro<<endl;  
}

int main(int argc, char *argv[]) {
  // демонстрация на класа okraznost
  okraznost b;
  b.vhod();
  b.pechat();
  cout<<endl;
   
  // присвояване на клас-наследник към родителски
  tochka a=b;
  a.pechat();
  cout<<endl;

  // демонстрация на класа krug
  krug c;
  c.vhod();
  c.pechat();
  cout<<endl;

  // демонстрация на класа pechat
  prasten d;
  d.vhod();
  d.pechat();
  cout<<endl;
  
  system("pause");
  return 0;
}
Публикувано в 12а с етикети . Постоянна връзка.

Вашият коментар