Запись (тип данных)

Записьагрегатный тип данных, инкапсулирующий без сокрытия набор значений различных типов.

Применяется во многих языках программирования. В одних языках (например, в Паскале) порядок размещения значений в памяти задаётся при определении типа и сохраняется на протяжении времени жизни объектов, что даёт возможность косвенного доступа (например, через указатели); в других языках (например, в ML) порядок размещения не определён, так что доступ к значениям возможен только по квалифицированному идентификатору. В некоторых языках, хотя порядок следования и сохраняется, но выравнивание контролируется компилятором, так что использование адресной арифметики может оказаться платформенно-зависимым. Некоторые языки позволяют присваивание между экземплярами разных записей, игнорируя различия в идентификаторах компонентов записей, и основываясь только на порядке следования. Другие языки, напротив, учитывают только совпадение имён, разрешая различия в порядке их определения.

Впервые записи были представлены в языке Кобол, где они имели довольно сложную нотацию. При проверке согласования типов, Кобол учитывает только совпадение имён полей записей и не учитывает совпадение порядка их следования.

Кортежи служат формальным обоснованием записей в теории типов. В то же время, в языках кортежи временами могут реализовываться посредством записей, использующих в качестве идентификаторов индексные номера полей в получаемом кортеже. Более точной теоретической моделью записей является System F-sub (расширение Системы F понятием подтипов). Компонентами записей могут быть функции первого класса, что позволяет реализовывать основные концепции объектно-ориентированного программирования. Имеются практические воплощения этой модели. С другой стороны, классы в объектно-ориентированном программировании естественным образом представляются в виде записей, содержащих поля-данные, которым дополнительно назначен атрибут видимости, сопровождаемых полями-методами, ориентированными на обработку этих записей. Например, именно таким образом классы воплощены в языке C++.

Источник: Википедия

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я