Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 113

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 113 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1132019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 113)

а сы языка ЯМША 67 намного менее надежны. чем истинные абстрактные типы .. ых Кроме того, поскольку клиенты класса зависят от определений переменных в .;е. изменения в этих определениях переменных могут вызвать изменения в колах .. =нгг в. что усложняет поддержку таких программ. 10.5.1.3.оценка К1нструкция класса в языке 5!М()(.А 67 обеспечивает инкапсуляцию.

а нс сокрытие . эормашш, которое позволяет предохранять летали представления данных от измене: ллиентами класса. Язык $1МШ А 67 был революционным в своей разработке конструкции класса. Ол, . поскольку этот язык программирования так и не получил широкого распростране- ны упомянули его злесь только с точки зрения исторического интереса. Теперь вер.;гся к рассмотрению двух современных языков программирования, которые обеспсчи-, полную полдержку абстракции ланныж Аг)а и Очч.

10.5.2. Абстрактные типы данных в языке Ада Язык Ада обеспечивает средства инкапсуляции. которые можно использовать для люле- ",тчанпя абстралтных типов ланных, вкл|очая возможность скрывать их представление. 10.5.2. 1. Инкапсуляция 1:1нструкции инкапсуляции в языке Ада называются пакетами (рас1саяея). Пакеты : .. ~ состоять из двух частей, каждая из которых также называется пакетом. Они назыгся спецификацией пакета (зрес1бсаг)оп рас1аде). которая обеспечивает интерфейс , ы псуляции, и телом пакета (Ьоду раскрасе). которое обеспечивает реализацию сугц.

стей, перечисленных а спецификации Не все пакеты имеют тело (пакеты. которые ни° . псулируют только типы и констанз ы, не имеют тел или не нуждаются в них). Спецификация пакета и связанное с ним тело пакета имеют одно и то же имя. Заре::овированное слово Ъос(у в заголовке пакета означает, что он является телом пакета. ;пацификацию и тело пакета можно компилировать отдельно при условии.

что специ: лкация пакета компилируется первой. 10.5.2.2. Сокрытие информации Нет никаких ограничений для типов, которые можно описывать в спецификации пакета и экспортировать из них. Пользователь может либо создать сущность, целиком видимую клиентами, либо обеспечить лишь инфорлзацию о ее интерфейсе. Для этого ис:юльзуются два раздела в спецификации пакета — в первом из них содержатся супзности, видимые лля клиентов, а второй скрывает свое содержание.

Например, если тип должен 4ЗУ 10.5. Примеры абстракции данных в разных языках быть экспортирован, но его представление скрыто, в видимой части спецификации по- мешается сокращенное объявление. в котором указывается только имя типа и тот факт, что его представление является скрытым.

Представление типа помещается в части спецификации, которая называется закрытой (рггчаге) и начинается с зарезервированного слова ргйчаСе. Закрытый раздел всегда помещается в конце спецификации. Предположим. что тип под названием НООе тУРе экспортируется пакетом, но его представление скрыто. Тип НООЕ ТУРЕ обьявляется в видимой части спецификации пакета без деталей его представления, как показано ниже: суре ИООЕ ТУРЕ Ев ргйчавв; В закрытом разделе объявление типа ЫООЕ ТУРЕ повторяется, но на этот раз с полным определением типа: рас)саде Ь1ИКЕО 11ЯТ ТУРЕ Еа гуре ХООЕ ТУРЕ Ев ргдчаве; ргвчаге суре ИООЕ ТУРЕ; Туре РТК Ев ассевв МООЕ ТУРЕ; Гуре ИООЕ ТУРЕ Вв гесогс) 1КЕО : 1ИТЕСЕЕ1 11НК : Ртйз епс) гвсогс1; впс1 11МКЕО О1ЯТ ТУРЕ; Если нн одна из сущностей в пакете не должна быть скрытой, не нужна и закрытая часть спецификации.

Причина, по которой представления типов вообще приводятся в спецификации пакета связана с вопросами компиляции. Клиент может видеть только спецификацию пакета (но не тело пакета), а компилятор должен размещать объекты экспортируемого типа при компиляции клиента. Кроме того, клиент может компилироваться, когда в наличии есть только спецификация пакета абстрактного типа данных.

Следовательно. компилятор должен иметь возможность определить размер объекта по спецификации пакета. Значит, представление типа данных должно быть открыто для компилятора, но не для кода клиента. Это именно та ситуация, которая определяется закрытым разделом спецификации пакета. Типы, которые объявляются как закрытые, так и называются — закрытые типы (рйча[е ~урез). Закрытые типы данных имеют встроенные операции присваивания н сравнения. Все другие операции должны быть объявлены в спецификации пакета, которая определяет тип. Атьтернативой закрытым типам служат ограниченные закрытые типы (Итие рг)тазе гурез), которые описываются в закрытом разделе.

Елинственная синтаксическая разница между ними состоит в том, что ограниченные закрытые типы объявляются зарезервированными словами 1зжЕгвс ргйчавв в видимой части спецификации пакета. Объекты ограниченного закрытого типа не имеют встроенных операторов. Такие типы полезны тогда, когда обычные встроенные операции присваивания и сравнения бессмысленны или бесполезны. Например, присваивание и сравнение редко используются для стеков. Если нужно выполнить операции присваивания или сравнения, а их встроенные версии не подходят для этого. эти операции следует предусмотреть в спецификации Глава 10. Абстрактные типы данных ЯЗВ акета. Операция присваивания должна иметь форму обычной процедуры. в то время как псраторы проверки равенства и неравенства могут быть реализованы путем перегрузки ",и операторов применительно к новому типу. 10.5.2.3.

Пример Ниже приведена спецификация пакета для абстрактного типа данных, описывающего .:ск: рас)саде БТАСКРАСК Ев Видимые сущности, или открытый интерфейс Гу)ре БТАСКТУРЕ Ьв 1хахсес) ргзмаовс МАХ 511Е : сопвсапе := 1СО; Йипсгаоп ЕМРТУ(5ТК : Еп БТАСКТУРЕ) гвсигп ВООЬЕАН; ргосес)иге РОЯН(БТК : Еп сии ЯТАСКТУРЕ; Е ЕМЕКТ : Ьп 1НТЕСЕВ)1 ргосвйиге РОР(ЯТК : Еп оиг ЯТАСКТУРЕ); У~ипсгдоп ТОР(БТК: хп ЯТАСКТУРЕ) гекигп 1НТЕОЕВ1 Часть, скрытая от клиентов ргдзгаое гуре Ь1БТ ТУРЕ хв аггау (1..МАХ 51ЕЕ) оР 1НТЕОЕР.С Еур БТАСКТУРЕ 'в гесогс) ЬТЯТ : Ь1БТ ТУРЕ; ТОР5ОБ : 1НТЕОЕВ гапде О..МАХ 51ЕЕ := О; ( епс) ЯТАСКРАСК) Заметим, что операции создания и разрушения не включены в спецификацию пакета, -оскольку в них нет необходимости.

Тело пакета ЯТАСКРАСК: насЬ ТЕХТ 1О; иве ТЕХТ 10; рас)саде Ьос(у ЯТАСКРАСК Ев Еипссаоп ЕМРТУ(ЯТК: хп ЯТАСКТУРЕ) гееигп ВООЬЕАН Ев Ьедзп гвФигп ЯТК.ТОРБОВ = О; впс( ЕМРТУ; ргосестиге РОЯН(ЯТК : Еп оик ЯТАСКТУРЕ; ЕЬЕМЕНТ : хп 1НТЕОЕВ) Ьв Ьеддп хб ЯТК.ТОРЯСВ >= МАХ 51ЕЕ ФЬеп РОТ ЬТНЕ("ОШИБКА — Переполнение стека); е1ве ЯТК.ТОРБОВ := ЯТК.ТОРЯОВ + 1; ЯТК.Ь|ЯТ(ТОРЯОВ) := ЕЬЕМЕНТ1 епс( ЕЕ; епс1 РОЯН( ргосес1игв РОР(ЯТК : Еп оиФ БТАСКТУРЕ) Ев Ьедап хЕ ЯТК.ТОРБОВ = О 439 10.5.

Примеры абстракции данных в разных языках С)геп РОТ ' КЕ("О)))ИБКА — Стек пуст") е1зе ЯТК.ТОРЯСБ епс) ЕЕ) епс1 РОР; Еипссхоп ТОР(ЯТК : ап Я АС)гТТРЕ; кесигп 1ЫТЕБЕВ аз Ьедхгл зс Я 1'.ГОРЯОБ = О С)зеп Р()Т 111)Е ("ОйгХБКЛ вЂ” ..те-. х) сг "); е1зе кееикп ЯТК. 1ЯТ (ЯТК.ТОРЯСБ); епс) Ей'; епс1 ТОР; епс) ЯТАСКРАСК," 1)срвая строка кода в этом теле пакета содержит два опершора: нас)т и изв. Оператор нха)з импортирует внешние пакеты, а данном случае — — ТЕУТ 10, который обеспечивает ввод и вывол тскс га. Оператор изв исключает необходимость явного определения ссылок на елицюсзи названного пакета. 'Это позволяет использовать процедуру РОТ Е1))Е из Т." Х'.х ГО без явного определения (в кодс следовазо бы писать Т1'.ХТ 10. РОТ 1РЯ НЕ () . если огы оператора изе не было в спецификации пакета).

'1'с:ю пакета должно содержать определения подпрограмм с заголовками. которые согласлюгся с заголовками подпрограчм пз соответствуюшсй спецификации пакета. Спецификация пакета ~арантируст. что эги подпрограммы будут определены в соответстнчошсм зеле пакета. Слсзлюшая процедура. 1)ЯЕ СТАСЕ, является клиентом пакета ЯТАСКРАСК.

Она иллюстрирует возможное использование пакета. нхе)л ЯЯАСКРАСК, ГЕХТ ГО; изе РТА"КРАСК, ТЕХТ 1Сг ркооевике,.ЯЕ ЯГАСКЯ хз 1КТЕЯ К; Гч Сл': .-" АСг.'ТУРЕ; -- Сгсзлает сбьект' типа ЯТАСКТУРЕ ьедап ~СК, 2~, " ' Е:.— 1ОР (ЯТАСК), Р.'",'Я РАСК; г впй ей) ' ЯТА КЯ 10.5.2.4.

Родственный язык: Моды1о-2 Модули в языке Мог)ц)а-2 похожи на пакеты в языке Аба. так что они обеспечивают причерно такой же уровень поддержки абстрактных типов данных. Основное различие между эпгми лвумя языками в отношении подлержки абстрактных типов данных состоит в том. что в языке Моби)а-2 все типы, представление которых скрыто в модулях, должны быть указателячи. Это ограничение является альтернативой спецификациям пакетов в языке Аг)а. которые состоят из двух частей. Размер всех указателей одинаков, так что компилятору не обязательно видеть определение прелставления типа, чтобы позволить клиенту этого типа создать объект.

Другое преимушество такого ограничения заключа- 440 Глава 10. Абстрактные типы данных .. - ь <ом. что код >лиента не нужно компилировать снова после внесения измечшнп! в :ание абстрактного типа данных. То же справедливо и лля абстрактных типов шнных -. °,<ле Л<)а. являюшихся указателями.

Характеристики

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее