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

Класи та об’екти

Класи – це серце С++ і головна складова об’єктно-орієнтованого програмування. Класи є основою бібліотеки візуальних компонентів VCL (Visual Component Library), — об'єктно-орієнтована бібліотека для розробки програмного забезпечення, розроблена компанією «Borland» для підтримки принципів візуального програмування.

VCL входить в комплект постачання «Delphi», «C++ Builder» і «Borland Developer Studio».

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

Анатомія класу

Клас є описом того, як буде виглядати та вести себе його представник – екземпляр класу. Отже, клас можна представити як деякий шаблон, що визначає формат об’єкта класа.

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

Класи мають наступні характерні елементи:

  • Засоби контролю доступу

  • Конструктори та деструктори

  • Члени-дані

  • Функції-члени

  • Спеціальний прихований покажчик з ім’ям this

Клас, як і структура, має бути попередньо оголошений. Оголошення класу зазвичай міститься в заголовному файлі.

Як правило, для класу створюють окремий вихідний файл з ім’ям, близьким до імені класу, та розширенням *.cpp. Заголовний файл для класу зазвичай має таке саме ім’я, що й вихідний файл, але з розширенням *.h. Наприклад, якщо у вас є клас з ім’ям МyСlass, то вихідний файл слід назвати myclass.cpp, а заголовний - myclass.h.

Рівні доступу до членів класу

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

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

Абстрактне представлення даних (data abstraction) – це закриття внутрішньої реалізації властивостей класу від погляду ззовні.

Абстрактне представлення даних дає користувачу можливість знати про клас рівно стільки, скільки необхідно, й запобігає від втручання туди, куди втручатися не слід.

Аналогія. Коли ви сідаєте в авто й повертаєте ключ запалювання, чи потрібно вам знати всі подробиці щодо роботи машини? Звичайно, ні. Ви хочете знати рівно стільки, скільки необхідно для безпечної поїздки. В цій аналогії кермо, педалі, ручка перемикання передач, спідометр і т. і. являють собою інтерфейс між водієм та авто. Водій знає, якими з цих елементів потрібно користуватися, щоб машина їхала туди, куди він хоче. Можна сказати, що двигун, трансмісія та електрообладнання авто приховані від погляду ззовні. Двигун буде працювати навіть в тому випадку, якщо ви ніколи не захочете відкрити капот. Його будова – це деталі, які вам не потрібно знати. Вони скриті від вас. Уявіть, про яку кількість речей доведеться турбуватися, якщо слідкувати за всім, що відбувається в машині: чи правильно карбюратор готує суміш? Чи достатньо мастил у диференціалі? Чи вистачає напруги генератора? І т. д., і т. п. Кому це потрібно?

Таким самим чином в класах закритий доступ до внутрішніх деталей, щоб користувач міг не турбуватися про те, що там відбувається. Внутрішня робота класу закрита, тоді як інтерфейс користувача є відкритим.

До захищених членів класу, як і до закритих, користувач звертатися не може. Проте ці члени можуть бути доступні для класів, які є похідними даного класу.

В С++ private, public та protected, встановлюють рівні доступу. Рівні доступу до членів класу встановлюються при оголошенні класу. Для оголошення класу слугує ключове слово class. Оголошення класу виглядає схожим на оголошення структури, але з додаванням модифікаторів доступу.

Синтаксис класу може бути таким:

 

class МyСlass { public: // оголошення відкритих членів protected: // оголошення захищених членів private: // оголошення закритих членів };

Наприклад, клас Avto

class Avto { public: bool haveKey; bool Start(); void ShutDown(); protected: void StartUp(); private: void StartElectronicalSystem(); bool started; int speed; };

Наприклад, клас Rect для представлення прямокутника.

{ public: int GetWidth(); int GetHeigth(); void SetRect(int _left,int _top,int _bottom,іnt _right); private: int left; int top; int bottom; int right; };

Не обов’язково використовувати всі три рівні доступу в своїх класах. За бажанням можна взагалі не встановлювати рівні доступу, але зазвичай у вас будуть присутні щонайменше два з них – public та private.

За замовчуванням члени класу мають рівень доступу private. Якщо ви не використовуєте при оголошенні класу модифікатори доступу, всі дані і функції класу будуть закритими.

Приклад демонструє простий невеликий об’єкт

#include <iostream> #include <conio.h> // для getch() using namespace std; class Object // визначення класу { private: int data; // поле класу public: void setdata(int d) // метод класу, змінюючий значення поля { data = d; } void showdata() // метод класу, відображуючий значення поля { cout << "Значення поля дорівнює " << data << endl; } }; int main(){ Object s1, s2; // визначення двох об’єктів класу Object s1.setdata(1066); // виклики методу setdata() s2.setdata(1776); s1.showdata(); // виклики методу showdata() s2.showdata(); getch(); return 0; }

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