Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВСЕ ЛАБОРАТОРНІ І СЕМЕСТР.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
250 Кб
Скачать
☆

Теоретичні відомості

// Перевантаження операторів +, — и = відносно класу 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;}

Хід роботи

  1. Для класу coord перевантажте оператор /. Складіть програму.

  2. Для класy coord перевантажте оператор *. Складіть програму.

  3. Для класy coord перевантажте оператор -. Складіть програму.

  4. Для класy coord перевантажте оператор =. Складіть програму.

Контрольні запитання

  1. Яке ключове слово застосовується для перевантаження операторів?

  2. Перевантаження – це метод чи ні?

  3. Перевантаження застосовується в класі чи ні?

Лабораторна робота №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(); }

  1. Наберіть програму.

  2. Напишіть коментарі до програми.

  3. Відповісти на контрольні запитання.