Задача
Создайте иерархию классов Point – Circle – Cylinder. Класс Point (точка) должен содержать координаты точки - х и у. Их следует объявить с квалификатором protected (защищенные).
Открытая часть класса Point должна содержать следующие функции:
1. конструктор по умолчанию, в котором x и y присваивается значение 0;
2. функцию SetPoint(int x, int y) для изменения x и y, новые координаты должны быть переданы в функцию в качестве параметров;
3. функцию Print() для вывода координат на экран в форме [ x, y ].
Класс Circle (круг), производный от класса Point, должен хранить радиус круга, также его следует дополнить функциями SetRadius(int r) (установка радиуса) и Area(), которая возвращает площадь круга. Переопределённая функция Print() должна выводить на экран координаты центра круга и его радиус. В классе Circle тоже должен быть конструктор по умолчанию.
Класс Cylinder (цилиндр), производный от Circle, должен содержать переменную Height – высоту цилиндра, дополнительные функции SetHeight(int h) и Volume() (вычисляет объём цилиндра), Print() должна выводить [x, y] и объём цилиндра на экран.
Написать программу, демонстрирующую работу с созданными классами.
Программа:
// lb-2.cpp: Defines the entry point for the console application.
//
#include “stdafx.h”
#include “iostream”
using namespace std;
class Point
{
protected:
int x,y;
public:
Point()
{
x=0;
y=0;
}
~Point(){}
void SetPoint(int x1, int y1)
{
x=x1;
y=y1;
}
void Print()
{
cout << “[“<<x<<”,”<<y<<”]”<<’\n’;
}
};
class Circle: public Point
{
protected:
int r;
public:
Circle()
{
r=0;
Point::Point();
}
~Circle(){}
void SetRadius(int r1)
{
r=r1;
}
double Area()
{
return 3.1415*r*r;
}
void Print()
{
Point::Print();
cout<<r<<’\n’;
}
};
class Cylinder: public Circle
{
protected:
int h;
public:
cylinder()
{
h=0;
Circle::Circle();
}
~Cylinder(){}
void SetHeight(int h1)
{
h=h1;
}
double Volume()
{
return Circle::Area()*h;
}
void Print()
{
Point::Print();
cout<<Volume()<<’\n’;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Circle c;
c.SetPoint(2,4);
c.SeyRadius(10);
c.Print();
Cylinder s;
s.SetPoint(2,4);
s.SetRadius(6);
s.SetHeight(9);
s.Print();
return 0;
}
1.1 Контрольные вопросы
1. Чем класс отличается от структуры?
2. Может ли класс быть производным от нескольких классов?
3. Когда вызывается конструктор? Когда вызывается деструктор?
4. Что неправильно в конструкторе класса:
class sample
{
double a, b, c;
public:
double sample();
};
5. Объясните, зачем нужна категория защищенности protected.
Скачать очень оригинальную программу vkmusic вы можете на сайте.






