Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 91

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 91 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 912019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

У языка Бша11га!к, как было сказано, имеется некоторый (хотя н небольшой) круг сторонников. Этот язык достаточно интересен, но лишь немногие коммерческие системы были написаны на этом языке. Недостаточное количество доступных трансляторов Бша1!Еа1к до сих пор затрудняло его распространение. Возможно, теперь, когда трансляторы стали легко доступны, ситуация изменится. Наследование классов Данные в Бша11га11с организованы на основе иерархии классов. Если какой-либо метод, который передается объекту, не определен внутри этого класса, то он пере- дается родительскому классу и т. д. Класс ОЬтесг является родительским супер- классом для всех классон. Наследование методов соответственно является основ- ным свойством языка.

Однако допускается только простое наследование с одним родительским классом для каждого дочернего класса, хотя методы могут переда- ваться через несколько уровней родительских классов. Для ключевых методов параметры явным образом указаны в объявлении мето- да, как, например, в следующем случае; т Гтгое; СгыеВ1 оси т Гга1 ее: та1яеВ1осХ "Переменные тгыез1осХ и Га1яеВ!оса яапяотся параиетраии а тепе иетоаа." Но каким образом можно получить доступ к объекту, которому передан методг Например, если х > 2, каким образом метод > получает доступ к объекту х и получа- ет его значение? Для этого существует объект зе1б Он ведет себя примерно так же, как параметр ЬЬт' з в Сн-н-, Необходимость объекта зе1~ и его использование в иерархии объектов можно продемонстрировать на следующем простом примере. Предположим, нам требу- тотся два класса: С1аеаА и С1азаВ, являютцийся подклассом С1аазА.

Эти классы мож- но определить следующим образом: ОЬ)еса яыЬс1аая. ФС1аяяЯ тпятапсеЧагяаш еиавеа с1аяяЧагтао1еыааея роо1Отсгтопагтея. саге9огУ: п!1 ! С1аааА яыЬс1аяа. ФС1ааяВ т пягапсеЧап аш екавесс с1аяяЧагтаЬ1ехапесс роо1Отсттопаг1еа. сагерогу п11 С1 азаА определен как подкласс класса ОЬОесг (просто для того„чтобы поместить его в какое-то место в иерархии Бша11са!К), а С1азаВ является подклассом С1азаА. 1паЬапсеуаг1аЬ1е!Чаятеа определяет набор локальных имен, используемых в каждом отдельном экземпляре объекта этого класса, в то время как с1аззуаг! аЬ1е!Чаоеа— это глобальные данные, которые используются во всех экземплярах объектов это- 7.2. Наследование 325 го класса. Конструкции роо101с11опаг1 ее и сатеоогу в данном случае не нужны (они описаны в приложении, раздел П,12), но синтаксис 5ша!!Са!!с требует, чтобы все параметры ключевых методов были привелены, лаже если зто пустые параметры.

Рассмотрим методы рг1п111 и Сее1!1, которые мы добавляем к классу С1аевЯ при помощи команды ляетпоавЕог: .'С1аввА певьонвгог 'Ьаи с'! "добавляем метоан к классу с1аввА" ргяпе!С 'Это класс А' рг1пвв1 Севе1С ве11 ргяп11С 1! Каждый метод задается посредством указания его имени (и, если требуется, параметров), затем следует его опрепеление. Окончание определения фиксируется символом!. Символ!! обозначает завершение объявлений пнСЬос1згог для С1ааеЯ. Применение этих методов можно проиллюстрировать на следующем примере: ~ х ~ х С1аввЯ пем х Еев11С ' что, естественно, выводит на печать следующее сообщение: Это класс А При этом выполняются следующие шаги: 1) метод пеи передается классу С1ааеА, который, в свою очередь, передает его родительскому классу ОЬЭест; 2) РЬ)ест создает новый объект и приснаивает его переменной х; 3) метод тевс!1 передается созданному объекту х класса С1ааеА; 4) метод 1еес!1 опрелеляется как зе1! ргаот!с, где ее11 относится к объекту х; 5) метод рш от 11 передается объекту х, который и печатает требуемое сообщение, Рассмотрим теперь, что произойдет, если мы определим аналогичный метод для С1азвВ, в котором есть метод рг1пс!С, но отсугствует1ев1!С: !С1аввВ пееьопвеог.

'паис'! ргяпв!' 'Это класс В' рг1пгх1 Если мы напишем: ( х ! х С1аввВ пега х Сева!С ! мы получаем: Это класс В Метод Сеет!1 передается экземпляру х класса С1аееВ. Поскольку в классе С1ааеВ метод Сеет!С не определен, то этот метод передается родительскому классу С1 аззЯ. ве11 по-прежнему указывает на объект х, но он теперь принадлежит классу С1аезВ, поэтому вызывается метод рг1пс!С класса С1аееВ, а не родительский метод Сев'с!1 класса С1а з ВА. 7.2.6.

Концепции абстракций После обсуждения роли методон и виртуальных функций, вероятно, полезно вернуться к обсуждению роли абстракций н языках программирования. Инкапсуля- 326 Глава?. Наследование ция часто рассматривается как механизм, позволяющий осуществлять контроль в процессе разработки программы по принципу «разделяй и властвуй». Программист имеет доступ только к тем объектам данных, которые являются частью спецификации именно того сегмента программы, разработкой которого он занимается.

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

Если Я =к В означает, что  — это класс, связанный с классом Я то каково взаимоотношение между объектами этих классов7 Возможны четыре типа взаимоотношений, как показано на рис. 7.3. К этим четырем типам сводятся различные способы использования наследования в языках программирования. Сте Рис. 7.3. Концепции абстракций:а — конкретизация; б †декомпозиц; в — созданиегг — индивидуализация Конкретизация. Это наиболее распространенная форма наследования, которая позволяет уточнять свойства производного объекта В по сравнению с исходным объектом Я (см. рис. 7.3, а).

В частности, стех (эсасК) — это более точная характеристика объекта, чем сложный объект данных, а указание на тип содержимого 7.3. Полиморфизм 327 стека (1п1 з1асР, целые числа) уточняет, какой именно стек мы рассматриваем. В то же время все основные свойства стека сохраняются и в случае целочисленного стека, так как наследуются методы риз)а и рор. Ранее мы описывали класс веи51ас1 как производный от Б еэ51ас1 с добавлением функции рее1. Можно сказать, что класс )1еи51ас1 является конкретизацией класса 5)еэ51ас1.

Противоположной концепции конкретизации является концепция обобщение (например, стек (з1ас1) — это более общее понятие, чем 1пт з1ас1 — целочисленный стек, или геа1 зтасх — вещественный стек). Обобщение представляет суперкласс для набора производных классов. Декомпозиция. Это принцип разбиения абстракции на компоненты (см. рис. 7.3, б). Он является типичным механизмом инкапсуляции в языках типа Ада, в которых отсутствует наследование методов.

Например, стек (внешняя абстракция) состоит из переменной гор (верхний элемент стека) и массива зтога0е[100) (внутренняя абстракция). Внутренние имена неизвестны за пределами определяющего класса. Противоположная концепция называется агрегацией. Создание экземпляров, Этот принцип заключается в создании экземпляров класса. По существу, он сводится к операции копирования (см. рис, 7.3, в). Объявление экземпляров объекта некоторого класса в программе на С++ является типичным примером использования принципа создания экземпляров и заключается в том, что в программе объект х объявляется принадлежащим к типу у: агасЬ А. В, С: В данном случае среда выполнения создает три копии объекта типа атаев и называет их А, В и С.

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

Например, среди стеков, используемых транслятором, могут присутствовать записи активации и таблицы символов. И в С, и в Рааса! записи активации реализованы как стеки, но эти стеки имеют различные характеристики и являются примерами конкретизации. Все стеки тем не менее имеют одни и те же основные характеристики, примерами которых могут быть методы роз)а и рор. Но, несмотря на сходство используемых структур, роли записей активации при выполнении программы на языках С и Рааса! различны. 7.3. Полиморфизм Использование параметров в подпрограммах — одна из наиболее ранних характеристик языков программирования.

Тем не менее в большинстве языков программирования параметры имеют одну важную характеристику: у них есть 1-значение. Это значит, что параметр представляет собой объект данных, который должен быть размещен в записи активации во время выполнения программы.

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

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

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