
- •1. Основні терміни технології програмування
- •2. Класифікація програмного забезпечення
- •Поняття життєвого циклу розробки програмного забезпечення.
- •Етапи розробки
- •Базові моделі розробки програмних продуктів.
- •Вимоги до методології та технології розробки пп
- •Каскадна модель
- •3. Модель прототипування програмного продукту
- •4. Спіральна модель
- •5. Модель rad
- •6. Модель екстремального програмування (xp)
- •7. Модель msf (Microsoft Solutions Framework)
- •Принципи й види налагодження.
- •Аксіоми налагодження.
- •Автономне налагодження модуля.
- •Комплексне налагодження програмного засобу.
- •Інструменти розробки програмних засобів.
- •Інструментальні середовища розробки й супроводу програмних засобів.
- •Інструментальні середовища програмування.
- •Поняття комп'ютерної технології розробки програмних засобів і її робочі місця.
- •Інструментальні системи технології програмування.
- •Приклад реалізації класу Log.
- •Розробка програмного продукту з двома потоками
- •Визначення крапок контролю програмного продукту.
- •Визначення кількості викликів
- •Визначення ступеня покриття
- •Фундаментальні проблеми профілювання.
- •Причини рефакторингу
- •Підстави для проведення рефакторингу
- •Прийоми рефакторингу
- •Автоматизований рефакторинг
- •1. Принципи повторного використання елементів програм
- •2. Створення шаблонів форм у вигляді файлів
- •3. Використання шаблонів форм у новому проекті
- •4. Збереження шаблонів форм в депозитарії
- •5. Використання шаблонів форм із депозитарію
- •Шаблони класів на мові програмування с#.
- •Приклади шаблонів (класів шаблонів).
- •1. Використання підпрограм в оброблювачах подій
- •2. Звертання до активного компонента не за ім’ям
- •2. Обробка групи компонентів
- •4. Обробка компонентів як масиву
- •5. Сортування даних у компонентах
- •1. Принципи модульного програмування
- •2. Принцип «приховання даних»
- •3. Поняття модуля в Object Pascal
- •4. Структура модульного файлу
- •5. Створення модуля в Object Pascal
- •6. Створення модуля з переліком стандартних діалогів
- •7. Використання текстових констант у модулях
- •8. Створення підпрограм для обробки компонентів
- •1. Поняття dll
- •2. Створення dll бібліотеки в Delphi
- •3. Внесення форм в dll
- •4. Використання dll бібліотеки
- •Питання для самоконтролю
- •Використання регулярних виразів у програмах.
- •1. Призначення зовнішніх компонентів
- •2. Установка й видалення зовнішніх компонентів
- •3. Установка й видалення бібліотек компонентів
- •4. Запуск зовнішніх програм і файлів
- •Питання для самоконтролю
- •1. Загальні принципи технології com
- •2. Робота з com-сервером Microsoft Word
- •Робота з документами в Microsoft Word
- •Використання шаблону для формування документів
- •Робота з таблицями
- •Вставка малюнків і їх форматування
- •1. Операції з Com-Сервером Microsoft Excel
- •Робота із книгами в Microsoft Excel
- •Робота з аркушами книги в Microsoft Excel
- •Використання шаблону для формування книги
- •Формування таблиці
- •6. Форматування чарунок
- •Види довідкових систем
- •Інші засоби підтримки користувача
- •2.Формати довідників
- •3.Створення довідки у форматі html Help
- •4.Створення контекстної довідки
- •5.Інтеграція довідкового файлу в додаток
- •Перелік шаблонів, що породжують
- •Перелік структурних шаблонів
- •Перелік шаблонів поведінки
- •Призначення патерну Singleton
- •Реалізація патерну Singleton
- •Результати застосування патерну Singleton
- •Призначення патерна Observer
- •Постановка проблеми, що вирішується за допомогою патерна
- •Структура патерна Observer
- •Приклад патерна Observer
- •Реалізація патерна Observer
- •Реалізація патерну Observer: до та після
- •Призначення патерну Strategy
- •Опис патерну Strategy
- •Реалізація патерну Strategy
- •Призначення патерна Factory Method
- •Опис патерну Factory Method
- •Реалізація патерна Factory Method
Результати застосування патерну Singleton
Переваги патерну Singleton
Клас сам контролює процес створення єдиного екземпляра.
Патерн легко адаптувати для створення потрібного числа примірників.
Можливість створення об'єктів класів, похідних від Singleton.
Недоліки патерну Singleton
У разі використання декількох взаємозалежних одинаків їх реалізація може різко ускладнитися.
Питання для самоконтролю:
Призначення патерну Singleton.
Наведіть практичні приклади необхідності використання даного патерну.
Приведіть програмний код класичної реалізації патерну.
Приведіть код покращенної реалізації патерну.
У чьому полягає різниця між класичною реалізацією та іншими реалізаціями.
Переваги та результати застосування патерну.
Лекція №21
Тема: Observer, його призначення та реалізація у програмах.
Мета: Отримання знань з реалізації патерну Observer та його іикористанні при розробці програм.
Перелік питань, що розглядаються на лекції:
Призначення патерна Observer.
Постановка проблеми, що вирішується за допомогою патерна.
Структура патерна Observer.
Приклад патерна Observer.
Реалізація патерна Observer.
Призначення патерна Observer
Патерн Observer визначає залежність "один-ко-многим" між об'єктами так, що при зміні стану одного об'єкта всі залежні від нього об'єкти повідомляються і оновлюються автоматично.
Патерн Observer инкапсулирует головний (незалежний) компонент в абстракцію Subject і змінювані (залежні) компоненти в ієрархію Observer.
Патерн Observer визначає частину "View" в моделі Model-View-Controller (MVC).
Патерн Observer знаходить широке застосування в системах користувальницького інтерфейсу, в яких дані та їх подання ("види") відокремлені один від одного. При зміні даних повинні бути змінені всі уявлення цих даних (наприклад, у вигляді таблиці, графіка та діаграми).
Постановка проблеми, що вирішується за допомогою патерна
Є система, що складається з безлічі взаємодіючих класів. При цьому взаємодіючі об'єкти повинні знаходитися в узгоджених станах. Ви хочете уникнути монолітності такої системи, зробивши класи слабо пов'язаними (або повторно використовуваними).
Патерн Observer визначає об'єкт Subject, який зберігає дані (модель), а всю функціональність "уявлень" делегує слабосвязанних окремих об'єктах Observer. При створенні спостерігачі Observer реєструються в об'єкта Subject. Коли об'єкт Subject змінюється, він сповіщає про це всіх зареєстрованих спостерігачів. Після цього кожен cпостерігач запитує у об'єкта Subject ту частину статків, яка необхідна для відображення даних.
Така схема дозволяє динамічно налаштовувати кількість і "типи" уявлень об'єктів.
Описаний вище протокол взаємодії відповідає моделі витягування (pull), коли суб'єкт інформує спостерігачів про своє зміні, і кожен спостерігач відповідальний за "витягування" у Subject потрібних йому даних. Існує також модель проштовхування, коли суб'єкт Subject посилає ("проштовхує") спостерігачам детальну інформацію про своє зміні.
Існує також ряд питань, про які слід згадати, але обговорення яких залишиться за рамками цієї лекції:
Реалізація "компресії" сповіщень (посилка єдиного сповіщення на серію послідовних змін суб'єкта Subject).
Моніторинг декількох суб'єктів за допомогою одного спостерігача Observer.
Виключення «висячих» посилань у спостерігачів на віддалені суб'єкти. Для цього суб'єкт повинен повідомити спостерігачів про своє видаленні.
Патерн Observer вперше був застосований в архітектурі Model-View-Controller мови Smalltalk, що представляє каркас для побудови користувацьких інтерфейсів.