Et objekt er en samlet indkapsling af en række data bestanddele. Ydermere
bestræber vi os på at skabe disciplineret tilgang til disse data gennem en
grænseflade af operationer. Vi kan opfatte operationerne som en integreret del
af objektet. Nogle af dataene har måske kun begrænset synlighed
og brugbarhed uden for objektet.Et objekt
har identitet, hvilket vil sige at objektet er mere end blot summen af delene.
Vi kan derfor se forskel på to objekter med samme databestanddele. Objektets tilstand
bæres af de enkelte databestanddele, som typisk kan læses og ændres via operationer (metoder).
Operationerne beskriver objektets adfærd.
Vi vender herunder tilbage til både grænseflader og objekt-identitet.
Abstrakte datatyper er datatyper, hvori værdierne tilgås via en mængde af
operationer.
Alternativet (for konkrete datatyper) er at manipulere værdierne
direkte, som de er repræsenteret. Dette skaber store bindinger mellem
data-anvendelsen og data-definitionen.
Betegnelsen værdi og objekt anvendes her synonymt, omend det ikke
altid er tilfældet når vi har med objekt-orienteret programmering at gøre. Mere om dette i en senere lektion.
I de fleste objekt-orienterede programmeringssprog skabes objekter ved at instantiere
en klasse. Abstrakte datatyper programmeres altså via klasser.
Klasser og typer forholder sig til hinanden ligesom objekter og værdier.
Typer og værdier er betegnelser, som stammer fra den matematiske del af faget.
Klasser er en programmeringssproglig konstruktion. Og objekter er instanser af klasser,
som findes på programmets køretidspunkt.
Man kan også
forestille sig at objekter skabes ved at kopiere allerede eksisterende objekter.
Her er vi dog stadig efterladt med spørgsmålet om, hvor det første objekt af en
bestemt type kommer fra.