- •Лабораторна робота №1
- •Теоретичні положення
- •Хід роботи
- •Варіанти
- •Контрольні запитання
- •Лабораторна робота №2
- •Теоретичні відомості
- •Лабораторна робота №4
- •Теоретичні відомості
- •Хід роботи
- •Хід роботи
- •Контрольні запитання
- •Контрольні запитання
- •Лабораторна робота №5
- •Теоретичні відомості
- •Хід роботи
- •Контрольні запитання
- •Лабораторна робота № 8
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 10
- •Абстрактні класи
- •Хід роботи
- •Контрольні запитання
- •Лабораторна робота № 11
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №12
- •Теоретичні положення
- •Хід роботи
- •Контрольні запитання
- •Лабораторна робота № 13.
- •Теоретичні положення
- •Хід работи
- •Варіанти
- •Література
Теоретичні відомості
// Перевантаження операторів +, — и = відносно класу coord
include <iostream>
using namespace std;
class coord {
int x, у; // значення координат
public:
coord ( ) { x = 0; y= 0; }
coord (int i, int j) { x = i; у = j; }
void get_xy(int &i, int & j ) { i = x; j = y; }
coord operator+ (coord ob2) ;
coord operator- (coord ob2) ;
coord operator=( coord ob2);}
// Перевантаження операторів + відносно класу coord
coord coord: :operator+ (coord ob2)
{
coord temp;
temp . x = x + ob2 . x ;
temp. у = у + ob2.y;
return temp;
}
// Перевантаження операторів - відносно класу coord
coord coord: : operator- (coord ob2)
{
coord temp;
temp.x = x — ob2.x;
temp. у = у — ob2.y;
return temp;}
// Перевантаження операторів = відносно класу coord
coord coord: :operator=( coord ob2)
x = ob2 . x ;
у = ob2.y;
return *this; // повернення об’єкту, якому привласнено значення
int main ()
{
coord ol (10, 10), о2(5, 3), оЗ;
int x, у;
оЗ = ol + о2; // додавання двох об’єктів
// виклик функції operator+()
o3.get_xy(x, у);
cout « "(ol + о2) X: " « x « " , Y: " « у « "\n";
return 0;}
Хід роботи
Для класу coord перевантажте оператор /. Складіть програму.
Для класy coord перевантажте оператор *. Складіть програму.
Для класy coord перевантажте оператор -. Складіть програму.
Для класy coord перевантажте оператор =. Складіть програму.
Контрольні запитання
Яке ключове слово застосовується для перевантаження операторів?
Перевантаження – це метод чи ні?
Перевантаження застосовується в класі чи ні?
Лабораторна робота №9
Тема: Створення віртуальних функцій.
Мета : Навчитись використовувати вiртуальнi функції у програмах.
Завдання:
Створити абстрактний клас для роботи з геометричною фігурою типу «пряма» на екрані. Передбачити такі функції–методи: показати фігуру на екрані; зробити фігуру невидною (знищити її зображення); повернути фігуру на заданий кут (кут надається у градусах); пересунути фігуру на наданий вектор. Створити похідний клас для роботи з фігурою типу «пряма». Визначити інтерфейсну частину у класах.
Код програми:
#include <stdlib.h> #include <iostream.h> #include <conio.h> #include <stdio.h> #include <graphics.h> #include <dos.h> #include <math.h> class Pryamay { int x1,x2,y1,y2; int X,Y,r1,r2,k1,k2,W1,W2,Z1,Z2,a; public: virtual void Vvod (); virtual void Delete (); virtual void Sdvig (); virtual void Povorot (); }; class Proiz : public Pryamay { // int x1,x2,y1,y2,X,Y,r1,r2,k1,k2,W1,W2,Z1,Z2,a; public: void Vvod (); void Delete (); void Sdvig (); void Povorot (); }; int main () { Pryamay A; char reg; for (;;) { do { //clrscr (); cout<<"\n MENU "<<endl; cout<<" 1 - Narisovat' pryamyuy"<<endl; cout<<" 2 - Ydalit'"<<endl; cout<<" 3 - Sdvinyt'"<<endl; cout<<" 4 - Povorot"<<endl; cout<<" 5 - vihod"<<endl; cout<<"\n Vibereti punkt menu: "; cin>>reg; } while(reg!='1' && reg!='2' && reg!='3' && reg!='4' && reg!='5'); switch(reg) { case '1': A.Vvod(); break; case '2': A.Delete(); break; case '3': A.Sdvig(); break; case '4': A.Povorot(); break; case '5': exit(0); break; } } getch (); return 0; } void Pryamay :: Vvod() { int gdriver = DETECT,gmode,errorcode; initgraph(&gdriver,&gmode," "); errorcode = graphresult(); if(errorcode!= grOk) { cout<<"oshibka" <<grapherrormsg(errorcode); cout<< "\npress ani Key"; getch(); exit(1); } cout << "Vvedite coordinati\n:"; cin >> x1; cin >>y1; cin >>x2; cin >>y2; setcolor (GREEN); line (x1,y1,x2,y2); getch(); // closegraph(); } void Pryamay :: Delete() { int gdriver = DETECT,gmode,errorcode; initgraph(&gdriver,&gmode," "); errorcode = graphresult(); if(errorcode!= grOk) { cout<<"oshibka" <<grapherrormsg(errorcode); cout<< "\npress ani Key"; getch(); exit(1); } setfillstyle (EMPTY_FILL, BLACK); getch(); // closegraph(); } void Pryamay :: Sdvig () { int gdriver = DETECT,gmode,errorcode; initgraph(&gdriver,&gmode," "); errorcode = graphresult(); if(errorcode!= grOk) { cout<<"oshibka" <<grapherrormsg(errorcode); cout<< "\npress ani Key"; getch(); exit(1); } cout << "Vvedite coordinati\n:"; cin >> x1; cin >>y1; cin >>x2; cin >>y2; setcolor (GREEN); line (x1,y1,x2,y2); cout <<"Vvedite vector "; cin >>X; cin >>Y; r1=x1+X; r2=x2+X; k1=y1+Y; k2=y2+Y; setcolor (GREEN); line (r1,k1,r2,k2); getch(); // closegraph(); } void Pryamay :: Povorot () { //float w1,w2,z1,z2; int gdriver = DETECT,gmode,errorcode; initgraph(&gdriver,&gmode," "); errorcode = graphresult(); if(errorcode!= grOk) { cout<<"oshibka" <<grapherrormsg(errorcode); cout<< "\npress ani Key"; getch(); exit(1); } cout << "Vvedite coordinati\n:"; cin >> x1; cin >>y1; cin >>x2; cin >>y2; setcolor (GREEN); line (x1,y1,x2,y2); cout <<"Vvedite ygol "; cin >> a; /* w1=x1*cos(a)-y1*sin(a); w2=x2*cos(a)-y2*sin(a); z1=x1*sin(a)+y1*cos(a); z2=x2*sin(a)+y2*cos(a); */ if (a==45) { Z2=(x2+x1)-y1; clrscr (); line (x1,y1,x2,Z2); } if (a==90) { Z2= x2+x1; clrscr (); line (x1,y1,x1,Z2); } if (a==180) { W2=x1+x2; clrscr (); line (W2,y1,x1,y1); } getch(); // closegraph(); }
Наберіть програму.
Напишіть коментарі до програми.
Відповісти на контрольні запитання.
