68940

Класи та об’єкти в мові С++

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-09-28

45 KB

4 чел.

Лекція № 2

Тема: Класи та об’єкти в мові С++

План

  1.  Опис класів
  2.  Опис об’єктів

Опис класу

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

class <ім'я>

{

[ private: ]

<опис прихованих элементів>

public:

<опис доступних элементів>

};  // Опис закінчується крапкою з комою

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

  •  можуть мати будь-який тип, окрім типу цього ж класу (але можуть бути покажчиками або посиланнями на цей клас);
  •  можуть бути описані з модифікатором const, при цьому вони ініціалізуються тільки один раз (за допомогою конструктора) і не можуть змінюватися;
  •  можуть бути описані з модифікатором static  але ні як auto, extern і register.Ініціалізація полів при описі не допускається.

Класи можуть бути глобальними (оголошеними зовні будь-якого блоку) і локальними (оголошеними всередині блоку, наприклад, функції або іншого класу). Нижче перераховані деякі особливості локального класу:

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

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

class monstr

{

int health, ammo; public:

monstr(int he = 100, int am= 10){ health = he; ammo = am;}

void draw(int x, int у, int scale, int роsition);

int get_health(){return health;}

int get_ammo(){return ammo;} }:

В цьому класі два приховані поля — health і ammo, отримати значення яких зовні можна за допомогою методів get_health() і get_ammo(). Доступ до полів за допомогою методів в даному випадку здається штучним ускладненням, але треба враховувати, що полями реальних класів можуть бути складні динамічні структури, і отримання значень їх елементів не так тривіальні. Крім того, дуже важливою є можливість вносити в ці структури зміни, не торкаючись інтерфейсу класу.

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

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

void monstr::draw(int x, int у, int scale, int роsition)

{

/*тіло методу */

}

Метод можна визначити як вбудований і зовні класу за допомогою директиви inline (як і для звичайних функцій, вона несе рекомендаційний характер):

inline int monstr::get_ammo()

{

return ammo;

}

В кожному класі є хоча б один метод, ім'я якого співпадає з ім'ям класу. Він називається конструктором і викликається автоматично при створенні об'єкту класу. Конструктор призначений для ініціалізації об'єкту. Автоматичний виклик конструктора дозволяє уникнути помилок, зв'язаних з використанням неініціалізованих змінних. Типи даних struct і union є видами класу.

Опис об'єктів

Конкретні змінні типу «клас» називаються екземплярами класу, або об'єктами. Час життя і видимість об'єктів залежить від вигляду і місця їх опису і підкоряється загальним правилам C++:

monstr Vasia;// Об'єкт класу monstr з параметрами за замовчуванням

monstr Super(200, 300);         // Об'єкт з явною ініціалізацією

monstr stado[100];  // Масив об'єктів з параметрами за умовчанням    

monstr *beavis = new monstr (10);   // Динамічний об'єкт

              //(другий параметр задається за замовчуванням)

monstr &butthead = Vasia;      // Посилання на об'єкт

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

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

int n = Vasia.get_ammo();

stado[5].draw;

cout << beavis->get_health();

Звернутися таким чином можна тільки до елементів із специфікатором publіc. Отримати або змінити значення елементів із специфікатором private можна тільки через звернення до відповідних методів. Можна створити константний об'єкт, значення полів якого змінювати забороняється. До нього повинні застосовуватися тільки константні методи:

class monstr

{

int get_health() const {return health;}

};

const monstr Dead(0,0);         // Константний об'єкт

cout << Dead.get_health():

Константний метод:

  •  оголошується з ключовим словом const після списку параметрів;
  •  не може змінювати значення полів класу;
  •  може викликати тільки константні методи;
  •  може викликатися для будь-яких (не тільки константних) об'єктів.

Рекомендується описувати як константні ті методи, які призначені для отримання значень полів.


 

А также другие работы, которые могут Вас заинтересовать

40038. Метод ER-диаграмм (сущность-связь) 119.5 KB
  Названиями сущностей являются как правило существительные например: ПРЕПОДАВАТЕЛЬ ДИСЦИПЛИНА КАФЕДРА ГРУППА. Связь двух или более сущностей предполагает зависимость между атрибутами этих сущностей. Так два разных проектировщика рассматривая одну и ту же проблему с разных точек зрения могут получить различные наборы сущностей и связей. С целью повышения наглядности и удобства проектирования для представления сущностей экземпляров сущностей и связей между ними используются следующие графические средства: Диаграммы ЕR экземпляров...
40039. Інформаційні технології 267.5 KB
  Роль інформатики та компютерної техніки у формуванні сучасного спеціаліста. У всіх цих випадках на допомогу людині приходить компютер.Понятие інформаційних технологій Якщо розглядати компютер як обєкт який має складові частини повязані між собою і функціонують відповідно до певних правил тоді компютер можна назвати системою. Оскільки компютер використовується переважно як засіб зберігання пошуку і видачі інформації то його можна розглядати як інформаційну систему.
40040. Философия любви– тема философского размышления 143.5 KB
  Только в любви и через любовь человек становится человеком. Без любви он неполноценное существо, лишенное подлинной жизни и глубины и не способное ни действовать эффективно, ни понимать адекватно других и себя. И если человек–центральный объект философии, то тема человеческой любви
40041. Создание отчета в режимах Автоотчет и Мастер отчетов. Редактирование отчета в режиме Конструктор 160.5 KB
  Создание отчета в режимах Автоотчет и Мастер отчетов.Редактирование отчета в режиме Конструктор Цель работы: получение навыков конструирования отчетов в режимах автоотчета и мастера отчетов. На экране появится окно режимов создания нового отчета представленное на рис. Окно режимов создания отчета Выбрать режим Автоотчет: ленточный и в качестве источника данных таблицу Список.
40042. Молодежный центр как субъект организации досуга молодежи 299.5 KB
  Современные проблемы организации молодежного досуга. Анализ деятельности культурно – досуговых центров по организации досуга молодежи «Молодежного центра Жаштык» и «Продюсерского центра». Принципы и формы организации досуговой деятельности...
40043. Создание надежной системы защиты предприятия 2.73 MB
  Целью данного проекта является создание надежной системы защиты предприятия, функционирование которой направлено на защиту деятельности сотрудников, информационных и материальных ценностей от внутренних и внешних угроз.
40044. Влияние газовой промышлености на окружающую среду 111 KB
  Геологический метод является начальным методом разведки. Этот метод заключается в том, что геологи выезжают участок, который нужно исследовать и проводят там все необходимые работы, которые включают в себя...
40045. Знакомство с приложением PowerPoint. Создание слайдов. Вставка в слайды различных объектов 136 KB
  Установить для заголовка размер шрифта 60 пт цвет красный. Установить для заголовка тень желтую с помощью кнопки Тень на панели инструментов Рисование. Установить для подзаголовка размер шрифта 40 пт цвет синий тень голубую. Установить фон слайда белый мрамор с помощью команды Формат Фон вкладка Текстура.
40046. Приложение MICROSOFT INTERNET EXPLORER 107 KB
  Сохраните открытую страничку в своей папке: выполните команду Файл Сохранить как; в окне Сохранение вебстраницы откройте или создайте папку ФамилияГруппа; в поле Имя файла введите его название например Студенческая_жизнь; в поле Тип файла выберите Вебстраница полностью и нажмите кнопку Сохранить. Откройте в программе Проводник свою папку и проанализируйте размер трех созданных в ней файлов. Сохраните найденную информацию в файле Об образовании поместив его в собственную папку...