Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Готове ООП.doc
Скачиваний:
6
Добавлен:
07.07.2019
Размер:
671.23 Кб
Скачать
  1. Оголошення та структура класу.

  • Клас є програмною абстракцією під нього не виділяється пам'ять. Тому спроба ініціалізувати дані всередині класу призведе до помилки. Дані в класі треба розглядати як поля структури, а не як змінні.

  • Подібність класу до структур визначає ще дві важливі можливості:

  1. можливість оголошувати клас з модифікаторами auto, register, static i extern;

  2. можливість введення операції присвоєння для об'єктів одного класу за механізмом присвоєння структур (побайтове копіювання значень полів).

  • Загальний синтаксис оголошення класу cхожий до оголошення структур і має вид

    • class NameClass{

    • // declarations

    • }[objectindentificatos];

  • Дужками {…} визначається тіло класу, яке містить оголошення довільної кількості змінних і функцій. Змінні і функцій, оголошені в тілі класу, називаються членами (class members) класу. У відповідності до цього ми оперуємо членами-даними (member data) та функціями-членами (member functions). З огляду на структури їх іноді називають полями класу (сlass fields). В термінах ООП функції-члени ще називають методами класу (сlass methods). Члени класу є його власністю, і лише в окремих випадках можуть розділятись об'єктами класу.

  • ОД будь-якого члена класу визначається класом і охоплюється початком оголошення члена та кінцем оголошення класу.

  • Безпосереднє використання класів неможливе (тут є виключення пов'язане з механізмом вказівників). Оперують лише з об'єктами як екземплярами класів. Список об'єктів даного класу [objectindentificatos] в оголошенні класу є необов'язковим, а самі об'єкти можна декларувати в довільному місці після оголошення класу, як звичайні змінні. Доступ до членів об'єкта здійснюється через ператор . "крапка" (у випадку організації вказівника на об'єкт - використовується операція доступу -> "стрілка"). За умови, коли приналежність члена визначається неоднозначно, треба використовувати оператор ОДД

    • class A // оголошення класу А

    • {

    • long lx; // член класу lx

    • public: // декларація прав доступу

    • int x; // член класу x

    • int vFunct(int); {return 1;} // функція-член класу vFunct

    • };

    • main()

    • {

    • A a; // створення об'єкта а класу А

    • a.x++; // доступ до члена а через оператор доступу

    • a.A::x++; // доступ до члена а через оператор доступу і ОДД

    • A* p = &a; // організація вказівника на об'єкт класу А

    • p->x++; // доступ до члена через вказівник i оператор доступу

    • p->A::x++; // доступ до члена через вказівник,

    • A* p2 = new A;

    • }

  1. Потокове введення – виведення.

C++ має в своєму розпорядженні свій власний файл заголовків IOSTREAM.H, що містить набір засобів введення-виведення, специфічних для цієї мови. Потокове введення-виведення в C++ організовується за допомогою комплекту стандартних класів, що підключаються за допомогою файлу IOSTREAM.H. Ці класи містять перевантажені оператори введення >> і виведення <<, які підтримують роботу з даними різних типів. Щоб краще зрозуміти, чому легше працювати з потоками в C++, давайте пригадаємо, як взагалі в мові С реалізується введення і виведення даних. Перш за все мова С не має вбудованих засобів введення-виведення. Всі функції, такі як printf() або scanf(), надаються через зовнішні бібліотеки, хоча і вважаються стандартними, але не є частиною самої мови. У принципі, це дозволяє гнучко вирішувати проблеми, що виникають в різних додатках. Труднощі з'являються у зв'язку з тим, що подібного роду функцій дуже багато, вони по-різному повертають значення і приймають різні аргументи. Програмісти покладаються головним чином на функції введення-виведення формату printf(), scanf() і їм подібні, особливо якщо доводиться працювати з числами, а не з текстом. Ці функції достатньо універсальні, але часто, через велику кількість різних специфікаторів форматування, стають надто громіздкими і важко читаними. Мова C++ так само не має в своєму розпорядженні вбудованих засобів введення-виведення, але пропонує модульний підхід до рішення даної проблеми, групуючи можливості введення-виведення в двох основних потокових класах: istream - містить засоби введення, ostream - містить засоби виведення. У всіх цих класах реалізовані оператори << і >>, оптимізовані для роботи з конкретними даними. Бібліотека IOSTREAM.H містить також класи, за допомогою яких можна керувати введенням-виведенням даних з файлів: ifstream - породжений від istream і підключає до програми файл, призначений для введення даних, а ofstream - породжений від ostream і підключає до програми файл, призначений для виведення даних.