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

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





atch ( ... )

{ ...

}


З описаних у програмі обробників завжди спрацьовує тільки один.

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

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

Місце, де написано слово throw, називається точкою викиду.

Ключове слово throw без операнда застосовується, коли заново викидається то виключення, яке в даний момент обробляється. Цей варіант використовується або в catch-обробнику, або у функції їм викликається.


void f1 ()

{ ...

if (<умова>)

throw "помилка";

}

void f2 ()

{ ...

if (<умова>)

{x = 3;

throw x;}

}


Коли виконується throw

1) створюється копія викинутого об'єкта;

2) "розмотується" стік, викликаючи деструктори локальних об'єктів, що виходять з області дії;

3) передається керування найближчого catch-оброблювачу, що має тип, співпадає з типом викинутого об'єкта. Копія об'єкта передається оброблювачу як параметр.

Розглянемо приклад програми, яка ілюструє роботу з графічними об'єктами. Тут реалізовані основні принципи об'єктно-орієнтованого програмування на мові C + +.


# include // директива препроцесора для роботи з графікою

# include // директива препроцесора для введення-виведення

# include // директива препроцесора для введення одиночного символу

enum Boolean {false, true};// логічний тип

class Location

{protected:

int X; int Y;// захищені поля класу

public:// відкритий блок

// Location ();// Такі конструктори без параметрів створюються компілятором. Його

// оголошувати не треба.

Location (int nx, int ny) {X = nx; Y = ny;}// Якщо функцію визначили відразу в класі, то

// це вбудована функція. Вона викликається не

// через стек, а підстановкою в програму.

int GetX () {Return X;}

int GetY () { return Y;}

};

// клас Точка

class Point: public Location

{protected:

Boolean vis;

public:

Point (int nx, int ny);// конструктор

// віртуальні функції

virtual void Show ();// функція, що реалізує відображення об'єкта на екрані

virtual void Hide ();// функція, що дозволяє приховати об'єкт

virtual void Drag (int by) ;//рух об'єкта по екрану в залежності від кроку by

Boolean Isvis () {return vis;}

void MoveTo (int nx, int ny);// перенесення точки з одного місця на екрані в інше

};

// клас Коло

class Circle: public Point

{protected:

int R;

public:

Circle (int nx, int ny, int nr);// конструктор

void Show ();// Так як клас Circle є спадкоємцем класу Point, функції

void Hide ();// Show () і Hide () також є віртуальними

void Expand (int by);// збільшення окружності

void Contract (int by) ;//зменшення окружності

};

Boolean GetDelta (int & dx, int & dy);// функція визначає яку кнопку натиснув

// користувач

Point :: Point (int nx, int ny): Location (nx, ny)

{vis = false;}

void Point :: Show ()

{vis = true; putpixel (X, Y, getcolor ());}// getcolor () повертає колір, який зараз

// встановлений

void Point :: Hide ()

{vis = false; putpixel (X, Y, getbkcolor ());}// getbkcolor () повертає колір фону

void Point :: MoveTo (int nx, int ny)

{Hide (); X = nx; Y = ny; Show ();}// точка гаситься на старому місці і відтворюється

// на новому

Boolean GetDelta (int & dx, int & dy)

{char Keych;

Boolean Quit;

dx = 0; dy = 0;

do

{Keych = getch ();

if (Keych == 13)

return (False);

if (Keych == 0)

{Quit = true;

Keych = getch ();

switch (Keych) {

case 72: dy = -1; break;

case 80: dy = 1; break;

case 75: dx = -1; break;

case 77: dx = 1; break;

default: Quit = false;};};

} while (! Quit);

return (true);}


// рух об'єкта по екрану залежно від кроку by

// Можна натискати дві кнопки одночасно, точка

// буде переміщатися відраз...


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





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

  • Реферат на тему: Особливості роботи з Power Point
  • Реферат на тему: Використання програми Power Point для створення рекламних роликів
  • Реферат на тему: ! Застосування програмного продукту Power Point у процесі автоматізації роб ...
  • Реферат на тему: Діяльність рекламного агентства GLOBAL POINT AGENCY
  • Реферат на тему: Return to materialism