Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Методи програмування в C + +

Реферат Методи програмування в C + +





Зміст:


1. Статичні елементи класу

2. Віртуальні функції

3. Абстрактні класи

4. Віртуальні класи

5. Шаблони

6. Обробка виняткових ситуацій в C + +



1. Статичні елементи класу

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


class Name

{ ...

public:

...

static int count;}


Для елементів, які оголошені у відкритій секції класу, виклик, наприклад, буде виглядати наступним чином:


Name :: count + = 2;


Якщо елементи визначені в закритій секції, то таке звернення некоректно.

Якщо ми оголосили такий елемент в закритій секції класу, то ми повинні визначити функції для роботи з цими елементами. Звернення до таких функцій виглядає так: Name :: Add1 ();

ПРАВИЛО:

1) Статичні функції і елементи класу не асоціюються з окремими представниками класу. Звернення до них виробляється виразом вигляду:


ім'я класу :: ім'я елемента

2) Їм не передається покажчик this, тому що він асоціюється з окремим представником класу.

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

4) Статичні функції не можуть бути віртуальними.


2. Віртуальні функції

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

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

Оголошення віртуальної функції в класі:

virtual прототіп_функціі;

Зазначимо, що класи, включають такі функції, відіграють особливу роль в об'єктно-орієнтованому програмуванні. Саме тому вони носять спеціальну назву - поліморфні. p> Повернемося до згаданого вище прикладу з фігурами. Розглянемо клас Point (похідний від Location). p> Нехай у цьому класі визначена компонентна функція void Show (). Так як зовнішній вигляд фігури, для якої буде використовуватися дана функція, в базовому класі ще не визначений, то в кожен з похідних класів потрібно включити свою функцію void Show () для формування зображення на екрані. Це не дуже зручно, тому в таких випадках використовують механізм віртуальних функцій. Будь нестатичних функція базового класу може бути зроблена віртуальної, якщо в її оголошенні використовувати специфікатор virtual.


class Point: public Location {

protected:

Boolean vis;

public:

Point (int nx, int ny);

virtual void Show ();

virtual void Hide ();

virtual void Drag (int by);

Boolean Isvis () {return vis;}

void MoveTo (int nx, int ny);};


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

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

Розглянемо, як виглядатиме виклик віртуальної функції void Show () в похідному класі:


class Circle: public Point {

protected:

int R;

public:

Circle (int nx, int ny, int nr);

void Show ();

void Hide ();

void Expand (int by);

void Contract (int by);};


Як ми бачимо, специфікатор virtual можна вже не вказувати.

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


сторінка 1 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Практико-орієнтовані завдання як засіб реалізації прикладної спрямованості ...
  • Реферат на тему: Клас птахи, загальна характеристика класу
  • Реферат на тему: Створення базового класу &Рядок&, рядки ідентифікатора і десяткової рядка. ...
  • Реферат на тему: Дослідження функції. Обчислення похідних функції
  • Реферат на тему: Функції, склад, особливості та види грошей і сутність, функції та роль банк ...