36. Совместимость типов объектов
36. Совместимость типов объектов
Наследование до некоторой степени изменяет правила совместимости типов в Borland Pascal. Потомок наследует совместимость типов всех своих предков.
Эта расширенная совместимость типов принимает три формы:
1) между реализациями объектов;
2) между указателями на реализации объектов;
3) между формальными и фактическими параметрами. Совместимость типов расширяется только от потомка к родителю.
Например, TSalaried является потомком TEmployee, а TCommissioned – потомком TSalaried. Рассмотрим следующие описания:
var
AnEmрloyee: TEmployee;
ASalaried: TSalaried;
PCommissioned: TCommissioned;
TEmployeePtr: ^TEmployee;
TSalariedPtr: ^TSalaried;
TCommissionedPtr: ^TCommissioned;
При данных описаниях справедливы следующие операторы присваивания:
AnEmрloyee:=ASalaried;
ASalaried:= ACommissioned;
TCommissionedPtr:= ACommissioned;
В общем случае правило совместимости типов формулируется так: источник должен быть в состоянии полностью заполнить приемник. Порожденные типы содержат все, что содержат их порождающие типы благодаря свойству наследования. Поэтому порожденный тип имеет размер не меньший размера родителя. Присвоение порождающего объекта порожденному могло бы оставить некоторые поля порожденного объекта неопределенными, что опасно и поэтому недопустимо.
В операторах присваивания из источника в приемник будут копироваться только поля, являющиеся общими для обоих типов. В операторе присваивания:
AnEmрloyee:= ACommissioned;
Только поля Name, Title и Rate из ACommissionedбудут скопированы в AnEmployee, так как только эти поля являются общими для TCommissioned и TEmployee. Совместимость типов работает также между указателями на типы объектов и подчиняется тем же общим правилам, что и для реализаций объектов. Указатель на потомка может быть присвоен указателю на родителя. Если дать предыдущие определения, то следующие присваивания указателей будут допустимыми:
TSalariedPtr:= TCommissionedPtr;
TEmployeePtr:= TSalariedPtr;
TEmployeePtr:= PCommissionedPtr;
Формальный параметр (либо значение, либо параметр-переменная) данного объектного типа может принимать в качестве фактического параметра объект своего же типа или объекты всех дочерних типов. Если определить заголовок процедуры следующим образом:
procedure CalcFedTax(Victim: TSalaried);
то допустимыми типами фактических параметров могут быть TSalaried или TCommissioned, но не тип TEmployee. Victim также может быть параметром-переменной. При этом выполняются те же правила совместимости.
Параметр-значение является указателем на действительный, посылаемый в качестве параметра объект, а параметр-переменная является копией фактического параметра. Эта копия включает только те поля, которые входят в тип формального параметра-значения. Это означает, что фактический параметр преобразуется к типу формального параметра.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
6.3. Совместимость
6.3. Совместимость Приложения, которые скомпилированы с заголовочными файлами из библиотеки glibc и привязанные к одной из ее версий, будут работать и с более поздними версиями библиотеки. Эта обратная совместимость обычно означает, что программисту не придется
Совместимость и преобразование типов данных
Совместимость и преобразование типов данных Настала пора рассмотреть еще два важных вопроса: совместимость типов данных и преобразование одного типа к другому.Что получится, если сложить два числовых значения? Правильно — еще одно числовое значение. А если сложить
Совместимость и преобразование типов данных
Совместимость и преобразование типов данных Настала пора рассмотреть еще два важных вопроса: совместимость типов данных и преобразование одного типа к другому.Что получится, если сложить два числовых значения? Правильно — еще одно числовое значение. А если сложить
11.10 Совместимость и различия
11.10 Совместимость и различия Для обеспечения совместимости с BOOTP формат сообщений DHCP идентичен сообщениям BOOTP. В результате:? Клиент BOOTP может обращаться к серверу DHCP? Клиент DHCP может использовать службу промежуточных агентов BOOTPСамым заметным изменением стало
Совместимость
Совместимость Каждое появление новой операционной системы затрагивает больной вопрос – совместимость с программным обеспечением и оборудованием. Система Windows 7 в этом смысле не исключение: разработчики приложили максимум усилий в этом плане. Конечно, нашлось множество
Совместимость
Совместимость 1. Какие операционные системы Delphi поддерживает? Версия Delphi 1.0 предназначается для Windows 3.1x. Hет причин, по которым Delphi 1.0 не работал бы в системах, которые обеспечивают эмуляцию Windows 3.1, подобно OS/2 Warp, Windows NT, UnixWare 2.0 и т.д. Delphi 2.0 предназначена для работы под Win32/Intel
Поддержка пользовательских типов переносимых объектов
Поддержка пользовательских типов переносимых объектов До сих пор в представленных примерах мы полагались на поддержку QMimeData распространенных типов MIME. Так, мы вызывали QMimeData::setText() для создания объекта переноса текста и использовали QMimeData:urls() для получения содержимого
3. Совместимость типов объектов
3. Совместимость типов объектов Наследование до некоторой степени изменяет правила совместимости типов в Borland Pascal. Помимо всего прочего, порожденный тип наследует совместимость типов всех своих порождающих типов.Эта расширенная совместимость типов принимает три
Функциональная совместимость
Функциональная совместимость Архитектура клиент-сервер для систем баз данных развивалась как ответ на уязвимость, низкий уровень нагрузки и ограничения по скорости модели базы данных совместного доступа к файлам в компьютерных сетях при потребности увеличения
5.9.2. Совместимость с ext3
5.9.2. Совместимость с ext3 Файловая система ext4 является прямо и обратно совместимой с ext3, однако все же имеются и некоторые ограничения. Предположим, что у нас на диске есть файловая система ext4. Ее можно смонтировать и как ext3, и как ext4 (это и есть прямая совместимость) — тут
Эквивалентность и совместимость типов
Эквивалентность и совместимость типов Совпадение типовГоворят, что типы T1 и T2 совпадают, если они имеют одно имя либо же определены в секции type в виде T1 = T2. Таким образом, в описаниях type IntArray = array [1..10] of integer; IntArrayCopy = IntArray; var a1: IntArray; a2: IntArrayCopy; b1,c1: array [1..15] of integer; b2: array [1..15]
Совместимость
Совместимость Другой показатель качества ПО, совместимость, был определен как легкость, с которой программные продукты (в данном обсуждении - модули) можно комбинировать между собой. Если структуры данных не проектировались с этой целью, то имеющие к ним доступ действия
Выявление типов объектов
Выявление типов объектов Вопрос "как мы будем находить объекты?" вначале может выглядеть пугающим. В лекции 4 курса "Основы объектно-ориентированного проектирования" мы рассмотрим его более подробно, но здесь полезно рассеять некоторые из возникающих страхов. Этот вопрос
Описания типов и объектов
Описания типов и объектов Предположим, что известно, как получить надлежащие типы объектов, служащие основой для структуры модулей нашей системы. Тогда немедленно возникнет вопрос, как описать эти типы и их объекты. При ответе на него следует руководствоваться двумя
Совместимость партнеров
Совместимость партнеров Вообще говоря, астролог, рассчитывающий и интерпретирующий карту совместимости не для себя, а для клиента, зачастую оказывается в достаточно сложном этическом положении. Как повлияет сказанное им на дальнейшие отношения, что именно стоит