|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Методи та засоби програмування
Для функціонування розробленого класу та тестової програми необхідні наступні методи та засоби: - дружні функції класу; - перевантаження операторів та функцій; - послідовні контейнери STL – deque - інструменти роботи з файловими потоками вводу-виводу - методи сортування - методи пошуку Функція friend - це функція, яка не є членом класу, але має доступ до закритих і захищених членів класу. Дружні функції не вважаються членами класу; це звичайні зовнішні функції з особливими правами доступу. Дружні функції не розташовані в області класу і не викликаються за допомогою операторів вибору члена (. І ->), якщо вони не є членами іншого класу. Функція friend оголошується за допомогою класу, який надає доступ. Оголошення friend можна помістити в будь-якому місці оголошення класу. На нього не впливають ключові слова управління доступом. Перевантаження функцій та операторів в С++ - це один з типів поліморфізму, забезпечуваного у С++. У С++ декілька функцій можуть мати одне і те ж ім’я. В цьому випадку функція, що ідентифікується цим ім’ям, називається перевантаженою. Перевантажувати можна тільки функції, які відрізняються або типом, або числом аргументів. Перевантажувати функції, які відрізняються лише типом повертаємого значення, не можна. Перевантажуванні функції дають можливість спрощення написання та читання коду. Щоб перевантажити функцію, потрібно просто оголосити, а потім визначити всі необхідні варіанти її виклику. Компілятор вибирає правильний варіант виклику в залежності від числа та типів аргументів функції. Також С++ надає можливість перевантажувати конструктори(деструктори не можна) та оператори. Оператор в С ++ - це деяка дія або функція, позначена спеціальним символом(+, -, ==,!=, >, < і т.д.). Ключове слово operator надає оголошення функції, що вказує що operator-symbol означає при його застосуванні до екземплярів класу. Це надає оператору багатозначність або "перевантажує" його. Компілятор розрізняє різні види одного і того ж оператора, вивчаючи типи його операндів. Перевантажувати можна будь-які оператори, окрім наступних шести: . - Вибір члена .* -Вибір покажчика на член :: -Оператор області видимості ?: - -Умовний оператор # -Препроцесор: перетворення в рядок ## -Препроцесор: конкатенація Для зручної обробки динамічних масивів даних застосується найчастіше клас deque стандартної бібліотеки шаблонів STL. Deque - це двостороння черга. Дозволяє зберігати елементи, які будуть доступні безпосередньо через ітераторів довільного доступу, при чому границі контейнера можуть автоматично розширюватися і стискатися по мірі необхідності. Таким чином, deque забезпечує функціональні можливості, подібні до вектора, але з ефективною вставки і видалення елементів і на початку послідовності, і в її кінці. Але, на відміну від векторів, deque не гарантовано зберігає всі свої елементи в суміжних комірках зберігання: Звернення до елементів в deque шляхом покажчика на інший елемент викликає невизначену поведінку. Перш ніж застосовувати клас, необхідно додати заголовок: #include <deque>. Для здійснення операцій з файлами, бібліотека введення-виводу передбачає три класи: ifstream, ofstream, fstream. Ці класи є похідними, відповідно, від класів istream, ostream та iostream. Оскільки ці останні класи, у свою чергу, є похідними від класу ios, класи файлових потоків успадковують всі функціональні можливості своїх батьків. Для реалізації файлового введення-виводу потрібно включити в програму заголовний файл <fstream>. Щоб відкрити файл для введення або виводу, можна використовувати одну з форм його конструктора: fstream fs(“File.dat”); Перевірити, чи файл успішно відкрився, можна за допомогою функції is_open(); Якщо при відкритті файлу не вказаний режим ios::binary, файл відкривається в текстовому режимі і після того, як файл успішно відкритий, для виконання операцій введення-виводу можна використовувати оператори витягання і вставки в потік. Можно використовувати такі фуцкії, як: getline (istream& is, string& str), fprintf() і fscanf(); Для перевірки, чи досягнутий кінець файлу, можна використовувати функцію eof() класу ios, що має наступний прототип: bool eof() const; Для завершення роботи з файлом потрібно закрити файл, викликавши функцію-член close(); Алгоритм сортування - це алгоритм для упорядкування елементів у списку. У випадку, коли елемент списку має кілька полів, поле, що служить критерієм порядку, називається ключем сортування. На практиці в якості ключа часто виступає число, а в інших полях зберігаються будь-які дані, жодним чином не впливають на роботу алгоритму. Э багато алгоритмів сортування, деякі з них представляє стандартна бібліотека STL, але програміст може створювати та використовувати свої алгоритму сортування. Найпростіше сортування – це сортування бульбашкою. Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою. Оскільки для роботи з елементами масиву він використовує лише порівняння, це сортування на основі порівнянь. Прикладом сортування методами бібліотеки STL є функція sort, яка застосовується до контейнерів: void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp); first – ітератор на перший елемент контейнеру last - останній comp – функція порівняння Пошук необхідних даних у масиві також може виконуватися двома способами. За допомогою методів бібліотеки STL, та за допомогою методів, передбачених самим програмістом. Приклад бібліотеки STL: std::search – лінійний пошук або std::binary_search – бінарний пошук. Найпростіший варіант пошуку – це перебір усіх елементів масиву, де виконується пошук, та порівняння їх з критерієм пошуку.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |