Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Перевантаження операцій інкременту та декременту

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Спадкоємство є основною концепцією об'єктна-орієнтовного програмування (ООП). З його допомогою створюється ієрархія класів. Спадкоємство використовується для розширення функціональних можливостей класу. При цьому похідний клас успадковує усі методи і властивості базового класу. На відміну від С++, у С# заборонено множинне спадкоємство, тобто клас може успадкувати властивості і методи тільки від… Читати ще >

Перевантаження операцій інкременту та декременту (реферат, курсова, диплом, контрольна)

Для перевантаження оператора на користувальницький клас потрібне створення методу на класі з правильним підписом. Метод повинен бути названий «оператор Х», де Х є назва або символ оператора перевантаження. Унарні оператори мають один параметр, і бінарні оператори мають два параметри. У кожному випадку один параметр повинен бути того ж типу, класу або структури, яка оголошує оператор.

Спадкоємство є основною концепцією об'єктна-орієнтовного програмування (ООП). З його допомогою створюється ієрархія класів. Спадкоємство використовується для розширення функціональних можливостей класу. При цьому похідний клас успадковує усі методи і властивості базового класу. На відміну від С++, у С# заборонено множинне спадкоємство, тобто клас може успадкувати властивості і методи тільки від одного базового класу (предка). Множинне спадкоємство можна реалізувати за допомогою інтерфейсів. Таким чином, с С# є два типи спадкоємства: спадкоємство реалізації і спадкоємство інтерфейсів.

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

Спадкування буває відкритим (Public), закритим (Private) та захищеним (Protected). У всіх випадках клас D отримує доступ до відкритих і захищених членів B. Відмінності:

  • 1. Відкрите — Відкриті члени B стають відкритими в D. Захищені B — захищеними D. Кажуть, що клас успадковує як інтерфейс, так і реалізацію предка.
  • 2. Закрите — Відкриті і захищені члени B стають закритими в D. Застосовують коли клас повинен наслідувати тільки реалізацію.
  • 3. Захищене — відкриті і захищені члени B стають захищеними в D.

Множинне спадкування в C# реалізується через інтерфейси.

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

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

При оголошенні абстрактного методу використовується модифікатор abstract, Абстрактний метод автоматично стає віртуальним, так що модифікатор virtual при оголошенні методу не використовується.

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

Якщо в класі є хоч би один абстрактний метод, весь клас також має бути описаний як абстрактний.

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

При визначенні віртуального методу у складі базового класу перед типом значення, що повертається, указується ключове слово virtual, а при перевизначенні віртуального методу в похідному класі використовується модифікатор override. Віртуальний метод не може бути визначений з модифікатором static або abstract. Перевизначений віртуальний метод повинен мати такий саме набір параметрів, як і однойменний метод базового класу. За допомогою віртуальних методів реалізується один з основних принципів об'єктна — орієнтованого програмування — поліморфізм. Це слово в перекладі з грецького означає «багато форм», що в даному випадку означає «один виклик — багато методів».

Динамічні структури даних — це структури даних, пам’ять під які виділяється і звільняється в міру необхідності. Динамічні структури даних в процесі існування в пам’яті можуть змінювати не тільки число складових їх елементів, а й характер зв’язків між елементами. При цьому не враховується зміна вмісту самих елементів даних. Така особливість динамічних структур, як мінливість їх розміру та характеру відносин між елементами, призводить до того, що на етапі створення машинного коду програма-компілятор не може виділити для всієї структури в цілому ділянку пам’яті фіксованого розміру, а також не може зіставити з окремими компонентами структури конкретні адреси. Для вирішення проблеми адресації динамічних структур даних використовується метод, званий динамічним розподілом пам’яті, тобто пам’ять під окремі елементи виділяється в момент, коли вони «починають існувати» в процесі виконання програми, а не під час компіляції. Компілятор в цьому випадку виділяє фіксований обсяг пам’яті для зберігання адреси динамічно розміщується елемента, а не самого елемента.

Динамічна структура даних характеризується тим що:

Вона не має імені;

Їй виділяється пам’ять в процесі виконання програми;

Кількість елементів структури може не фіксуватися;

Розмірність структури може змінюватися в процесі виконання програми;

В процесі виконання програми може змінюватися характер взаємозв'язку між елементами структури.

Необхідність в динамічних структурах даних зазвичай виникає в наступних випадках.

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

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

Коли розмір даних, що обробляються в програмі, перевищує обсяг сегмента даних.

Разом з тим, зв’язне уявлення не позбавлено і недоліків, основними з яких є наступні:

На поля, що містять покажчики для зв’язування елементів один з одним, витрачається додаткова пам’ять;

Доступ до елементів зв’язної структури може бути менш ефективним за часом. Порядок роботи з динамічними структурами даних наступний:

Створити (відвести місце в динамічній пам’яті);

Працювати за допомогою покажчика;

Видалити (звільнити зайняте структурою місце).

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

Односпрямовані (однозв'язні) списки;

Двонаправлені (двузв'язні) списки;

Циклічні списки;

Стек;

Черга;

Бінарні дерева.

Препроцессори У С # визначено ряд директив препроцесора, що впливають на інтерпретацію вихідного коду програми компілятором. Ці директиви визначають порядок інтерпретації тексту програми перед її трансляцією в об'єктний код в тому вихідному файлі, де вони з’являються. Термін директива препроцесора з’явився у зв’язку з тим що подібні інструкції за традицією оброблялися на окремій стадії компіляції, званої препроцесором. Обробляти директиви на окремій стадії препроцесора в сучасних компіляторах вже не потрібно, але сама її назва закріпилася. Нижче наведені директиви препроцесора, визначені в С #.

#define #elif #else #endif #endregion #error.

#if #line #pragma #region #undef #warning.

Шаблони класів.

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

Шаблони функцій.

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

Показати весь текст
Заповнити форму поточною роботою