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

Для того, щоб створити об’єкт, необхідно визначити його загальний вигляд, використовуючи ключове слово class. Клас може містити відкриту і закриту частини. За замовчуванням усі члени класу вважаються закритими. Визначення простого класу має вигляд:

class ім’я_класу{

закриті змінні класу

public:

відкриті змінні класу} список імен об’єктів;

Функції класу називають методами класу, або функціями-членами. Визначення методів складається з заголовку функції та тіла функції. Вони можуть мати типи, що повертаються, і аргументи. При визначенні методу, для ідентифікації класу, до якого цей метод належить, використовується оператор доступу до області визначення (::). В загальному вигляді визначення методу поза класом має наступний вигляд:

тип ім’я_класу :: ім’я_методу (агрументи)

Конструктори – це спеціальні методи класу, які призначені для побудови нових об’єктів та присвоєння елементам даних цих об’єктів початкових значень. Ім’я конструктора збігається з іменем класу. Конструктор не повертає значень. Існує три види конструкторів:

а) конструктор за замовчуванням – використовується для побудови об’єкту, коли явні значення для ініціалізації відсутні;

б) конструктор з параметрами (конструктор перевантаження) – використовується для побудови об’єкту, коли є явні значення для ініціалізації;

в) конструктор копіювання – виконує копіювання вже існуючого об’єкту в новий.

      1. Розглянемо приклад програми, яка використовує класи

Програма використовує клас Точка(Point). В класі визначено: конструктор за замовчуванням, конструктор перевантаження, конструктор копіювання, функції виводу точки на екран та зникнення з екрану. Пам’ять під поля класу виділяється динамічно.

# include <iostream. h>

# include <stdlib. h>

# include <graphics. h>

// описання класу

class Point {

public:

int *x, *y; // поля для зберігання даних об’єкту

Point(); // конструктор за замовчуванням

Point (int x1, int y1); // конструктор з параметрами

Point (const Point &obj); // конструктор копіювання

~Point (){ // деструктор (визначаємо його в класі, тобто метод є вбудованим)

cout<< “ Ми в деструкторі \n”;

delete x;

delete y;}

void hide(); // метод, що приховує точку на екрані

};

void show (Point temp); // вільна функція, яка приймає в якості параметру об’єкт класу

// визначення методів класу

Point ::Point ( ) {

cout<< “Ми в конструкторі за замовчуванням \n”;

x=new int; // виділяємо пам’ять під змінну

if (!x){cout<<”Error memory!\n”; // помилка виділення пам’яті

exit (1);}

*x=250;

y=new int;

if (!y){cout<<”Error memory!\n”;

exit (1);}

*y=450;

cout<<”За замовчуванням координати точки К (”<<*x<<” , ”<<*y<<”)\n”; }

Point ::Point (int x1, int y1 ) {

cout<< “Ми в конструкторі з параметрами \n”;

x=new int; // виділяємо пам’ять під змінну

if (!x){cout<<”Error memory!\n”; // помилка виділення пам’яті

exit (1);}

*x=x1;

y=new int;

if (!y){cout<<”Error memory!\n”;

exit (1);}

*y= *y1;

cout<<”Координати точки К (”<<*x<<” , ”<<*y<<”)\n”; }

Point ::Point (const Point &obj ) {

cout<< “Ми в конструкторі копіювання \n”;

x=new int; // виділяємо пам’ять під змінну

if (!x){cout<<”Error memory!\n”; // помилка виділення пам’яті

exit (1);}

*x= *obj.x;

y=new int;

if (!y){cout<<”Error memory!\n”;

exit (1);}

*y= *obj.y; }

void Point::hide(){

putpixel(*x, *y,getbkcolor()); // виводимо точку кольором фону (таким чином –приховуємо)

}

void show (Point temp) {

setcolor(8); // встановлюємо колір, яким будемо виводити точку

int *s1=temp.x;

int *s2=temp.y;

putpixel(*s1,*s2, getcolor()); } // виводимо точку на екран

// використання об’єктів класу – функція main ()

void main() {

// ініціалізація графічного модулю

int l=DETECT, m;

initgraph(&l, &m, “C:\\BORLANDC\\bgi”);

int temp_x, temp_y;

cout<<”Введіть координату х точки К”;

cin>>temp_x;

cout<<” Введіть координату у точки К”;

cin>>temp_y;

Point a;

Point b(temp_x, temp_y);

show(a);

show (b);

cout<<”\n Точка зникне при натисканні будь-якої клавіші”;

getch();

a.hide();

b.hide();

closegraph(); }

      1. Завдання: написати для заданого варіанту програму для роботи з класом. Створити конструктори: за замовчуванням, перевантаження, копіювання. Програма має забезпечувати елементарні функції-члени для роботи з об’єктами. Скласти демонстраційну програму.

Варіант 1

Написати програму для роботи з класом Дата. Програма має реалізовувати елементарні функції для роботи з даними класу: збільшення/зменшення на день, ввід/вивід значень. Ще додати функцію, яка за зазначеним роком виводить, високосний цей рік чи ні.

Варіант 2

Написати програму для роботи з класом Час. Програма має реалізовувати елементарні функції для роботи з даними класу: збільшення/зменшення на 1 годину, хвилину, секунду, ввід/вивід значень. Ще додати функцію, яка показує, скільки часу працювала програма.

Варіант 3

Написати програму для роботи з класом Рядок. Клас включає наступні поля: масив для зберігання рядка, його довжини, час створення рядка. Програма має реалізовувати елементарні функції для роботи з даними класу: зміна рядка, ввід/вивід рядка, пошук підрядка в рядку. Ще додати функцію, яка показує, скільки раз підрядок входить в рядок.

Варіант 4

Написати програму для роботи з класом Вікно. Клас включає наступні поля: розмір вікна, його положення на екрані, колір. Програма має реалізовувати елементарні функції для роботи з даними класу: відображення вікна, видалення вікна, зміна кольору. Ще додати функцію, яка змінює колір вікна на колір, обраний користувачем. Вікно виводити на екран в вигляді рамки (прямокутника) заданого розміру.

Варіант 5

Написати програму для роботи з класом Квадратна матриця. Клас включає наступні поля: порядок, набір елементів. Програма має реалізовувати елементарні функції для роботи з даними класу: ввід матриці, транспонування матриці, вивід матриці в зручній формі. Ще додати функцію, яка створює симетричну матрицю.

Варіант 6

Написати програму для роботи з класом Правильна дріб. Клас включає наступні поля: чисельник, знаменник. Програма має реалізовувати елементарні функції для роботи з даними класу: додавання, віднімання, множення, ділення, вивід дробу в зручній формі. Ще додати функцію, яка доповнює до одиниці дріб і виводить це значення на екран.

Варіант 7

Написати програму для роботи з класом Комплексні числа. Клас включає наступні поля: дійсну та уявну частини числа. Програма має реалізовувати елементарні функції для роботи з даними класу: додавання, віднімання, множення, ділення, вивід числа у зручній формі . Ще додати функцію, яка множить комплексне число на число, введене користувачем.

Варіант 8

Написати програму для роботи з класом Вектор. Клас включає наступні поля: координати вектора. Програма має реалізовувати елементарні функції для роботи з даними класу: додавання, віднімання, множення, ділення двох векторів. Ще додати функцію, яка множить вектор на скалярне число, введене користувачем.

Варіант 9

Написати програму для роботи з класом Масив. Клас включає наступні поля: масив для зберігання цілих чисел, довжину масиву. Програма має реалізовувати елементарні функції для роботи з даними класу: вивід масиву та упорядкування по убуванню. Ще додати функцію, яка знаходить середнє значення елементів масиву.

Варіант 10

Написати програму для роботи з класом Книга. Клас включає наступні поля: масив для зберігання назви книги, масив для зберігання прізвища автора, вартість книги, кількість сторінок в книзі. Програма має реалізовувати елементарні функції для роботи з даними класу: вивід інформації про книгу, пошук книги за автором. Ще додати функцію, яка змінює вартість зазначеної книги у зв’язку з уцінкою.