Запись (тип данных)
Запись — агрегатный тип данных, инкапсулирующий без сокрытия набор значений[en] различных типов.
Применяется во многих языках программирования. В одних языках (например, в Паскале) порядок размещения значений в памяти задаётся при определении типа и сохраняется на протяжении времени жизни объектов, что даёт возможность косвенного доступа (например, через указатели); в других языках (например, в ML) порядок размещения не определён, так что доступ к значениям возможен только по квалифицированному идентификатору. В некоторых языках, хотя порядок следования и сохраняется, но выравнивание контролируется компилятором, так что использование адресной арифметики может оказаться платформенно-зависимым. Некоторые языки позволяют присваивание между экземплярами разных записей, игнорируя различия в идентификаторах компонентов записей, и основываясь только на порядке следования. Другие языки, напротив, учитывают только совпадение имён, разрешая различия в порядке их определения.
Впервые записи были представлены в языке Кобол, где они имели довольно сложную нотацию. При проверке согласования типов, Кобол учитывает только совпадение имён полей записей и не учитывает совпадение порядка их следования.
Кортежи служат формальным обоснованием записей в теории типов. В то же время, в языках кортежи временами могут реализовываться посредством записей, использующих в качестве идентификаторов индексные номера полей в получаемом кортеже. Более точной теоретической моделью записей является System F-sub[en] (расширение Системы F понятием подтипов[en]). Компонентами записей могут быть функции первого класса, что позволяет реализовывать основные концепции объектно-ориентированного программирования. Имеются практические воплощения этой модели[1]. С другой стороны, классы в объектно-ориентированном программировании естественным образом представляются в виде записей, содержащих поля-данные, которым дополнительно назначен атрибут видимости, сопровождаемых полями-методами, ориентированными на обработку этих записей. Например, именно таким образом классы воплощены в языке C++.
Напишите отзыв о статье "Запись (тип данных)"
Примечания
- ↑ Bernard Berthomieu [homepages.laas.fr/bernard/oo/ooml.html OO Programming Styles in ML]. — LAAS Report #2000111, Centre National De La Recherche Scientifique Laboratoire d'Analyse et d'Architecture des Systèmes, 2000.
<imagemap>: неверное или отсутствующее изображение |
Для улучшения этой статьи желательно?:
|
Отрывок, характеризующий Запись (тип данных)
Полковой командир, в ту самую минуту как он услыхал стрельбу и крик сзади, понял, что случилось что нибудь ужасное с его полком, и мысль, что он, примерный, много лет служивший, ни в чем не виноватый офицер, мог быть виновен перед начальством в оплошности или нераспорядительности, так поразила его, что в ту же минуту, забыв и непокорного кавалериста полковника и свою генеральскую важность, а главное – совершенно забыв про опасность и чувство самосохранения, он, ухватившись за луку седла и шпоря лошадь, поскакал к полку под градом обсыпавших, но счастливо миновавших его пуль. Он желал одного: узнать, в чем дело, и помочь и исправить во что бы то ни стало ошибку, ежели она была с его стороны, и не быть виновным ему, двадцать два года служившему, ни в чем не замеченному, примерному офицеру.Счастливо проскакав между французами, он подскакал к полю за лесом, через который бежали наши и, не слушаясь команды, спускались под гору. Наступила та минута нравственного колебания, которая решает участь сражений: послушают эти расстроенные толпы солдат голоса своего командира или, оглянувшись на него, побегут дальше. Несмотря на отчаянный крик прежде столь грозного для солдата голоса полкового командира, несмотря на разъяренное, багровое, на себя не похожее лицо полкового командира и маханье шпагой, солдаты всё бежали, разговаривали, стреляли в воздух и не слушали команды. Нравственное колебание, решающее участь сражений, очевидно, разрешалось в пользу страха.
Генерал закашлялся от крика и порохового дыма и остановился в отчаянии. Всё казалось потеряно, но в эту минуту французы, наступавшие на наших, вдруг, без видимой причины, побежали назад, скрылись из опушки леса, и в лесу показались русские стрелки. Это была рота Тимохина, которая одна в лесу удержалась в порядке и, засев в канаву у леса, неожиданно атаковала французов. Тимохин с таким отчаянным криком бросился на французов и с такою безумною и пьяною решительностью, с одною шпажкой, набежал на неприятеля, что французы, не успев опомниться, побросали оружие и побежали. Долохов, бежавший рядом с Тимохиным, в упор убил одного француза и первый взял за воротник сдавшегося офицера. Бегущие возвратились, баталионы собрались, и французы, разделившие было на две части войска левого фланга, на мгновение были оттеснены. Резервные части успели соединиться, и беглецы остановились. Полковой командир стоял с майором Экономовым у моста, пропуская мимо себя отступающие роты, когда к нему подошел солдат, взял его за стремя и почти прислонился к нему. На солдате была синеватая, фабричного сукна шинель, ранца и кивера не было, голова была повязана, и через плечо была надета французская зарядная сумка. Он в руках держал офицерскую шпагу. Солдат был бледен, голубые глаза его нагло смотрели в лицо полковому командиру, а рот улыбался.Несмотря на то,что полковой командир был занят отданием приказания майору Экономову, он не мог не обратить внимания на этого солдата.