Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 232

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 226 227 228 229 230 231 < 232 > 233 234 235 236 237 238 .. 316 >> Следующая

11.4.2. Абстрактное и конкретное представления данных
реде всего, разберемся с тем, что означает абстрактное представление даннх в программировании.
Предельно абстрактным представлением данных (пока мы не имеем дело со значениями высих типов) мо но считать алгебраическу систему. на состоит из совокупности непустых множеств (носителей системы), которые соответству т базовм типам данных рассматриваемой структуры, совокупности функций и предикатов над этими носителями, часть из которх станет методами создаваемых программных объектов5, а часть так и останется призраками.
Соответственно, данные считаются изоморфными, если изоморфны со-ответствуие им алгебраические системы.
о это предельно абстрактное математическое представление данных недостаточно для программирования. Подобно тому, как было введено понятие абстрактного синтаксиса программ , мо но выделить и абстрактное программное представление, фиксируее те программные суности, которые обязаны быть представлен для реализации ну ных нам алгоритмов над рассматриваемой структурой данных. екоторм (весьма полезнм, но недостаточным!) приближением к абстрактному представлению данных в программировании служат абстрактные классы в ООП (см. стр. 717).
В абстрактном представлении мы фиксируем лиь необходимые для реализуемого алгоритма особенности структур данных и методов. частности, мо но практически полность игнорировать вопрос представления информации при вводе и выводе, если данные вопросы не являются критическими для алгоритма. Но даже если эти вопросы оказались для нас критиче-
5 Здесь слово метод полностью согласуется с тем значением, которое ему в идеале желают придать в объектно-ориентированном программировании, но никак не привязано к тому, является ли конкретная реализация объектной.
11.4. ЛАБИРИНТ
665
скими, то в абстрактном представлении мо но и ну но отвлечься от конкретных деталей дизайна оболочки создаваемой программы, сосредоточившись на концептуальных вопросах интерфейса. Таким образом, абстрактное представление фиксирует информационну и концептуальну структуру, которая мо ет бть конкретизирована в дальнейем. ри этом отраа тся две сторон процесса разработки программы:
• абстрактное представление используется для описания требуемых вычислений, т. е. алгоритма решения задачи, с помощью подходящих язьi-ковых средств;
• абстрактное пред ставление приспособлено для построения с помо-
ь тех е средств конкретного представления, т. е. обеспечена воз-мо ность отра ения в интерфейсе самой этой структуры даннх, хода вычислений и получаемых результатов.
По существу, выделение абстрактного и конкретного представлений является одним из главных элементов декомпозиции решаемой задачи, обеспечи-ваих независимость реализации алгоритма и его интерфейса.
Выбор абстрактного представления целиком зависит от намерений разработчика. Среди критериев предпочтения — удобство и эффективность реализуемых на этом уровне алгоритмов и возможность простой реализации различных конкретных представлений. Понятно, что на выбор абстрактного представления в больой мере влия т языковые средства, применяемые как для описания структуры даннх, так и для оперирования е . Этот выбор всегда является реением проблемного противоречия меду стремлением к универсальности конструируемой программы (к расширению класса задач, решаемых на базе данного абстрактного представления) и необходимостью эффективной специализации программ . ри разреении этого противоречия обычно в перву очередь стремятся к простоте разработки программ , поэтому на выбор реиня часто влияет возмо ность переиспользования у е суествуего программного обеспечения. о здесь возникает другое проблемное противоречие, поскольку слишком часто уже существующее обеспечение навязвает не сликом подходяие структур данных (что намного ху е, чем не самые оптимальные алгоритмы, поскольку алгоритмы легче заменить при переходе от абстрактного к конкретному представлени ). о-этому мо но дать совет:
Приразработке абстрактного представления поставьте на первое место естественность и органичность представления данных.
666
11. ,
Простота приложится, дополнительный труд многократно окупится при переходе к конкретному представлению.
олезно сопоставить представления даннх с рассмотренными ранее понятиями абстрактного и конкретного синтаксиса языка программирования.
ы вбирали понятие абстрактного синтаксиса, исходя лиь из потребности описания работ абстрактного вычислителя языка. Это как раз то, что долно бть обеспечено в результируей программе, которая строится по конкретному программному тексту. Таким образом, абстрактно-синтаксическое представление оказывается основой для описания семантики языка, а конкретное синтаксическое представление задает то, что долно быть в идеале переведено в абстрактное представление. ными словами, абстрактнй синтаксис отвлекался от тех деталей, которе не ну ны для описания алгоритма исполнения программ . ба варианта абстрактного и конкретного являются конкретизациями одной и той же оппозиции высокого уровня, и поэтому они концептуально согласованы.
Предыдущая << 1 .. 226 227 228 229 230 231 < 232 > 233 234 235 236 237 238 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100