Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metoda_KP_OP.doc
Скачиваний:
2
Добавлен:
16.08.2019
Размер:
183.3 Кб
Скачать

Абстракції даних

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

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

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

У секції операцій утримуються специфікації для всіх операцій. Якщо операція - процедура, то її специфікація буде процедурною специфікацією. У цих специфікаціях можуть використовуватися концепції, введені в секції опису.

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

Акцент на взаємозв'язках між операціями робить абстракцію даних істотно відмінної від набору процедур.

Абстракції ітерації

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

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

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

Як і інші абстракції, ітератори повинні бути визначені через специфікації. Форма специфікації ітератора аналогічна формі для процедури.

Ключове слово iter використовується для позначення абстракції ітератора і містить вхідні дані. Ітератор може зовсім не видавати об'єктів на кожній ітерації або видати кілька об'єктів. Число і тип цих об'єктів описуються в пропозиції yields. Ітератор може не видавати ніяких результатів, коли він закінчується нормально, але він може закінчуватися по винятковій ситуації з ім'ям і результатами, зазначеними в пропозиції signals.

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

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

Ітератори корисні самі по собі, однак їхнім основним застосуванням є операції над типами даних.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]