En abstrakt datatype (ATD) er en matematisk model for datatyper , hvor en datatype er defineret ved adfærd ( semantik ) fra databrugerens synspunkt , nemlig i form af mulige værdier, mulige operationer på data af denne type , og adfærden af disse operationer.
Formelt kan en ADT defineres som et sæt af objekter, der er defineret af en liste over komponenter (operationer, der gælder for disse objekter og deres egenskaber). Hele den interne struktur af denne type er skjult for softwareudvikleren - dette er essensen af abstraktion . En abstrakt datatype definerer et sæt funktioner , uafhængigt af typens konkrete implementering, til at operere på dens værdier. Specifikke implementeringer af ADT'er kaldes datastrukturer .
I programmering er abstrakte datatyper normalt repræsenteret som grænseflader , som skjuler de tilsvarende typeimplementeringer. Programmører arbejder udelukkende med abstrakte datatyper gennem deres grænseflader, da implementeringen kan ændre sig i fremtiden. Denne tilgang er i overensstemmelse med princippet om indkapsling i objektorienteret programmering . Styrken ved denne teknik er netop at skjule implementeringen. Da kun grænsefladen er publiceret udenfor, så vil så længe datastrukturen understøtter denne grænseflade, vil alle programmer, der arbejder med den givne struktur med en abstrakt datatype, fortsætte med at fungere. Udviklere af datastrukturer forsøger, uden at ændre den eksterne grænseflade og semantik af funktioner, gradvist at forfine implementeringer, forbedre algoritmer med hensyn til hastighed, pålidelighed og brugt hukommelse.
Forskellen mellem abstrakte datatyper og datastrukturer , der implementerer abstrakte typer, kan illustreres med følgende eksempel. Listens abstrakte datatype kan implementeres som et array eller en lineær liste ved hjælp af forskellige metoder til dynamisk hukommelsesallokering . Hver implementering definerer dog det samme sæt funktioner, som skal fungere på samme måde (i resultat, ikke i hastighed) for alle implementeringer.
Abstrakte datatyper giver dig mulighed for at opnå modularitet af softwareprodukter og har flere alternative udskiftelige implementeringer af et enkelt modul.
Datatyper | |
---|---|
Ufortolkelig | |
Numerisk | |
Tekst | |
Reference | |
Sammensatte | |
abstrakt | |
Andet | |
relaterede emner |