Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

О.О.П / ооп / 4_кол / Лекції / ООП (1.Технологии программирования)

.doc
Скачиваний:
22
Добавлен:
30.05.2020
Размер:
86.02 Кб
Скачать

Лекція 1:

Тема: Технології програмування. Поняття технології програмування. Методи програмування. Етапи розвитку технологій і методів програмування.

План:

1. Введення.

2. Перехід від процедурного програмування до об'єктного.

3. Модульне програмування.

1. Введення

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

1. Від процедурного програмування до об'єктного

Перші програми були організовані дуже просто. Вони складалися з власне програми на машинній мові і оброблюваних даних.

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

Мал. 1. Архітектура програми, що використовує глобальну область даних

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

Підпрограми з локальними даними

Мал. 2. Архітектура програми, що використовує підпрограми з локальними даними

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

Зусиллями багатьох авторів така технологія була створена і отримала назву «Структурне програмування». Структурним програмуванням є сукупність технологічних прийомів, які охоплюють виконання всіх етапів розробки програмного забезпечення.

Були сформульовані основні принципи виконання розробки:

  • принцип низхідної розробки;

  • власне структурне програмування;

  • принцип структурного контролю (чим раніше виявлена помилка, тим простіше за неї виправити).

У основі структурного програмування лежить декомпозиція (розбиття на частини) складних систем з метою подальшої реалізації у вигляді окремих невеликих (до 40 ... 50 операторів) підпрограм. Даний спосіб отримав назву процедурної декомпозиції.

Метод покрокової деталізації полягає в наступному:

  1. визначається загальна структура програми у вигляді одного з трьох варіантів:

  • послідовності підзадач (наприклад, введення даних, перетворення даних, виведення даних)

  • альтернативи підзадач (наприклад, додавання записів до файлу або їх пошук)

  • повторення підзадачі (наприклад, циклічно повторювана обробка даних);

  1. кожна підзадача, у свою чергу, розбивається на підзадачі з використанням тих же структур;

  2. процес продовжується, поки на черговому рівні не виходить підзадача, яка досить просто реалізується засобами використовуваної мови (1-2 керівників оператора мови).

Приклад 1. Процедурна декомпозиція (програма «Записник»): Хай потрібно розробити програму, яка в зручній для користувача формі дозволить записувати і потім знаходити телефони різних людей і організацій. «Зручна» форма на сучасному рівні програмування припускає спілкування програми з користувачем через «меню».

Аналіз завдання показує, що програму можна будувати як послідовність підпрограм. Отже, на першому кроці декомпозиції з використанням покрокової деталізації отримуємо

Основна програма:

Почати роботу.

Вивести меню на екран.

Ввести команду.

Виконати цикл обробки команд, що вводяться.

Завершити роботу.

Перші три підзадачі, виявлені на даному кроці, представляються нескладними, тому на наступному кроці деталізуємо дію «Виконати цикл обробки команд, що вводяться»

Виконати цикл обробки команд, що вводяться:

цикл-пока команда = «завершити роботу»

Виконати команду.

Ввести команду

все-цикл.

Після цього деталізуємо операцію «Виконати команду». Виконуємо декомпозицію, використовуючи відразу декілька конструкцій галуження.

Виконати команду:

якщо команда= «відкрити книжку»

то Відкрити книжку

інакше якщо команда= «додати»

то Додати запис

інакше якщо команда= «знайти»

то Знайти запис

все-якщо

все-якщо

все-якщо.

На цьому кроці можна поки зупинитися, оскільки дії, що залишилися, достатньо прості. «Вклавши» результати покрокової деталізації, отримаємо структурне представлення алгоритму основної програми об'ємом не більше 20... 30 операторів.

Основна програма:

Почати роботу.

Вивести меню на екран.

Ввести команду.

цикл-пока команда = «завершити роботу»

якщо команда= «відкрити книжку»

то Відкрити книжку

інакше якщо команда = «додати»

то Додати запис

інакше якщо команда= «знайти»

то Знайти запис

все-якщо

все-якщо

все-якщо

Ввести команду

все-цикл

Завершити роботу.

Остаточно, на першому рівні виділені підзадачі: «Вивести меню», «Ввести команду», «Відкрити книжку», «Додати запис» і «Знайти запис».

На наступному рівні визначаються підзадачі завдань другого рівня

наприклад:

Открити_книжку:

Ввести ім'я файлу

якщо існує файл Ім'якнижки

то Відкрити файл

інакше Вивести повідомлення про помилку

все-якщо

На цьому етапі отримуємо підзадачі: «Ввести ім'я файлу» і «Відкрити файл». Поступивши аналогічно з найбільш складними підзадачами першого рівня, отримуємо схему дворівневої алгоритмічної декомпозиції завдання.

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

Вивести вікно з текстом

Ввести ім'я файлу

Відкрити файл

Ввести запис

Додати запис у файл

Ввести ім'я

Знайти запис у файлі

Мал. 4. Алгоритмічна декомпозиція системи «записник»

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

3. Модульне програмування

Модульне програмування (мал. 5) припускає виділення груп підпрограм, що використовують одні і ті ж глобальні дані, в окремо компільовані модулі (бібліотеки підпрограм).

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

Мал. 5. Архітектура програми, що складається з модулів

Прагнення зменшити кількість зв'язків між окремими частинами програми привело до появи об'єктно-орієнтованого програмування (ООП).

Контрольні питання:

1. Недоліки технології програмування, які привели до створення процедурного програмування.

2. Основні принципи структурного програмування.

3. Метод покрокової деталізації.

4. Модульне програмування.

Література:

  1. Архангельский А.Я. Программирование в Delphi 7, М.,: ООО «Бином-Пресс», 2003 г. – 1152 с.

  2. Дарахвелидзе П. Г., Марков Е. П. Программирование в Delphi 7. — СПб.: БХВ-Петербург, 2003. — 784 с: ил.

  3. Колосов С.В. Программирование в среде Delphi., - Мн.: БГУИР, 2005, - 164 с.

  4. Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Об'ектно-ориентированное программирование: Учеб. Для вузов / Под ред. Г.С.Ивановой. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2001 – 320с.

  5. Пестриков В.М., Маслобоев А.Н., Delphi на примерах. – СПб.: БХВ – Петербург, 2005. 496 с.

6