
- •Міністерство аграрної політики та продовольства україни рівненський державний аграрний коледж
- •Тема: оголошення та структура класів.
- •Зміст та послідовність виконання завдань
- •Тема: агрегування та композиція класів.
- •Зміст та послідовність виконання завдань
- •Тема: перевантаження операцій.
- •Зміст та послідовність виконання завдань
- •Тема: агрегування та композиція класів.
- •Зміст та послідовність виконання завдань
- •Тема: віртуальні функції, поліморфізм.
- •Зміст та послідовність виконання завдань
- •Тема: класи потокового введення-виведення та робота з файлами.
- •Зміст та послідовність виконання завдань
- •Тема: шаблонні класи.
- •Зміст та послідовність виконання завдань
- •Зміст та послідовність виконання завдань
- •Тема: опрацювання виняткових ситуацій.
- •Зміст та послідовність виконання завдань
- •Тема: динамічна ідентифікація та приведення типів.
- •Зміст та послідовність виконання завдань
- •Висновок
- •Список використаной літератури
Тема: перевантаження операцій.
Мета: вивчення способів перевантаження операцій С++ та їх використання для роботи з об’єктами.
Матеріально-технічне оснащення робочого місця: ПК, інструкційна картка.
Зміст та послідовність виконання завдань
1. Створити клас ДРОБІВ - раціональних чисел, що є відношенням двох цілих чисел. Перевантажити операції для додавання, віднімання, множення і ділення дробів. Визначити потокові операції введення-виведення дробів.
Програма:
#pragma once
class Cdouble
{public:
Cdouble() : value(0)
{}
Cdouble(double _value)
{
Init(_value);
}
void GetValue() const
{
std::cout << " res = " << value << std::endl;
}
void Zero() { value = 0; } //занулення значення
void Init(const double &_value) { value = _value; }
friend const Cdouble& operator + (const Cdouble &left, const Cdouble& right) { return left.value + right.value; } // +
friend const Cdouble& operator - (const Cdouble &left, const Cdouble& right) { return left.value - right.value; } // -
friend const Cdouble& operator * (const Cdouble &left, const Cdouble& right) { return left.value * right.value; } // *
friend const Cdouble& operator / (const Cdouble &left, const Cdouble& right) { return left.value / right.value; } // /
friend bool operator ==(const Cdouble &left, const Cdouble& right) {
if (left.value == right.value) return 1;
else return 0;
}
friend bool operator !=(const Cdouble &left, const Cdouble& right) {
if (left.value != right.value) return 1;
else return 0;
}
friend bool operator <(const Cdouble &left, const Cdouble& right) {
if (left.value < right.value) return 1;
else return 0;
}
friend bool operator >(const Cdouble &left, const Cdouble& right) {
if (left.value > right.value) return 1;
else return 0;
}
friend bool operator <=(const Cdouble &left, const Cdouble& right) {
if (left.value <= right.value) return 1;
else return 0;
}
friend bool operator >=(const Cdouble &left, const Cdouble& right) {
if (left.value >= right.value) return 1;
else return 0;
}
private:
double value; };
Результат:
2. Створити клас для роботи з КАТАЛОГАМИ файлової системи. Елементами каталога є об’єкти класу ФАЙЛ, які містять назву файла, розмір, дату і час створення, атрибути. Перевантажити операції для пошуку файла у каталозі, копіювання, витирання, перейменування файла.
Програма:
#include <iostream.h>
#include <conio.h>
#define interface struct
interface IVolume {
virtual ~IVolume(){};
virtual double FindVol(double x, double y, double t) = 0;
};
class CParall : public IVolume{
public:
CParall(){ cout<<"CParall type obj create\n"; }
virtual ~CParall(){ cout<<"CParall type obj destroy\n"; }
virtual double FindVol(double x, double y, double t){ return x*y*t;}
};
//A yoii eeanna ia ae?o eiaeee, io iioi?ioea oae iieo?aaony.
class CPyramid : public IVolume {
public:
CPyramid() { cout<<"CPyramid type obj create\n"; }
virtual ~CPyramid() { cout<<"CPyramid type obj destroy\n"; }
virtual double FindVol(double x, double y, double t){ return x*y*t;} };
class CSphere : public IVolume {
public:
CSphere() { cout<<"CSphere type obj create\n"<<'\n'; }
virtual ~CSphere() { cout<<"CSphere type obj destroy\n"; }
virtual double FindVol(double x, double y, double t){
return (4*3.14*x/3)/3;
}};
int main(){
const int size = 3;
CParall *cp = new CParall ;
CPyramid *cpyr = new CPyramid ;
CSphere *cs = new CSphere ;
IVolume *i_ptr[size] = {cp,cpyr,cs};
cout<<i_ptr[0]->FindVol(2,3,4)<<'\n';
cout<<i_ptr[1]->FindVol(2,3,2)<<'\n';
cout<<i_ptr[2]->FindVol(5,0,0)<<'\n';
cout<<'\n';
for(int i =0;i<size;i++)delete i_ptr[i];
cout<<'\n';
getch();
}
Результат: