DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Робота з класами в С++ ( №7 )

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Програмування мовою С

Частина тексту файла (без зображень, графіків і формул):

Лабораторна робота № 7 Робота з класами в С++ 1.Теоретичні відомості 1.1. Основні поняття об’єктно-орієнтованого програмування Об'єкт - це абстрактна сутність, наділена характеристиками об'єктів навколишнього реального світу. Створення об'єктів і маніпулювання ними - це зовсім не привілей мови C++, а скоріше результат методології програмування, що втілює в кодових конструкціях опис об'єктів і операції над ними. Кожен об'єкт програми, як і будь-який реальний об'єкт, відрізняється власними атрибутами і характерною поведінкою. Об'єкти можна класифікувати по різних категоріях. Кожен клас займає визначене місце в ієрархії класів. Таким чином, будь-який клас визначає деяку категорію об'єктів, а всякий об'єкт є екземпляр деякого класу. Об’єктно-орієнтоване програмування (ООП) — це методика, що концентрує основну увагу програміста на зв'язках між об'єктами, а не на деталях їхньої реалізації. Основні принципи ООП: інкапсуляція; спадкування; поліморфізм; створення класів і об'єктів) Інкапсуляція є об'єднання в єдиному об'єкті даних і кодів, що оперують з цими даними. У термінології ООП дані називаються членами даних (data members) об'єкта, а коди - об'єктними методами або функціями-членами (methods, member functions). Інкапсуляція дозволяє в максимальному ступені ізолювати об'єкт від зовнішнього оточення. Вона істотно підвищує надійність розроблюваних програм, тому що локалізовані в об'єкті функції обмінюються з програмою порівняно невеликими обсягами даних, причому кількість і тип цих даних звичайно ретельно контролюються. У результаті заміна або модифікація функцій і даних, інкапсульованих в об'єкт, як правило, не спричиняє негативних наслідків для програми в цілому (з метою підвищення захищеності програм в ООП майже не використовуються глобальні змінні). Іншим достатньо важливим наслідком інкапсуляції є легкість обміну об'єктами, переносу їх з однієї програми в іншу. Запозичена в природи ідея спадкування вирішує проблему модифікації поведінки об'єктів і додає ООП виняткову силу і гнучкість. Спадкування дозволяє, практично без обмежень, послідовно будувати і розширювати класи, створені розробниками. Починаючи з найпростіших класів, можна створювати похідні класи по зростаючій складності, що не тільки легкі в налагодженні, але і прості за внутрішньою структурою. Послідовне проведення в життя принципу спадкування, особливо при розробці великих програмних проектів, добре погоджується з технікою спадного структурного програмування (від загального до частки), і багато в чому стимулює такий підхід. При цьому складність коду програми в цілому істотно скорочується. Похідний клас (нащадок) успадковує усі властивості, методи і події свого базового класу („батька”) і всіх його попередників в ієрархії класів. При спадкуванні базовий клас обростає новими атрибутами й операціями. У похідному класі звичайно з'являються нові члени даних, властивості і методи. При роботі з об'єктами програміст звичайно підбирає найбільш підходящий клас для рішення конкретної задачі і створює одного або декількох нащадків від нього, що здобувають здатність робити не тільки те, що закладено в „батьку”. Дружні функції дозволяють похідному класові одержати доступ до всіх членів даних зовнішніх класів. Крім того, похідний клас може перевантажувати (overload) наслідувані методи в тому випадку, коли їхня робота в базовому класі не пасує нащадкові. Використання перевантаження в ООП усіляко заохочується, хоча в прямому розумінні значення цього слова перевантажень звичайно уникають. Говорять, що метод перевантажений, якщо він асоціюється з більш ніж одною однойменною функцією. Поліморфізм - це властивість родинних об'єктів (тобто об'єктів, класи яких є похідними від одного „батька”) поводитися по-різному в залежності від ситуації, що виникає в момент виконання програми. У рамках ООП програміст може впливати на поведінку об'єкта тільки побічно, змінюючи вхідні в нього методи і додаючи „нащадкам” відсутні в „батька” специфічні властивості. Для зміни методу необхідно перевантажити його в „нащадку”, тобто оголосити в „нащадку” однойменний метод і реалізувати в ньому потрібні дії. У результаті в об'єкті-батьку й об'єкті-нащадку будуть діяти два однойменних методи, що мають різну кодову реалізацію і, отже, що додають об'єктам різне поведінку. Наприклад, в ієрархії родинних класів геометричних фігур (точка, пряма лінія, квадрат, прямокутник, окружність, еліпс і т.д.) кожен клас має метод Draw, що відповідає за належний відгук на подію з вимогою намалювати цю фігуру. Завдяки поліморфізмові, „нащадки” можуть перевантажувати загальні методи «батька» для того, щоб реагувати специфічним образом на ту саму подію. 1.2.Класи в C++ Перед тим як працювати з класом, програма повинна його оголосити. Розглянемо синтаксис оголошення класу на прикладі класу circle: class Circle { public: Circle () ; void SetRadius(void) ; void GetRadius(void) ; ~Circle () ; private: void CalculateArea(void); int radius; int color; }; Ключове слово class показує компілятору, що все, що знаходиться у фігурних дужках ({}) належить оголошенню класу. (Не забувайте ставити крапку з комою наприкінці оголошення.) Оголошення класу містить оголошення елементів даних (наприклад, int radius) і прототипи функцій-елементів класу. В оголошенні класу circle містяться наступні елементи даних: int radius; int color; Оголошення також містить п'ять прототипів функцій-елементів: Circle();//конструктор void SetRadius(void) ; void GetRadius(void) ; ~Circle () ;//деструктор void CalculateArea(void); Прототипи функцій і оголошення елементів даних включаються в оголошенні класу в розділи public (відкритий) або private (закритий). Ключові слова public і private говорять компілятору про приступність елементів-функцій і даних. Наприклад, функція SetRadius() визначена в розділі public, і це означає, що будь-яка функція програми може викликати функцію SetRadius(). Функція CalculateArea() визначена в розділі private, і цю функцію можна викликати тільки в коді функцій-елементів класу Circle. Аналогічно, оскільки елемент даних radius оголошений у розділі private, прямий доступ до нього (для установки або читання його значення) можливий тільки в коді функцій-елементів класу Circle. Якби ви оголосили елемент даних radius у розділі public, то будь-яка функція програми мала би доступ (для читання і присвоювання) до елемента даних radius. Нижче в якості прикладу наводиться програма формування и виведення на екоан платіжної відомості: Приклад: #include <iostream> #include <cstring> using namespace std; class employee { char name[80]; // private by default public: void putname(char *n); // these are public void getname(char *n); private: double wage; // now, private again public: void putwage(double w); // back to public double getwage(); }; void employee::putname(char *n) { strcpy(name, n); } void employee::getname(char *n) { strcpy(n, name); } void employee::putwage(double w) { wage = w; } double employee::getwage() { return wage; } int main() { employee ted; char name[80]; ted.putname("Ted Jones"); ted.putwage(75000); ted.getname(name); cout << name << " makes $"; cout << ted.getwage() << " per year."; return 0; } 2. Завдання до лабораторної роботи: Оголосити клас трикутників, методи якого дозволяють вводити довжини сторін і обчислювати площу і периметр. Створити два об’єкти класу трикутників, і для одного обчислити площу, а для другого-периметр.
Антиботан аватар за замовчуванням

04.12.2011 00:30

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!