Инструменты пользователя

Инструменты сайта


bb:redbook:210

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия Следующая версия справа и слева
bb:redbook:210 [2019/07/24 10:07]
caufman [2. Абстрактные типы]
bb:redbook:210 [2019/07/24 10:10]
caufman [3. Расширяемые типы]
Строка 50: Строка 50:
 ==== 3. Расширяемые типы ==== ==== 3. Расширяемые типы ====
 Расширяемые типы чем-то похожи на абстрактные. Отличие состоит в том, что тип, описанный как расширяемый, может быть использован сразу: без необходимости наследовать его, прежде чем, создать экземпляр типа. Пример использования представлен ниже: Расширяемые типы чем-то похожи на абстрактные. Отличие состоит в том, что тип, описанный как расширяемый, может быть использован сразу: без необходимости наследовать его, прежде чем, создать экземпляр типа. Пример использования представлен ниже:
-  +  MODULE Test_extensible; 
- +   
 +  TYPE 
 +      tVector = EXTENSIBLE RECORD 
 +          x: REAL; 
 +          y: REAL; 
 +      END; 
 +   
 +      tMyVector1 = RECORD (tVector) 
 +          z: REAL; 
 +      END; 
 +   
 +  VAR 
 +      v: tVector; 
 +      v1: tMyVector1; 
 +   
 +  BEGIN 
 +  END Test_extensible.
 Абстрактный тип, также может расширяться в типах-потомках, но не может быть реализован. Далеко не всегда в качестве базового типа необохдимо использовать абстрактный тип. Да и гораздо чаще возникает необходимость расширить существующий тип, чем создавать тип с чистого листа. Стоить отметить, что раз введено такое семантическое свойство, как "расширяемый тип", очевидно, что без ключевого слова EXTENSIBLE тип расширить нельзя. Это поведение типа по умолчанию (как и сокрытие данных). [↑] Абстрактный тип, также может расширяться в типах-потомках, но не может быть реализован. Далеко не всегда в качестве базового типа необохдимо использовать абстрактный тип. Да и гораздо чаще возникает необходимость расширить существующий тип, чем создавать тип с чистого листа. Стоить отметить, что раз введено такое семантическое свойство, как "расширяемый тип", очевидно, что без ключевого слова EXTENSIBLE тип расширить нельзя. Это поведение типа по умолчанию (как и сокрытие данных). [↑]
   
bb/redbook/210.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)