Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Return 0;




}

 

Імена елементів класу можуть також використовуватися з ім'ям класу, за яким слідує операція дозволу видимості (подвійне двокрапка), тобто виклик елемента має вигляд:

<Ім’я_класe> :: <ім’я_члена>

Визначення класу нагадує визначення структури, за винятком того, що визначення класу:

• Зазвичай містить один або кілька специфікатор доступу, що задаються за допомогою ключових слів public, protected або private;

• Замість ключових слів struct можуть застосовуватися class або union;

• Зазвичай включає поряд з елементами даних функції-члени;

• Зазвичай містить деякі спеціальні функції-члени, такі як конструктор і деструктор.

Важливо пам'ятати про те, що всі робочі дані зберігаються в об'єкті. Клас не містить ніяких даних; він лише описує загальну структуру і поведінку об'єкту.

За своєю суттю об'єктно-орієнтоване програмування - це всього лише спосіб угруповання функцій і даних, що полегшує роботу над програмою.

У комплект Visual C + + входить ціла бібліотека заздалегідь написаних класів - Microsoft Foundation Classes (MFC), яка помітно полегшує роботу програміста. На її основі можна створювати об'єкти для роботи з кнопками, текстовими полями, смугами прокрутки і т. д. Фірма Microsoft вже попрацювала за нас, і пізніше ми скористаємося цим.

 

Специфікатори доступу до членів класу

 

Специфікатори доступу визначають доступність даних і методів в програмі. Існують наступні специфікатори доступу:

• public - відкритий режим доступу. Члени класу доступні за межами класу будь-яких функцій програми;

• protected - захищений режим доступу. Члени класу доступні для методів цього класу, похідних класів і дружніх класів.

• private - закритий режим доступу. Члени класу доступні тільки для методів цього класу та класів-друзів.

Особливість об'єктно-орієнтованого програмування полягає в приховуванні даних, що захищає дані класу від несанкціонованого доступу функцій, розташованих за межами класу. У зв'язку з цим члени-дані, як правило, мають специфікатор доступу private. В окремих випадках виникає необхідність дані класу робити відкритими.

Методи, які надають сервісні послуги класу, завжди оголошуються зі специфікатором public. Методи, які використовуються класом для власних потреб, мають специфікатор доступу private. Ці методи забезпечують реалізацію відкритих функцій-членів і приховують складності їх реалізації.

 

2. Оголошення або специфікація класу

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

Специфікація класу, як правило, розміщується в окремому заголовному файлі з розширенням .h і має наступний формат:

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

private:

/ / Закриті члени класу protected:

/ / Захищені члени класу

public:

/ / Відкриті члени класу

};

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

Примітка

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

Лістинг програми - Приклад оголошення класу

/ / Book.h - специфікація класу Своок

# Pragma once

class СВоок {

private:

char m_author [50]; / / автор

char * m_pTitle; / / покажчик на назву

int m_year; / / рік видання

public:

/ / Методи установки значень

void setAuthor (const char *);

void setTitle (const char *);

void setYear (const int);

/ / Методи повернення значень

char * getAuthor (void);

char * getTitle (void);

int getYear (void);

};

Файл специфікації Book.h містить оголошення типу класу CBоок. Щоб компілятор включав оголошення типу тільки один раз при трансляції програми, використовується директива препроцесора # pragma once.

У класі оголошені закриті дані з типом масиву m_author, покажчика на символьний тип m_pTitle і цілого m_уеаг, які описують автора, назву і рік видання, відповідно. Тип своок повідомляє компілятору, що для створення об'єкта типу CBоок потрібно 50 байтів для зберігання автора, 4 байти для адреси, за якою буде записано назву книги, і 4 байта для зберігання року видання.

Щоб можна було змінювати значення даних у об'єктів класу і отримувати ці значення в програмі, в класі оголошені відкриті методи. Функції - члени з типом значення, що повертається void мають параметр, тип якого відповідає типу даного. Методи для повернення значень не потребують параметрах, оскільки змінні, значення яких вони повертають, відомі класу. Тип кожного методу обумовлений типом повертаної (возвращаемой переменной) змінної.

3. Реалізація класу

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

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

 

тип_функції-члена ім’я_класy :: ім’я_функції-члена (список параметрів)

 

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


Поделиться:

Дата добавления: 2014-12-03; просмотров: 155; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты