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

Вопрос 4.

АТД, реализованный как файл С, не дотягивает до полноценного типа данных, каким является любой стандартный (встроенный) тип:

  • Необходимо самому кодировать процедуры создания и уничтожения экземпляра

  • Этот тип не поддерживается компилятором в смысле контроля правильности использования

  • Этот тип не передается функциям как параметр

Концепция объектно-ориентированной технологии

В конце 80-х популярность завоевала методика ОО-проектирования и программиро-вания: языки Object Pascal, Eiffel, Object C, C++ и др. В этих языках класс – это также АТД, но более полноценный тип. Пример описания класса «стек символов» на С++:

class stack

{

// скрытая часть: инкапсулированные данные

int size; // размер

char* top // верх

char* bottom // дно

public: // интерфейс объектов класса stack

stack (int); // конструктор

~stack; // деструктор

void push (char);

void pop();

}

Вопрос 5.

Однако простые классы как АТД страдают отсутствием гибкости: если в другом контексте тип нужно повторно использовать с небольшими изменениями, то его приходится заново описывать. Наследование и полиморфизм решают эту проблему: общие свойства объектов воплощаются в базовом классе, а специфические свойства (данные и операции) добавляются или переопределяются в производных классах.

ОО-технология улучшает качество ПП, а именно:

  • Ясность, понятность, обозримость проекта и кода. Разрыв между понятиями предметной области и элементами программы сокращается: объекты имеют прототипы в реальности. Код может быть короче в 1.5-2 раза из-за наследования (общие свойства разделяются родственными объектами). Сокращается пространство имен: полиморфные методы имеют несколько реализаций.

  • Корректность (безошибочность) - благодаря инкапсуляции и статическому контролю классов как типов объектов.

  • Повторное использование библиотек классов лучше, чем библиотек подпрограмм. Вопрос 6.

ОО-технология хорошо соответствует нисходящей и инкрементальной стратегии разработки; раздельная компиляция описаний классов и их реализаций способствует раннему обнаружению ошибок сопряжения.

Объектная структура ПП хорошо соответствует архитектуре распределенных систем, где естественна множественная реализация методов на разных машинах.

Недостаток ОО-программ - потери эффективности по времени из-за:

  • динамического связывания полиморфных методов - в среднем в два раза дольше, чем обращение к обычной подпрограмме

  • динамического порождения и уничтожения объектов, что дороже статического

  • в большой системе разные классы объявляются в разных файлах, и при вызове методов часто требуются скачки по памяти, ухудшающие локальность обращения к памяти и приводящие к листанию (свопингу)

ОО парадигма не ограничивается программированием приложений. Другие сферы:

  1. Многооконные среды (MS Windows, X/Window для Unix): объекты - окна, методы - способы манипуляции ими, атрибуты (данные) - графические стили, наследование - дочерние окна наследуют атрибуты родительских.

  2. Операционные системы (NextStep, Taligent): объекты - ресурсы ОС (такие, как память или файлы).

  3. ОО базы данных (OpenODP, UniSQL) - нужны для данных со сложной структурой и неоднородных (много типов, но мало экземпляров) - мультимедиа, САПР, геоинформационные системы, базы знаний. Данные хранятся вместе с методами их семантической интерпретации, нужными для поиска и отображения (вывода).

Соседние файлы в предмете Информатика