Приклад рішення задачі
Див. проект «Task16».
Контрольні питання
Що таке чистий віртуальний метод?
Чим абстрактний метод відрізняється від чистого віртуального?
Наведіть приклади, коли зручно використовувати абстрактні методи.
Що таке абстрактний клас?
Наведіть приклади, коли зручно використовувати абстрактні класи.
Що таке інтерфейс?
Коли зручно використовувати інтерфейси?
Дайте рекомендації по реалізації множинного спадкоємства.
Які особливості реалізації спадкоємців абстрактних класів?
Що таке модульне тестування?
17 Обробка колекцій динамічних об’єктів
Лабораторна робота №17
Мета: набути навички розробки і реалізації алгоритмів для обробки колекцій динамічних об’єктів.
Індивідуальне завдання
При розробці проекту використовувати раніше обрану прикладну область та реалізовану функціональність. Розробити методи для обробки елементів контейнеру, реалізувавши можливість угрупування, сортування, пошуку елементів за різними критеріями. Реалізовані методи впорядковування і пошуку мають бути універсальними (працювати незалежно від типу елементів контейнера).
Термінологія
Сортування (sorting) – розміщення у визначеному порядку, впорядкування, класифікація групи об’єктів.
Найвідоміши алгоритми сортування: вибором, вставкою, обміном, методом бінарної вставки, пірамідальне, швидке, злиттям, Шелла, перестановкою.
Лінійний пошук – алгоритм послідовного пошуку знаходження заданого значення довільної функції на деякому її відрізку. Цей алгоритм є найпростішим алгоритмом пошуку, не накладає жодних обмежень на функцію і має просту реалізацію. Пошук значення функції здійснюється простим порівнянням чергового розглянутого значення і, якщо значення збігаються, то пошук вважається завершеним. Лінійний пошук часто використовується у вигляді лінійних алгоритмів пошуку максимуму/мінімуму.
Двійковий пошук – алгоритм знаходження заданого значення у впорядкованому масиві, який полягає у порівнянні серединного елемента масиву з шуканим значенням, і повторенням алгоритму для тієї або іншої половини, залежно від результату порівняння. Двійковий пошук суттєво швидший за лінійний, відносно простий в реалізації і загальновживаний.
Під угрупованням мається на увазі спосіб отримання впорядкованої послідовності груп об’єктів, відібраних і відсортованих за деяким критерієм. В результаті має бути отримана відсортована послідовність груп елементів. Елементи початкової послідовності розбиваються на групи. Кожна група є послідовністю елементів, що задовольняють деякій умові. Усередині групи елементи можуть бути впорядковані по додатковому критерію. Наприклад, список пацієнтів лікарні сортується за ознакою «пенсіонер». Окремо кожна з двох отриманих груп («пенсіонери» і «не пенсіонери») впорядковується за прізвищем в алфавітному порядку.
Складний об’єкт, наприклад, список, повинен надавати спосіб доступу до своїх елементів, не розкриваючи їхню внутрішню структуру. Іноді треба обходити список у залежності від задачі, що вирішується. При цьому немає ніякого сенсу засмічувати інтерфейс класу «Список» операціями для усіх потрібних варіантів обходу, навіть якщо їх усі можна передбачити заздалегідь. Крім того, іноді треба, щоб в один момент часу існувало декілька активних операцій обходу списку. Все це призводить до необхідності реалізації шаблону Ітератор.
Ітератор – шаблон проектування, належить до класу шаблонів поведінки. Надає спосіб послідовного доступу до всіх елементів складеного об’єкта, не розкриваючи його внутрішнього улаштування.
Під компаратором мають на увазі алгоритм порівняння пари елементів, який зазвичай реалізовують у вигляді зовнішньої функції або методу класу елемента контейнера.
Do'stlaringiz bilan baham: |