Objekt (datalogi)

Et dataobjekt eller blot objekt i datalogi er en basal enhed, der danner grundlag for objektorienteret analyse og design samt objektorienteret programmering. Et objekt vil typisk være baseret på en klasse, men kan også være skabt anonymt. Et objekts variabler kaldes egenskaber ("properties") og dets funktioner kaldes metoder ("methods").

Grundlæggende definition 
Et objekt defineres som en helhed med:
 en identitet,
 en tilstand og
 en adfærd.

På grund af identiteten kan to objekter til enhver tid skelnes fra hinanden, også hvis de i øvrigt ligner hinanden. Objektets tilstand beskriver egenskaber i form af attributters værdier. Endelig beskriver adfærden de påvirkninger (af tilstanden), som objektet har været ude for eller kan komme ud for.

Objekter kommunikerer med hinanden på den måde, at et objekt kan sende en besked til et andet objekt. Beskeden vil ofte gå ud på at få modtageren til at foretage handlinger (adfærd) på sig selv, hvilket også kan omfatte kommunikation med andre objekter. Når modtageren har afsluttet sin handling, leverer den et svar tilbage til afsenderen.

Normalt er man imidlertid ikke interesseret i at behandle og beskrive hvert enkelt objekt, men bruger i stedet klasse-begrebet. En klasse er her en beskrivelse af en mængde af ensartede objekter.

Objekter i analyse 
Analyse går ud på for systemudviklerne at skaffe sig en forståelse af det domæne, som de skal lave it-systemet til. I den forbindelse finder de objekter fra domænet, idet man betragter den virkelige verden som en enorm samling objekter (fysiske og abstrakte), der spiller sammen om at få udført en række arbejdsopgaver. Det er nu systemudviklernes opgave, dels at identificere interessante objekter, dels at gruppere disse objekter, så de kan beskrives med klasser.

Som eksempel kan man bruge domænet et bibliotek. Heri er der en lang række objekter, da hver eneste bog og øvrige udlånsmaterialer hver for sig kan opfattes som objekter. Det samme gælder alle lånere, der er registreret i biblioteket. Endvidere kan man vælge at opfatte hvert enkelt udlån som et objekt.

I eksemplet er f.eks. bogen "Syv aldres galskab" af Svend Åge Madsen et objekt og den tilhørende klasse kunne kaldes "bog". Det er op til udviklerne at finde frem til, hvilke egenskaber ved objekter fra "bog"-klassen, der er relevante for det system, der skal udvikles. Opgaven løses typisk ved at konferere med domæneeksperter, her bibliotekarer, og sammenholde deres oplysninger med de overordnede rammer for udviklingen af systemet.

Udviklerne vil altså normalt ikke fokusere på det enkelte objekt, men vil bruge dem i begrænset omfang som hjælp frem mod målet med at skabe en klassemodel. Unified Modeling Language (UML) gør det også muligt at tegne objektdiagrammer, men de anvendes kun sjældent i praksis.

Objekter i design 
I design nærmer systemudviklerne sig programmeringen, og designopgaven går ud på at beskrive det kommende it-system på en måde, så programmet kan skrives uden alt for store overvejelser.

Objektorienteret design baserer sig på den klassemodel af domænet, der er skabt i analysen. For at beskrive it-systemet må denne model suppleres med beskrivelser af en række it-specifikke objekter, også her i form af klasserne.

Der vil i det kommende program være behov for objekter, der skaber kommunikation mellem brugeren og domænemodellen, og der vil være behov for at sikre objekternes overlevelse på en disk eller lignende, oftest i en database blot for at tage enkelte eksempler. Til det formål beskriver udviklerne en lang række klasser, der gør det muligt at løse de nødvendige arbejdsopgaver med det kommende system.

Eksempler på design-objekter:
 Objekter i brugergrænsefladen, f.eks. vinduer, menuer, indtastningsfelter og knapper.
 Objekter til håndtering af datasikkerheden, f.eks. kryptering af følsomme data.
 Objekter til kommunikation med en database, f.eks. oprettelse af en ny databasepost og læsning af en eksisterende post.
 Objekter til netværkskommunikation.

Objekter i programmering 
I objektorienteret programmering er et objekt en variabel, der er oprettet som en konkret forekomst af en klasse. Objektet omfatter en række felter (attributter), som kan være af forskellige datatyper. Felterne kan indeholde referencer til andre objekter, eller de kan indeholde simple værdier som tal. I et objekt er der direkte adgang til de metoder (funktioner), der er defineret for klassen. En metode kan arbejde med de felter, der er defineret for objektet ved hjælp af klassen og vil bruge værdier fra det aktuelle objekt ud over eventuelle parametre.

Fodnoter 

Datalogi