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

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


bb:redbook:112

Это старая версия документа!


1.12 Введение в типы

1. Понятие о типах

Тип — это классификация чего-либо. Например, движетели:

  • реактивные
  • механические
  • электрические

Механические движетели разделяются:

  • по типу источника энергии
  • по мощности
  • по весу

По типу источника энергии движетели разделяются:

  • бензиновые
  • дизельные
  • керосиновые и т.д.

Теперь если где-то будет написано: «Легендарный автомобиль «Жигули» седьмой модели, производимый в Советском Союзе обладал механическим бензиновым движетелем…» теперь можно точно сказать, что двигатель этот был не керосиновый и уж точно не реактивный, хотя при этом ещё можно и не знать, что такое «бензин», или «электрический движетель». Точно так же, и кладовщик, работавший на том же автомобильном заводе, не разбирался, чем отличается шпонка № 14 от прокладки паранитовой № 2. Но он точно, знал, что одному рабочему надо выдать шпонку № 14, а другому прокладку паранитовую № 2. А если учесть, что в автомобиле «Жигули» более 8 тыс. деталей, вообще странно как можно собирать подобные машины, и как они могут ездить? (а ездят «Жигули» очень и очень не плохо, хотя многим машинам уже за 30-35 лет).

Вот такое разделение по видам и группам называется типизацией, а любой попавший объект в эту систему типизации — имеет свой тип. Понятно, что для сборки машины не нужно, всё что есть вводить в систему типов. Ну например, к чему там уран? Или Марс? Хотя, для организации производства вполне может пригодиться тип «источник_освещения» (ведь конвейер работал круглосуточно). Именно поэтому, могут жить по настоящему большие и сложные системы. Точно также, в КП введено понятие типа; с некоторыми встроенными типами переменных было ознакомление в первых главах, но язык был бы слабым, если бы не позволял программисту расширять систему типов своими типами. [↑]

2. Определение типа

По большому счёту, никаких базовых типов программист уже добавить не может. Он может на основе базовых типов создавать только пользовательские (расширенные) типы. И здесь вся ответственность за создание нового типа ложится только на программиста. На основе последнего примера посмотрим как можно использовать типы в программе:

Hello8.odc

В верхней части модуля теперь появилась новая секция TYPE. В ней объявляется пользовательский тип «tPoint». Буква «t» впереди есть сокращение от TYPE и намекает, что это тип. Даже с учётом того, что имя типа начинается на большую букву, спутать с именем процедуры будет не просто, так как имя типа начинается «t», что сразу обращает на себя внимание. Также надо запомнить, что при объявлении типа ставится знак «равно», а не «двоеточие».

Чуть ниже в секции VAR объявляется переменная «r» типа «tPoint». И теперь при задании переменных с записевым типом не нужно каждый раз описывать поля этой записи. В обиходе программистов такая операция называется «создать экземпляр». Работа с экземпляром типа tPoint ничем не отличается от работы с записевым типом.

На текущий момент в модулях КП можно оперировать несколькими типами секций: IMPORT, CONST, TYPE и VAR. Любая из этих секций может отсутствовать в модуле, в процедурах можно использовать любую секцию, кроме IMPORT. [↑]

3. Заключение

Это лишь вершина айсберга от того, что касается типов. Типы можно наследовать, расширять, модифицировать и мн. др. Как это делать будет рассмотрено отдельно. [↑]

[ ← Назад ] [ Вверх ↑ ] [ Далее → ]

bb/redbook/112.1459424850.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)