Читайте также:
|
|
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. Відповісти на контрольні запитання.
Контрольні запитання
1. Для чого утворюють віртуальні функції?
2. Яка функція називається віртуальною?
3. Яка функція – чисто віртуальна?
4. Для яких класів утворюють віртуальні функції?
Лабораторна робота № 10
Тема: Використання абстрактних класів.
Мета: Ознайомитися з поняттям поліморфизму.Відладити програму, яка використовує ці поняття.
Література:Г.Шилдт,Самоучитель С++, С.В. Глушков, Практикум по С++.
Дата добавления: 2015-01-05; просмотров: 74 | Поможем написать вашу работу | Нарушение авторских прав |