Главная » Просмотр файлов » Введение в системы БД

Введение в системы БД (542480), страница 190

Файл №542480 Введение в системы БД (Введение в системы БД) 190 страницаВведение в системы БД (542480) страница 1902015-08-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

Особо отметим, что такой полиморфизм является логическим следствием наследования: если есть наследование, то должен быть и полиморфизм, в противном случае не будет и наследования! Сама по себе идея полиморфизма не нова, как вы уже, по-видимому, поняли. Например, в языке Я()Ь есть полиморфные операторы ("=", '+", ") )" и многие другие); есть такие операторы и в большинстве других языков программирования. В некоторых языках 734 Часть )г.

дополнительные аспекты пользователям даже разрешается вводить собственные полиморфные операторы. Например, в языке РЬ/! эта возможность предоставляется с помощью БЕНЕК1С-функций. Однако наследования как такового ни в одном из данных примеров нет.

Все это примеры так называемого перегружасмого полиморфизма. Вид полиморфизма, демонстрируемый с помощью оператора АКЕА, называют включаемым полиморфизмом на том основании, что связь между, например, окружностями и эллипсами, по сути, равносильна включению множеств (!9.3). По вполне понятным причинам далее в этой главе не уточненный дополнительно термин "полиморфизм" будет использоваться для включаемого полиморфизма (кроме тех случаев, когда явным образом будет указано противное). Замечание. Приведенные ниже дополнительные разъяснения помогут вам лучше понять различия между перегружаемым и включаемым полиморфизмом. ° Перегружаемый полиморфизм означает, что существует несколько различных операторов с одним и тем же именем (и пользователь должен знать, что эти операторы, хотя и довольно похожие, на самом деле разные и имеют семантические различия).

Например, один оператор "+" служит для сложения целых чисел, другой оператор "+" — для сложения отношений и т.д. ° Включаемый полиморфизм означает, что существует ровно один оператор, возможно, с несколькими разными неявными реализациями (но пользователю нет необходимости знать, существует одна или несколько версий его реализации; для пользователя, повторяем, есть просто один оператор). Полиморфизм в программировании Рассмотрим следующий пример. Предположим, необходимо написать программу для отображения некоторой диаграммы, составленной из квадратов, окружностей, эллипсов н т.д.

Без использования полиморфизма код мог бы быть подобен следующему. РОК ЕАСН х ТН 01АБКАН САЯЕ ННЕН 1Я ЯННАКЕ ( х ) ТНЕН САЬЬ 01ЯРЬАХ БННАКЕ ННЕН 1Я С1КСЬЕ ( х ) ТНЕН САЬЬ 01БРЬАХ С1КСЬЕ ЕН0 САЯЕ (Здесь предполагается, что существуют операторы 01БРЬАХ БННАКЕ, 01ЯРЬАХ С1КСЬЕ и т.д., которые могут использоваться для проверки принадлежности данного значения определенному типу.) Благодаря полиморфизму данный код становится гораздо проще и существенно короче. РОК ЕАСН х 1Н 01АЯКАН САЬЬ 01БРЬАХ ( х ) Пояснения. В этом варианте оператор 01ЯРЬАХ является полнморфиым.

Версия его реализации, верно отрабатывающая значения типа Т, обычно определяется непосредственно при объявлении типа Т и на данный момент должна быть известна системе. Во время выполнения, когда системе нужно будет реализовать вызов оператора 01БРЬАХ с аргументом х, ей потребуется установить конкретный тип аргумента х, а затем вызвать ту версию оператора 01ЯРЬАХ, которая соответствует обнаруженному типу.

Этот процесс 735 Глава 19. Наследование типов называют связыванием во время выполнения или поздним связываниелзл. Иначе говоря, полиморфизм фактически подразумевает, что выражения и операторы СНБЕ, которые в противном случае должны были бы присутствовать в коде пользователя, будут скрыты от него — система самостоятельно выполняет операции СНБЕ, освобождая пользователя от рутинной работы. Перечислим некоторые следствия вышесказанного, в частности в отношении сопровождения программ. Предположим, например, что новый тип ТК1НИБЬЕ (Треугольник) определен как еше один непосредственный подтип типа РОЬХБОИ, и, следовательно, отображаемая диаграмма теперь может содержать еше и треугольники. Если не использовать полиморфизм, то в каждую программу, которая содержит выражения или операторы СНЯЕ, подобные приведенному выше, потребуется добавить кол следующего вида.

ИНЕИ 1Я ТК1НИБЬЕ ( х ) ТНЕИ САЬЬ 01ЯРЬНХ ТК1НИБЬЕ При использовании полиморфизма никакой модификации исходного кола вообще не потребуется. Исходя из примеров, подобных приведенному выше, полиморфизм иногда образно характеризуют как метод, "позволяюший старому коду вызывать новый код", т.е. благодаря ему программа Р фактически сможет вызывать опрелеленную версию определенного оператора, которой даже не существовало на момент написания этой программы Р. Таким образом, здесь мы имеем другой и более важный случай — пример повторного использования кода; одна и та же программа Р может быть пригодна для данных типа Т, которого, повторяем, даже не существовало на момент написания программы Р.

Заменимоеть Как указывалось ранее, понятие заменимости на самом деле является просто тем же понятием полиморфизма, ко~орое рассматривается с несколько иной точки зрения. Мы уже видели, например, что если оператор НКИД(е), где е — эллипс, является допустимым, то оператор АКЕН( с ), где с — окружность, также должен быть допустимым. Иными словами, везде, где система подразумевает эллипс, его всегда можно заменить окружностью. Или в общем виде это можно сформулировать так: везде, где системой подразумевается некоторое значение типа Т, его всегда можно заменить значением типа Т', где Т' — подтип типа Т. Это утверждение называют принципом заменимости значения. Отметим, в частности, что из данного принципа следует, что если некоторое отношение г имеет атрибут А, объявленный как атрибут типа ЕЬЫРЯЕ, то некоторые значения атрибута А могут иметь тип СХКСЬЕ, а не именно тип ЕЬЫРЯЕ.

Точно так, если некоторый тип Т имеет возможное представление, которое включает какой-то компонент С, объявленный относящимся к типу ЕЬЫРЯЕ, то для некоторых значений и типа Т вызов оператора ТНЕ С ( в) может возврашать значение типа С1КСЬЕ, а не типа ЕЬЫРБЕ. И наконец заметим, что, поскольку заменимость — это просто полиморфизм в другом обличье, она также является логическим следствием наследования. Если есть наследование, то долззсна быть и заменимость; в противном случае не будет и наследования.

Л Связывание во время выполнения относится, конечно, к вопросаи реачизации, а не к модели Этот вопрос, в отличие от других вопросов реализации, рассматривается здесь дополнительно, только для того, чтобы упростить правил~нос понимание концепции наследования в целолз. 736 Часть )г.

дополнительные аспекты 19.4. Переменные и операция присвоения Предположим, что имеются две переменные, Е и С, с объявленными типами ЕЬЫРБЕ и С1КСЬЕ соответственно. ЧЕК Е ЕЬЫРБЕ ЧЕК С С1КСЬЕ Сначала проинициализируем переменную С значением некоторой окружности; скажем для определенности, окружности с радиусом 3 н центром в начале координат. С := С1КСЬЕ ( ЕЕНБзН ( 3.0 ), Р01Н1 ( 0.0, 0.0 ) ) В правой части оператора присвоения вызывается операция выбора типа С1КСЬЕ.

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

одного и того же обьявленного типа в случае переменной). Однако из иринципа заменимости значения следует, что там, где система предполагает некоторое значение типа ЕЬЫРБЕ, его всегда можно заменить значением типа С1КСЬЕ, так что показанный выше оператор присвоения является допустимым (фактически это присвоение представляет собой полиморфный оператор). В результате выполнения этого оператора окружность из переменной С будет скопирована в переменную Е и, в частности, значение переменной Е после присвоения будет относиться к типу С1КСЬЕ, а не просто к типу ЕЬЫРБЕ. Иными словами, можно сделать следующие утверждения.

° Значения сохраняют свой наиболее конкретный тип при их присвоении переменным, объявленным с менее конкретным типом. Преобразование типа при таком присвоении не происходит (в нашем примере окружность не становится "просто эллипсом"). Отметим, что для нас были бы нежелательны такие преобразования, поскольку зто привело бы к потере наиболее характерного поведения значения и в нашем случае, например, могло бы означать, что после присвоения будет невозможно получить радиус окружности, сохраненной как значение переменной Е. Замечание.

Ниже, в подразделе "Оператор ТКЕАТ 1)ОЧЧХ", обсуждается процедура получения этого радиуса. ° Из свойства заменимости следует, что переменная обьявленного типа Т может иметь значение, конкрегпный тип которого будет являться любым подтипом типа 7. Поэтому нужно строго различать объявленный тип данной переменной и ее реальный тип, т.е., говоря точнее, конкретный тип (текущее значение). В следующем подразделе мы возвратимся к этому важному вопросу. 737 Глава 19.

Наследование типов Чтобы продолжить рассмотрение примера, предположим, что у нас есть и другая переменная А с объявленным типом АЯЕА. ЧАА А АЕЕА ! Рассмотрим приведенное ниже присвоение. А:=АМЕА( Е ) В данном случае произойдет следующее. ° Во-первых, во время компиляции система выполнит проверку типа в выражении АЕЕА(Е). Проверка даст положительный результат, поскольку переменная Е имеет объявленный тип ЕЬЫРБЕ и единственный параметр оператора АЕЕА также имеет объявленный тип ЕЬЫРБЕ (см. раздел ! 9.2). ° Во-вторых, во время выполнения система обнаружит, что текущий конкретный тип для переменной Š— С1НСЬЕ, и поэтому вызовет ту версию оператора АЕЕА, которая используется для работы с окружностями (иными словами, система осуществит связывание во время выполнения, что обсуждалось в предыдущем разделе).

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

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

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

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