Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_OOP_4s_2010.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
894 Кб
Скачать
☆

*Задание к программе 1.3

Упражнения:

  1. попробуйте получить доступ к статическому члену класса через экземпляр M[1];

  2. продемонстрируйте доступ к членам класса через указатель на класс;

  3. оформите определение класса в виде заголовочного файла worker.h, реализацию методов класса ‑ в виде файла worker.cpp, а главную функцию ‑ в виде файла prog3.cpp. Создать проект prog3.prj, в который включить файлы worker.cpp и prog3.cpp и выполнить многофайловую компиляцию.

Задания:

Первый вариант. Доработать методы и конструктор класса Worker таким образом, чтобы можно было задавать и учитывать производительность каждого из создаваемых объектов типа Worker. Определение конструктора сделать внешним (вне тела класса).

Второй вариант. Доработать класс Worker, введя в него еще один метод ‑ rest() (Отдых), который уменьшает количество денег у работника в зависимости от продолжительности отдыха. Определение метода display()сделать внешним (вне тела класса).

*Программа 1.4. В программе создан класс RECTANGLE (Прямоугольник), в котором реализованы методы вывода графического изображения прямоугольника, "стирания" его с экрана и перемещения. Для работы программы скопируйте в текущий директорий файл egavga.bgi из директория BGI пакета Borland C++v.3.1.

#include <conio.h>

#include <stdlib.h>

#include <graphics.h>

#include <iostream.h>

class RECTANGLE{

int left,top,right,bottom;

public:

RECTANGLE(int,int,int,int); //Конструктор

void show(); //Метод вывода изображения

void hide(); //Метод скрытия изображения

void move(int,int); //Метод перемещения изображения

};

RECTANGLE::RECTANGLE(int x1,int y1,int x2,int y2)

{

left=x1;

right=x2;

top=y1;

bottom=y2;

}

void RECTANGLE::show()

{

setcolor(LIGHTGREEN); //Функция установки цвета

rectangle(left,top,right,bottom);//Функция вывода фигуры

}

void RECTANGLE::hide()

{

setcolor(getbkcolor());

rectangle(left,top,right,bottom);

}

void RECTANGLE::move(int dx,int dy)

{

hide();

left+=dx; right+=dx;

top+=dy; bottom+=dy;

show();

}

int main()

{

int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,"");

errorcode=graphresult();

if(errorcode!=grOk)

{

cout<<"Graphics error:\n"

cout<<grapherrormsg(errorcode)<<endl;

cout<<"Press any key to halt\n";

getch();

exit(1);

}

int xmax=getmaxx();

int ymax=getmaxy();

RECTANGLE a(10,20,50,30);

a.show();

outtextxy(xmax/2,ymax-ymax/10,"Press any key...");

getch();

a.hide();

a.move(10,20);

getch();

a.move(100,100);

getch();

closegraph();

return 0;

}

*Задание к программе 1.4

Разработать метод класса extend(), который увеличивает площадь прямоугольника. Для демонстрации метода реализуйте в главной функции код, который в начале работы выводит прямоугольник в центре экрана, а затем постепенно увеличивает его до размеров экрана.

2. Контрольные вопросы к лабораторной работе №1

  1. Что такое класс в языке С++? Для чего она применяется?

  2. Дайте определения конструктора и деструктора класса.

  3. Найдите ошибку:

В классе PRIMER объявлен прототип int PRIMER(int a, float pi);

  1. Найдите ошибки:

class ABC{

int a=3;

int b;

int c;

public:

ABC(int n=1) {b=n;}

mul() {c=1+a*b;}

};

  1. Можно ли в классе Matrix из программы 1.2 вместо существующего конструктора применить перегруженные конструкторы, если да, то как?

  2. В каком случае значение одного объекта можно присвоить другому объекту.

  3. Создайте класс RECTANGLE в программе 1.1 с помощью ключевого слова struct.

  4. Чем отличаются статические члены класса от обычных?

  5. Почему в приведенных выше классах не использовалось ключевое слово private?

  6. Придумайте члены-функции доступа к защищенным членам класса Matrix. из программы 1.2.

  7. Приведите примеры непосредственного доступа и доступа через указатель к членам-данным и членам-функциям экземпляра класса, являющегося элементом массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]