
- •Курсова робота
- •Завдання
- •1. Пояснювальна записка
- •2. Розрахункова частина
- •3. Позитивні сторони _______________________________________
- •1. Абстрагування
- •2. Інкапсуляція
- •3. Успадкування
- •3.1 Загальні поняття
- •3.2 Одиночне успадкування
- •4. Поліморфізм
- •4.1 Загальні поняття
- •4.2 Поліморфізм і його реалізація через віртуальні функції
- •4.3 Абстрактні та віртуальні базові класи
- •4.4 Перевантаження функцій і операцій
- •5. Класи
- •5.1 Інтерфейс і реалізація в класі
- •5.2 Конструктори і деструктори
- •7. Динамічний розподіл пам’яті
- •8.Висновок
- •9.Список використаної літератури
- •Додаток 1. Лістинг програми
- •Додаток 2. Результати роботи програми
- •Додаток 3. Cd – диск з програмою
5. Класи
5.1 Інтерфейс і реалізація в класі
Інтерфейс - семантична і синтаксична конструкція в коді програми, використовувана для специфікування послуг, наданих класом або компонентом.
Інтерфейс визначає межу взаємодії між класами або компонентами, специфікуючи певну абстракцію, яку здійснює реалізуюча сторона. На відміну від концепції інтерфейсів в багатьох інших областях, інтерфейс в ООП є строго формалізованим елементом об'єктно-орієнтованої мови і в якості семантичної конструкції широко використовується кодом програми.
Інтерфейси дозволяють налагодити множинне успадкування об'єктів.
Кожен клас може реалізовувати будь-які доступні інтерфейси. При цьому в класі повинні бути реалізовані всі абстрактні методи, що з'явилися при спадкуванні від інтерфейсів або батьківського класу, щоб новий клас міг бути оголошений неабстрактним.
Якщо з різних джерел успадковуються методи з однаковою сигнатурою, то достатньо один раз описати реалізацію, і вона буде застосовуватися для всіх цих методів. Однак, якщо у них різне повертається значення, то виникає конфлікт.
Послідовність символів :: називається оператором області видимості, він показує приналежність функції класу, вказує компілятору, що дана версія функції належить класу. Іншими словами, функція знаходиться в області видимості класу.
Приклад класу:
class rozklad_potyagiv //Клас "Розклад потягiв"
{
public: //Оголошення публiчного доступу до наведених нижче змiнних та методiв
string punkt_priznachennya; //Оголошення змiнної "Пункт призначення"
string nomer_potyagy; //Оголошення змiнної "Номер потягу"
string chas_vidpravlenya; //Оголошення змiнної "Час вiдправлення"
rozklad_potyagiv(); //Конструктор
void vvod(); //Оглошення методу класу - "Введення даних"
void vuvod(); //Оглошення методу класу - "Виведення даних"
void sort_punkt_priznachnya(rozklad_potyagiv *china,int n); //Оголошення методу сортування
void vuvod_po_poisky(rozklad_potyagiv *china,int n); //Оголошення методу пошуку по часу
~rozklad_potyagiv();
};
5.2 Конструктори і деструктори
Конструктор викликається щоразу, коли створюється об'єкт даного типу; деструктор — при знищенні. При перетвореннях типів, присвоєнні, передачі параметра теж викликаються конструктори і при необхідності деструктори. Конструктор викликається автоматично. Конструктор – це метод класу, який має ім’я класу, він ініціалізує об’єкти класу. Деструктор руйнує об’єкти, звільняє пам'ять. Він також має ім’я класу, але з символом на початку «~». Конструктор і деструктор протилежні один від одного і завжди оголошуються в розділі public. При оголошення конструктора та деструктора не вказується тип даних, вони не повертають значення. В класі можна створювати декілька конструкторів і вони можуть бути з параметрами, деструктор в класі може бути тільки один.
Приклад:
class rozklad_potyagiv //Клас "Розклад потягiв"
{
public: //Оголошення публiчного доступу до наведених нижче змiнних та методiв
string punkt_priznachennya; //Оголошення змiнної "Пункт призначення"
string nomer_potyagy; //Оголошення змiнної "Номер потягу"
rozklad_potyagiv(); //Конструктор
~rozklad_potyagiv(); //Деструктор
};
rozklad_potyagiv::rozklad_potyagiv() //Конструктор
{
punkt_priznachennya=nomer_potyagy="\nПусто";//Надається змiнним значення "Пусто"}
rozklad_potyagiv::~rozklad_potyagiv() //Деструктор
{
//Працює деструктор
}
6. Потоки введення/виведення С++
Введення / виведення на найнижчому рівні інтерпретується як передача послідовності байтів між об'єктами. Ця послідовність байтів називається потоком. На цьому рівні поняття типу даних відсутня. У мові С ++ управління потоками здійснюється за допомогою функцій бібліотеки вводу / виводу, успадкованої від С і оголошеної в заголовному файлі «iostream», або за допомогою операторів потоку введення / виведення. До переваг першого способу відноситься можливість більш гнучкого управління форматуванням і його повна сумісність з С. Використовуючи оператори потоку введення / виводу, можна не замислюватися про форматах виведення інформації, якщо це не має принципового значення. Крім того, цей метод дозволяє перевизначити форму виводу для будь-якого класу.
Функції введення/виведення: cin>> //Введення;
cout<< //Виведення;
printf ( ) //Виведення;
scanf() //Введення.
Для файлів:
fprintf ( ) //Виведення;
fscanf ( ) //Введення.