b'\n_START_ARTICLE_\nAbstrakt datatype\n_START_PARAGRAPH_\nI datalogi er en abstrakt datatype, eller abstrakt datastruktur en matematisk model for en bestemt klasse af strukturer som har indbyrdes lignende adf\xc3\xa6rd. I programmering kan begrebet bruges til at beskrive datastrukturer som grundl\xc3\xa6ggende modellerer det samme._NEWLINE_En abstrakt datatype kan indirekte defineres ud fra hvilke operationer man kan udf\xc3\xb8re p\xc3\xa5 den og hvilke restriktioner disse operationer er underlagt. For eksempel kan en abstrakt datastruktur defineres ud fra to operationer: skub, som inds\xc3\xa6tter noget data i strukturen, og fjern, som udtager noget data i den. Med restriktionen at fjern altid udtager det stykke data som senest blev indsat, kan man sige at den abstrakte datatype svarer til en stak. Yderligere kunne man tilf\xc3\xb8je restriktionen at begge operationer skal tage den samme m\xc3\xa6ngde tid uanset hvor stor stakken er._NEWLINE_Abstrakte datatyper er rent teoretiske modeller som bruges til at forsimple beskrivelsen af algoritmer, til at klassificere og evaluere datastrukturer og til formelt at beskrive typesystemer i programmeringssprog._NEWLINE_Abstrakte datatyper kan dog implementeres ved hj\xc3\xa6lp af specifikke datatyper eller datastrukturer eller beskrives i et formelt specifikationssprog. Abstrakte datatyper er ofte implementeret som moduler hvor modulets gr\xc3\xa6nseflade deklarerer procedurer som svarer til den abstrakte datatypes operationer og med dokumentation som beskriver restriktioner._NEWLINE_Begrebet abstrakte datatyper er ogs\xc3\xa5 relateret til begrebet dataabstraktion, som er vigtigt i objektorienteret og kontraktbaseret programmering inden for udvikling af software.\n_START_SECTION_\nDefinition\n_START_PARAGRAPH_\nDer findes ingen standardiseret m\xc3\xa5de at definere abstrakte datatyper, men en popul\xc3\xa6r m\xc3\xa5de at inddele definitioner er mellem imperativ og funktionel definitionsstilart (se Programmeringsparadigme).\n_START_SECTION_\nImperative definitioner\n_START_PARAGRAPH_\nI imperative definitioner, som i st\xc3\xb8rre grad l\xc3\xa6gger sig op ad det imperative programmeringsparadigme, betragtes datastrukturer som mut\xc3\xa9rbare, hvilket vil sige at den samme m\xc3\xa6ngde data kan have forskellige tilstande p\xc3\xa5 forskellige tidspunkter. Nogle operationer kan \xc3\xa6ndre p\xc3\xa5 datastrukturens tilstand mens andre blot afl\xc3\xa6ser den. For at understrege denne pointe kan man sige at instruktionerne udf\xc3\xb8res eller anvendes p\xc3\xa5 strukturen, snarere end at de blot evalueres.\n_START_SECTION_\nAbstrakte variable\n_START_PARAGRAPH_\nImperative definitioner for abstrakte datatyper afh\xc3\xa6nger ofte af abstrakte variable, der kan betragtes som de simpleste abstrakte datatyper idet de har to operationer: gem, som tilskriver en v\xc3\xa6rdi til en given abstrakt variabel, og hent, som svarer til v\xc3\xa6rdien for en given abstrakt variabel, med den begr\xc3\xa6nsning at v\xc3\xa6rdien for en abstrakt variabel altid er den seneste v\xc3\xa6rdi den er tilskrevet._NEWLINE_I beskrivelser af algoritmer benyttes ofte syntaksen V \xe2\x86\x90 x eller V\xc2\xa0:= x n\xc3\xa5r en v\xc3\xa6rdi x gemmes i en abstrakt variabel V, og n\xc3\xa5r v\xc3\xa6rdien for en abstrakt variabel hentes n\xc3\xb8jes man med at skrive V._NEWLINE_I beskrivelsen af nogle algoritmer benyttes kun en enkelt abstrakt datastruktur af en given type, for eksempel ved sortering, hvor operationsnavne som gem og hent s\xc3\xa5ledes implicit altid refererer til denne ene struktur.'