Advertisement
Guest User

Exam2014_Task2

a guest
Sep 8th, 2015
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.68 KB | None | 0 0
  1. /*
  2. აბსტრაქტული კლასი Shape შეიცავს ორ წმინდა ვირტუალურ ფუნქციას : printName, area; Shape კლასის საფუძველზე აგებულია
  3. კონკრეტული კლასები Circle და Rectangle. ყოველ კონკრეტულ კლასში printName ფუნქციის დანიშნულებაა კონკრეტული
  4. გეომეტრიული ფიგურის სახელის ბეჭდვა, ხოლო area-სი კიდევ ფართობის გამოთვლა.  დაწერეთ პროგრამა,
  5. რომელიც მოახდენს კლასების მოცემული იერარქიის ტესტირებას.
  6.  
  7. ა) შექმნის Circle კლასის ობიექტს რადიუსით 5 და გამოიყენებს მისთვის printName და area ფუნქციებს.
  8. ბ) დინამიკურად შექმნის სხვადასხვა ფიგურის რამდენიმე ობიექტს და Shape კლასზე პოინტერების მასივის გამოყენებით
  9. დაბეჭდავს ყველა ფიგურის დასახელებას და ფართობს.
  10. */
  11.  
  12. #include<iostream>
  13.  
  14. using namespace std;
  15.  
  16. class Shape{
  17. public:
  18.     Shape(){}
  19.     ~Shape(){}
  20.     virtual void printName() = 0;
  21.     virtual double area() = 0;
  22. };
  23.  
  24. class Circle :public Shape{
  25. private:
  26.     double radius;
  27. public:
  28.     Circle(){ radius = 5; }
  29.     ~Circle(){}
  30.     Circle(double r){ radius = r; }
  31.     virtual void printName(){
  32.         cout << "I am circle " ;
  33.     }
  34.  
  35.     virtual double area(){
  36.         return 2.14159*radius*radius;
  37.     }
  38. };
  39.  
  40. class Rectangle :public Shape{
  41. private :
  42.     double x, y;
  43. public:
  44.     Rectangle(){ x = 0; y = 0; }
  45.     ~Rectangle(){}
  46.     Rectangle(double xx, double yy){
  47.         x = xx; y = yy;
  48.     }
  49.  
  50.     virtual void printName(){
  51.         cout << "I am rectangle ";
  52.     }
  53.  
  54.     virtual double area(){
  55.         return x*y;
  56.     }
  57. };
  58.  
  59. int main(){
  60.  
  61.     Circle* c = new Circle(5);
  62.  
  63.     cout << "Print info about circle " << endl;
  64.     c->printName();
  65.     cout << "Area = " << c->area() << endl;
  66.  
  67.     Circle* c1 = new Circle(7.7);
  68.     Rectangle* r1 = new Rectangle(4, 9.3);
  69.     Rectangle* r2 = new Rectangle(1.4, 3.3);
  70.  
  71.     Shape* shapes[3];
  72.  
  73.     shapes[0] = r1;
  74.     shapes[1] = r2;
  75.     shapes[2] = c1;
  76.  
  77.     for (int i = 0; i < 3; i++){
  78.         shapes[i]->printName();
  79.         cout << "Area = " << shapes[i]->area() << endl;
  80.     }
  81.  
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement