Záznam (datový typ)

Záznam  je agregovaný datový typ , který zapouzdřuje , aniž by skryl sadu hodnot různých typů .

Používá se v mnoha programovacích jazycích . V některých jazycích (například v Pascalu ) je pořadí, ve kterém jsou hodnoty umístěny v paměti, určeno při definování typu a je zachováno po celou dobu životnosti objektů, což umožňuje nepřímý přístup (např. přes ukazatele ); v jiných jazycích (například v ML ) není pořadí umístění definováno, takže přístup k hodnotám je možný pouze pomocí kvalifikovaného identifikátoru. V některých jazycích je sice zachováno pořadí, zarovnáníje řízen kompilátorem, takže použití aritmetiky adres může být závislé na platformě. Některé jazyky umožňují přiřazení mezi instancemi různých záznamů, ignorování rozdílů v identifikátorech komponent záznamu a pouze na základě pořadí. Jiné jazyky naopak berou v úvahu pouze shodu jmen a řeší rozdíly v pořadí, ve kterém jsou definovány.

Záznamy byly poprvé představeny v jazyce Cobol , kde měly poměrně složitý zápis. Při kontrole konzistence typů Cobol zvažuje pouze shodu názvů polí záznamu a nezohledňuje shodu jejich pořadí.

N-tice slouží jako formální ospravedlnění záznamů v teorii typů . Zároveň lze v jazycích někdy implementovat n-tice pomocí záznamů, které jako identifikátory používají indexová čísla polí ve výsledné n-tice. Přesnějším teoretickým modelem záznamu je System F-sub (rozšíření systému F s pojmem podtypy ). Součástí záznamů mohou být prvotřídní funkce , které umožňují implementaci základních pojmů objektově orientovaného programování . Existují praktické implementace tohoto modelu [1] . Na druhé straně jsou třídy v objektově orientovaném programování přirozeně reprezentovány jako záznamy obsahující datová pole, kterým je navíc přiřazen atribut viditelnosti , doprovázený políčky metod orientovanými na zpracování těchto záznamů. Například takto jsou třídy implementovány v C++ .

Poznámky

  1. Bernard Berthomieu. OO styly programování v ML . — Zpráva LAAS #2000111, Centre National De La Recherche Scientifique Laboratoire d'Analyse et d'Architecture des Systèmes, 2000.