Может ли быть польза от неведения?
Может ли быть польза от неведения?
Поскольку введенные только что понятия играют важную роль в последующем, стоит еще раз повторить несколько последних положений. (На самом деле, в этом коротком пункте не будет ничего нового, но он поможет лучше понять основные концепции и подготовит к введению новых понятий).
Если вы все еще испытываете неудобство от невозможности написать p.diagonal после присваивания p :=r (в случае (2)), то вы не одиноки. Это шокирует многих людей, когда они впервые сталкиваются с этими понятиями. Мы знаем, что p - это прямоугольник, почему же у нас нет доступа к его диагонали? По той причине, что это было бы бесполезно. После полиморфного присваивания, как показано на следующем фрагменте из предыдущего рисунка, один и тот же объект типа RECTANGLE имеет два имени: имя многоугольника p и прямоугольника r.
Рис. 14.7. После полиморфного присваивания
В таком случае, поскольку известно, что объект O2 является прямоугольником и доступен через имя прямоугольника r, зачем пытаться использовать доступ к его диагонали посредством операции p.diagonal? Это не имеет смысла, так как можно просто написать r.diagonal, использовав официальное имя прямоугольника и сняв все сомнения в правомерности применения его операций. Использование имени многоугольника p, которое может с тем же успехом обозначать треугольник, ничего не дает и приводит к неопределенности.
Действительно, полиморфизм теряет информацию: когда в результате присваивания p :=r появляется возможность ссылаться на прямоугольник O2 через имя многоугольника p, то теряется нечто важное - возможность использовать специфические компоненты прямоугольника. В чем тогда польза? В данном случае - ни в чем. Как уже отмечалось, интерес возникает, когда заранее неизвестно, каков будет вид многоугольника p после выполнения команды if some_condition then p:= r else p := something_else ... или когда p является формальным аргументом процедуры и неизвестно, каков будет тип фактического аргумента. Но в этих случаях было бы некорректно и опасно применять к p что-либо кроме компонентов класса POLYGON.
Продолжая тему животных, представим, что некто спрашивает: "У вас есть домашний любимец?" и вы отвечаете: "Да, кот!". Это похоже на полиморфное присваивание - один объект известен под двумя именами разных типов: "мой_домашний_любимец" и "мой_кот" обозначают сейчас одно животное. Но они не служат одной цели, первое имя является менее информативным, чем второе. Можно одинаково успешно использовать оба имени при звонке в отдел отсутствующих хозяев компании Любимцы-По-Почте ("Я собираюсь в отпуск, сколько будет стоить наблюдение за моим_домашним_любимцем (или: моим_котом) в течение двух недель?") Но при звонке в другой отдел с вопросом: "Могу ли я привезти во вторник моего домашнего любимца, чтобы отстричь когти?", вы не запишетесь на прием, пока не уточните, что имели в виду своего кота.Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Его вам сразу вклю́чат, а может быть, включáт
Его вам сразу вклю?чат, а может быть, включ?т Элемент audio выглядит практически идеальным. Где-то должен быть подвох, правда? Он есть.Проблемы с элементом audio не в спецификации. Главная проблема – с форматами аудиофайлов.Хотя формат MP3 и распространен повсеместно, это
Че Геварой может быть не всякий
Че Геварой может быть не всякий Децентрализация политики может быть восхитительна, если речь идет о накоплении знаний (вспомните “Википедию”), но сама по себе децентрализация не есть существенное условие успешной политической реформы. В большинстве случаев она даже не
Зачем вашей компании может быть нужен корпоративный блог?
Зачем вашей компании может быть нужен корпоративный блог? Не знают, зачем нужен корпоративный блог, всего семь человек. «Создание имиджа компании» повторяется в ответах категории «Другое» несколько раз как дополнение к влиянию на соискателей, инвесторов. Один из
Приложение А. Чем Школа Программирования может быть полезна лично Вам
Приложение А. Чем Школа Программирования может быть полезна лично Вам Что ж, если Вы дочитали эту книгу почти до конца, то, наверное, со многим описанным Вы можете согласиться. Впрочем, нет необходимости соглашаться абсолютно со всем. У каждого из нас уникальный опыт,
Может ли быть оправдан несерьезный подход?
Может ли быть оправдан несерьезный подход? Несерьезный подход не создает проблем в системах, создающих небольшое число объектов, например, при проведении простых тестов и экспериментов.Более интересен случай, когда система может создавать много объектов, гарантируя,
Может ли самолет быть имуществом?
Может ли самолет быть имуществом? Наш первый подходящий пример относится скорее к моделированию систем, чем к проектированию программных продуктов. Однако он наглядно иллюстрирует ситуацию, в которой множественное наследование необходимо.Пусть класс AIRPLANE описывает
Закон 4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза
Закон 4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза Этот закон сравнительно нов в обсуждении вопросов безопасности, но за последний год он стал очень популярен. Это новая реальность, поскольку теперь у злоумышленников
Модульные роботы M-Blocks, которых не может быть Андрей Васильков
Модульные роботы M-Blocks, которых не может быть Андрей Васильков Опубликовано 07 октября 2013 Молодой инженер Джон Романишин (John Romanishin) создал роботов M-Blocks, которые совсем недавно считались невозможными. Они уникальны тем, что умеют выполнять
Ошибки 0x00000077 и 0x0000007A: а может быть, у нас вирус?
Ошибки 0x00000077 и 0x0000007A: а может быть, у нас вирус? Система попыталась прочитать данные из файла подкачки и… не нашла их там по указанному адресу.Причины:? сбой жесткого диска («битые» секторы);? дефект оперативной памяти;? повреждение данных вирусом.Производить диагностику
Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе
Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе Опубликовано 11 августа 2013 Коллеги-колумнисты отписались по вопросам образования; я тоже хочу. Тем более что в теме российского образования есть мотив, который в нашей профессиональной
Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе
Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе Опубликовано 11 августа 2013 Коллеги-колумнисты отписались по вопросам образования; я тоже хочу. Тем более что в теме российского образования есть мотив, который в нашей профессиональной
Быть или не быть Microsoft Office для Linux Максим Плакса
Быть или не быть Microsoft Office для Linux Максим Плакса Опубликовано 13 февраля 2013 Слух о предстоящем выходе версии Microsoft Office для Linux появился 5 февраля. Об этом якобы проговорился автору сайта Phoronix один из сотрудников Microsoft во время проходившего в Брюсселе
Студенческие стартапы: а может быть, деньги — не главное? Денис Викторов
Студенческие стартапы: а может быть, деньги — не главное? Денис Викторов Опубликовано 12 февраля 2013Опросы, проводимые российскими рекрутинговыми компаниями, рисуют грустную картину. И дело не только в том, что выпускник столичного вуза хочет получать сразу после
Отслеживаем процесс: Как наша информация может быть обращена против нас
Отслеживаем процесс: Как наша информация может быть обращена против нас Никто не собирается создавать общество, в котором все незначительные подробности повседневной жизни постоянно записываются для будущих поколений. Но это будущее, к которому мы уверенно движемся