Abstrakt datatyp

En abstrakt datatyp (ATD)  är en matematisk modell för datatyper , där en datatyp definieras av beteende ( semantik ) från dataanvändarens synvinkel , nämligen i termer av möjliga värden, möjliga operationer på data av denna typ , och beteendet för dessa operationer.

Formellt kan en ADT definieras som en uppsättning objekt som definieras av en lista med komponenter (operationer som är tillämpliga på dessa objekt och deras egenskaper). Hela den interna strukturen av denna typ är dold för mjukvaruutvecklaren  - detta är kärnan i abstraktionen . En abstrakt datatyp definierar en uppsättning funktioner , oberoende av den konkreta implementeringen av typen, för att arbeta på dess värden. Specifika implementeringar av ADT kallas datastrukturer .

I programmering representeras vanligtvis abstrakta datatyper som gränssnitt , som döljer motsvarande typimplementationer. Programmerare arbetar med abstrakta datatyper uteslutande genom sina gränssnitt, eftersom implementeringen kan förändras i framtiden. Detta tillvägagångssätt är i linje med principen om inkapsling i objektorienterad programmering . Styrkan med denna teknik är just att gömma implementeringen. Eftersom endast gränssnittet publiceras utanför, så kommer alla program som arbetar med den givna strukturen med en abstrakt datatyp att fortsätta fungera så länge som datastrukturen stöder detta gränssnitt. Utvecklare av datastrukturer försöker, utan att ändra det externa gränssnittet och semantiken för funktioner, att gradvis förfina implementeringar, förbättra algoritmer när det gäller hastighet, tillförlitlighet och använda minne.

Skillnaden mellan abstrakta datatyper och datastrukturer som implementerar abstrakta typer kan illustreras med följande exempel. Listabstraktdatatypen kan implementeras som en array eller en linjär lista med olika metoder för dynamisk minnesallokering . Varje implementering definierar dock samma uppsättning funktioner, som bör fungera på samma sätt (i resultat, inte i hastighet) för alla implementeringar.

Abstrakta datatyper låter dig uppnå modularitet av mjukvaruprodukter och har flera alternativa utbytbara implementeringar av en enda modul.

Exempel på ATDs

Se även

Länkar