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

Лабораторна робота №9 (4 год) Робота з класами

Мета роботи: Вивчити реалізацію основних принципів об’єктно-орієнтованого програмування на мові C++.

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

1. Термінологія Об’єктно-Орієнтованого програмування.

Клас являє собою деяке розширення типу struct. Клас має дані (змінні) і дії над ними (методи). Дані і методи класу також називають членами класу.

Об’єктом називається екземпляр деякого класу. Базовим класом називається клас, від якого може породжуватись інший якийсь (породжений) клас. При цьому породжений клас наслідує структуру даних і методів свого базового класу. Породжений клас при цьому може перевизначати і розширювати методи базового класу, а також добавляти свої дані — члени класу.

Наслідування дозволяє визначати нові класи в термінах існуючих.

Поліморфізм – здатність різних об’єктів по-різному обробляти однакові повідомлення.

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

2. Опис класу

Оголошення нового класу виконується таким чином:

class classname : baseclassname_list

// baseclassname_list – список базових класів розділених комами:

// public ClassA, private ClassX, public ClassB

// тут зразу можна вказувати модифікатори доступу

{

type_1 var_1; // дані(змінні)

type_2 var_2;

...

type_n var_n;

public:

metod_1(); // методи

...

protected:

metod_i();

...

private:

...

}

public (відкриті), protected (захищені), private (закриті) модифікатори доступу до членів класу.

Всі члени класу — дані і члени — за замовчуванням є закритими. До закритих членів можна отримати доступ тільки за допомогою методів самого класу. Відкриті члени доступні для всіх інших функцій програми. Але закриті члени ми не зможемо наслідувати в інших класах, а захищені зможемо.

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

3. Створення об’єкта

При створенні класу пам’ять не резервується, а тільки повідомляє компілятору про існування класу, про те які дані він містить, а також про те що він вміє робити. Крім цього, повідомляє компілятору про розмір класу, тобто той розмір який потрібен бути зарезервований для створення екземпляру об'єкту. Методи не потребують виділення пам’яті в об'єкті.

Об'єкт нового типу визначається таким же чином, як і будь яка інша цілочисельна змінна:

class people //створення класу

{

unsigned int Age;

string Name;

void GetAge();

};

unsigned int ABC; // звичайна змінна

people Men; // об'єкт класу створеного вище

Щоб отримати доступ до членів класу можем використати оператор прямого доступу (.):

Men.Age=47;

Аналогічно, для виклику метода GetAge() достатньо виконати наступну стрічку:

Men.GetAge();

4. Реалізація методів класу

Ми вже описали клас, створили об’єкт, тепер нам потрібно написати (визначити, реалізувати) методи:

#include <iostream.h>

// оголошення класу

class people //створення класу

{

public:

int GetAge(); // відкритий метод доступу до закритої-змінної

void SetAge(int e_age); // ще один метод

private:

int Age; // закрита змінна віку

};

// оголошення відкритого методу, який повертає значення закритої змінної про вік.

int people::GetAge()

{

return Age;

}

// оголошення відкритого методу, який встановлює значення закритої змінної про вік.

void people::SetAge(int e_age)

{

Age=e_age;

}

// основна частина програми, в якій ми присвоюємо значення закритій змінній, а потім

// зчитуємо його.

int main()

{

people Men;

Men.SetAge(38);

cout << “Людині” << Men.GetAge() << “ років\n”;

return 0;

}

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