Мейер Бертран
Интернет Университет Информационных Технологий, INTUIT.ru
Абстрактные типы данных (АТД)
Источник: Море(!)аналитической информации ! ::
CITFORUM.RU, 2006
http://citforum.ru/programming/theory/adt/
Лекция из курса
Основы объектно-ориентированного программирования
Чтобы объекты играли лидирующую роль в архитектуре ПО, нужно их адекватно описывать. В этой лекции показывается, как это делать. Если вам не терпится окунуться в глубины объектной технологии и
подробно изучить множественное наследование, динамическое связывание и другие игрушки, то, на первый взгляд, эта лекция может показаться лишней задержкой на этом пути, поскольку она в основном
посвящена изучению некоторых математических понятий (хотя вся используемая в ней математика элементарна).
Но так же, как самый талантливый музыкант извлечет пользу из изучения основ музыкальной теории, знания об абстрактных типах данных помогут вам понять и получить удовольствие от практики
ОО-анализа, проектирования и программирования, хотя привлекательность этих понятий, возможно, уже проявилась и без помощи теории. Поскольку абстрактные типы данных являются теоретическим базисом для
всего метода, следствия идей, вводимых в этой лекции, будут ощущаться во всей оставшейся части книги.
Более того, как будет видно в конце лекции, эти идеи выходят за рамки собственно ПО и приводят к принципам интеллектуальных исследований, которые, возможно, применимы и в других дисциплинах.
Это открыло мне глаза, я начал понимать, что значит использовать инструмент, называемый алгеброй. Черт возьми, никто никогда не говорил мне ничего подобного раньше. Мсье Дюпюи [учитель математики]
произносил напыщенные фразы об этом предмете, но ни разу не сказал этих простых слов: это разделение труда, которое, как и всякое другое разделение труда производит чудеса и позволяет уму
сконцентрировать все свои силы только на одной стороне объектов, только на одном из их качеств.
Насколько другим это предстало бы перед нами, если бы мсье Дюпюи сказал нам: "Этот сыр мягкий или твердый, он белый, он синий, он старый, он молодой, он твой, он мой, он легкий или он тяжелый. Из
всех его многочисленных качеств давайте рассматривать только вес. Каким ни был этот вес, давайте назовем его A. А теперь, не думая больше о весе, давайте применять к А все, что мы знаем о
количестве."
Такая простая вещь, но до сих пор никто не говорил нам о ней в этой отдаленной провинции...
Стендаль, "Жизнь Анри Брюлара"
Что касается абстракции, то она состоит в отделении ощутимых свойств тел либо от других их свойств, либо от самих тел, которые ими обладают. Когда это отделение делается неудачно или неверно
применяется, возникают ошибки, что возможно как в философских вопросах, так и в физических и математических вопросах. Прямой путь к ошибке в философии - недостаточно упростить изучаемые объекты, и
верный путь к получению ошибочных результатов в физике и математике - это считать объекты менее сложными, чем они есть на самом деле.
Дени Дидро, "Письмо слепого на благо тех, кто может видеть"
Критерии
Чтобы получить надлежащие описания объектов, наш метод должен удовлетворять трем условиям:
- Описания должны быть точными и недвусмысленными.
- Они должны быть полными - или, по крайней мере, иметь в каждом конкретном случае нужную нам полноту (некоторые детали можно намеренно опускать).
- Они не должны быть излишне специфицированы.
Последний пункт делает ответ нетривиальным. В конце концов, легко сделать описание точным, недвусмысленным и полным, если мы готовы "выдать все секреты", указав все детали объектного
представления. Но такое описание, как правило, будет включать чересчур много информации для авторов программ, которым требуется доступ к таким объектам.
Полностью текст этой лекции находится по адресу:
http://citforum.ru/programming/theory/adt/ |