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

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

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

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

Это очевидным образом не позволяет подклассу быть подтипом. Для управления доступом клиентов к наследуемым свойствам можно использовать раздел ехрогс. Абстрактные классы определяются добавлением зарезервированного слова гзвйвггва в начале определения класса, как показано ниже: с)вбеггес) с1вав Гддиге Такой класс содержит одно или несколько свойств, которые также являются отложенными (г)еГеггед). Любой подкласс отложенного класса, не являющийся сам по себе отложенным, конечно, должен содержать определения отложенных свойств родительского класса. Язык ЕИГе! поддерживает множественное наследование, которое определяется просто наличием нескольких разделов япЬвгяк. 11.12.3. Динадяическае связывание Все связывания сообщений с методами в языке Е))Те! являются динамическими.

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

Доступ к замещаемым свойствам можно обеспечить, занеся их имена в раздел гелаев. 496 Глава ) ) . Поддержка объектно-ориентированного программирования 11.12.4. Оценка Способы поддержки объектно-ориентированного программирования в языках Ейте! и !ача похожи. Процедурное программирование в этих языках не поддерживается никогда. И в обоих случаях все связывания сообщений с методами являются динамическими.

Оставив язык )ача в стороне, заметим, что по элегантности и ясности разработки классы н наследование в языке Ейте! уступают только языку Бшайайс 11.13. Реализация объектно-ориентированных конструкций Есть, по крайней мере, два аспекта поддержки языками объектно-ориентированного программирования, которые ставят перед разработчиками языков интересные вопросы, — структуры памяти для хранения переменных экземпляра и динамическое связывание сообщений с методами. В этом разделе мы кратко рассмотрим обе проблемы.

11.13.1. Хранение денных экземпляра В языке С++ классы определяются как расширения структур (гесоп! зппсгцгез). В действительности, структура, которая в языке С++ обозначается зарезервированным словом ескцас, может содержать функции. Единственное различие между структурой в языке С++ и классом заключается в том, что все члены структуры по умолчанию являются открытыми, в то время как все члены класса по умолчанию являются закрытыми. Эта схожесть очевидно подразумевает, что экземпляры классов хранятся в памяти аналогично структурам. Мы будем называть такой вид структуры памяти для хранения экземпляров записью экземпляра класса (С!й — с!аи !пыапсе гесогг!). Структура С!К является статической, поэтому она создается во время компиляции и используется в качестве шаблона при создании экземпляров класса.

Подклассы могут просто расширять структуру С! К родительского кяасса, добавляя новые переменные экземпляра. Поскольку структура СИ является статической, доступ ко всем переменным экземпляра осуществляется так же, как и к полям записей, с помощью постоянных по величине смещений от начала записи экземпляра класса. В результате, такой доступ так же эффективен, как и доступ к полям записей.

Запись экземпляра класса, который имеет родительский класс, просто добавляет его новые данные к записям экземпляра родительского класса. Этот подход к реализации хранения данных экземпляра должен работать во всех объектно-ориентированных языках, обсуждаемых в этой главе. 11 13.2. Аинамическое связывание сообщений с методами Статически связанные методы в классе не нужно включать в структуру С!К ланного класса. Однако, чтобы динамически связанные методы входили в эту структуру, следует включить в нее указатели на коды этих методов, которые устанавливаются во время создания объекта.

Вызовы метода мо~ут быть затем связаны с соответствующим кодом с помощью его указателя в структуре экземпляра. Недостаток этого приема заключается в том, что каждый экземпляр должен был бы хранить указатели на все динамически связанные методы, которые могли быть вызваны из этого экземпляра. 497 11.13. Реализация объектно-ориентированных конструкций Заметим, что список динамически связанных методов, которые могут быть вызваны из экземпляра класса, одинаков лля всех экземпляров данного класса.

Следовательно, список таких методов нужно хранить только в одном месте. Таким образом, в структуре С1К нужно хранить только один указатель на этот список, чтобы иметь возможность найти вызываемые методы. Структура для хранения этого списка иногда называется таблицей виртуальных методов (ЧМТ вЂ” чнтца! щет(код гаЫе). Вызовы методов можно представить в виде смещений в таблице ЧМТ. Полиморфные переменные родительского класса всегла ссылаются на структуру С1К объекта соответствующего типа, так что получение нужной версии динамически связанного метода гарантируется. Рассмотрим следующий пример, в котором все методы предполагаются динамически связанными: с1авв Яса11 ( риЫ1с 1пФ.

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

Поддержка объектно-ориентированного программирования одиночное н множественное наследование, динамическое связывание. явное и неявное удаление объектов из памяти. Язык Ьщайга!и — чисто объектно-ориентированный язык. Все сущности в нем являются объектами и все вычисления выполняются через передачу сообщений. Методы конструируются из выражений.

Выражение описывает объелт, представляющий собой значение выражения. Управляющие структуры в языке Бтайга!к, как и во всех других языках, конструируются с использованием объектов и сообщений. Несмотря на то что они выглядят как обычно, их семантика значительно отличается от соответствующих структур в императивных языках. В языке бшайга1к все подклассы являются подтипами. Все проверки типов и связывание сообщений с методами выполняются динамически, и любое наследование является одиночным. Язык Ьщайза!к не имеет явного оператора удаления объектов из памяти, Язык С++ обеспечивает поддержку абстракции данных, наследование и возможное динамическое связывание сообщений с объектами наряду со всеми обычными свойствами языка С. Это означает, что он имеет две различные системы типов.

Несмотря на то что динамическое связывание в языке Бтайга!к обеспечивает несколько большую гибкость программирования, чем гибридные языки, например С++. он намного менее эффективен. Язык С++ обеспечивает множественное наследование и явное удаление объектов из памяти. Язык С++ имеет разнообразные средства управления доступом к сущностям в классе, некоторые из которых не позволяют подклассам быть подтипами. Класс может содержать вызываемые неявно методы конструктора и деструктора, Язык )ача, в отличие от гибридного языка С++, является полностью объектноориентированным. Все объекты размещаются в динамической памяти и доступны через ссылки на них.

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

Язык Ада 95 обеспечивает поддержку объектно-ориентированного программирования с помощью меченых типов, которые могут использовать наследование. Возможно динамическое связывание с использованием ассоциированных типов. Производные типы являются расширениями родительских типов, если они не определены в библиотеке дочерних пакетов. В этом случае сущности родительского типа могут быть исключены из производного типа. Вне библиотеки дочерних пакетов все подклассы являются подтнпами. Язык Е1!Те! — это новый объектно-ориентированный язык, не основанный ни на одном из существующих языков.

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

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

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

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