# Object (informatica)

Een object in de object-oriëntatie is een verzameling van toestandsruimte en operaties binnen een draaiend, object-georiënteerd programma.

## Objectprincipes

Een object in een object-georiënteerd programma is een functioneel en operationeel concept binnen het programma. Het dient ter afbakening van een specifiek gedeelte van de functionaliteit van het programma als geheel.
In functionele zin is een object een voorbeeld, een specifieke instantiatie, van een bepaald concept. In een administratief programma waarin de gewerkte uren en salarissen van werknemers bijgehouden worden, stelt een object bijvoorbeeld een werknemer voor met alle gegevens die bij die werknemer horen en alle operaties die die werknemer kan ondergaan. Het object in functionele zin is een mogelijkheid voor de ontwerper van een programma om alles binnen een programma dat met een bepaald concept te maken heeft, logisch te ordenen en bij elkaar te houden.
In operationele zin is een object binnen een programma een verzameling data (variabelen en dergelijke) en een verzameling operaties (methoden, procedures of functies) die werkzaam zijn op die data. In operationele zin is een object een grens die bepaalde data omsluit; data of variabelen in een object worden in een programma bij elkaar gehouden en mogen alleen gemanipuleerd worden volgens regels die (mede) bepaald worden door het feit dat zij tot een bepaald object horen.

## Objectabstracties

In een meer abstracte zin zijn objecten tuples van variabelen en functies. Tenminste, zo worden ze meestal gemodelleerd in berekeningsmodellen als de lambdacalculus.
Deze tuples kunnen als geheel behandeld worden, maar er zijn ook toegangsmogelijkheden om individuele velden van tuples te manipuleren. Deze toegangsmogelijkheden kunnen al dan niet beperkt zijn.
Objecten omvatten een deelruimte van de toestandsruimte van een geheel programma. Zij kunnen vaak gezien worden als een implementatie van de "separation of concerns" vuistregel bij het ontwerpen van computerprogramma's.

## Posities van objecten binnen een programma

De exacte positie die een object inneemt in een programma, wisselt met de programmeertaal.
In sommige programmeertalen (zoals Ruby en Smalltalk) zijn objecten de basis van alles. In deze objectgebaseerde talen wordt ieder concept en iedere bewerking opgebouwd uit objecten. Ieder object is een individu op zich, met een eigen vorm en gedrag. Objecten kunnen gerelateerd zijn en kunnen ontstaan als kopie van een ander object, maar ieder object kan tijdens zijn leven van vorm veranderen -- de werking van zijn operaties kan wijzigen, de verzameling operaties die een object beschikbaar stelt kan wijzigen en vaak kan ook de verzameling variabelen binnen een object wijzigen. Dergelijke talen kennen meestal geen concept van "type van een object", maar definiëren object-type en object-compatibiliteit in termen van welke operaties een object ondersteunt.
Andere talen (zoals Java en Object Pascal) stellen een ander concept centraal: het "voorbeeldobject" (normaal de klasse genaamd). In dit geval is het de klasse die de vorm van ieder object bepaalt en is ieder object niet meer dan een specifieke "afdruk" van de klasse (de klasse is een stempel, een object is de afdruk van het stempel op papier). In deze talen worden programma's ontworpen en opgebouwd aan de hand van klassen en de manieren om objecten van die klassen te maken en te gebruiken. Objecten kunnen gedurende hun leven meestal niet van vorm veranderen (alhoewel er talen zijn, bijvoorbeeld Sather, die dit wel toestaan). Deze talen kennen meestal een klassieker concept van type en veel van deze talen trekken het concept klasse en het concept objecttype gelijk.