1.1.1. Objekt

S objekty se setkáváme všude kolem nás, vytvářejí naši každodenní realitu. Při návrhu programových systémů se snažíme reálné objekty modelovat a reprezentovat pomocí abstraktních objektů, které odrážejí část vlastností a chování reálných objektů. Při tomto procesu vždy dochází ke zjednodušení; máme-li vytvořit systém pro prodej počítačových komponent přes Internet, budeme do modelu zákazníka zahrnovat pouze ty údaje, které jsou pro obchodování relevantní. Bude nás zajímat jeho adresa, na kterou máme vybrané zboží zaslat, ale už pravděpodobně nebude relevantní jeho místo narození, zdravotní stav nebo barva očí.

Z hlediska abstraktního pohledu je objekt diskrétní entita s jasně definovaným rozhraním, které zapouzdřuje stav a chování. Stav objektu je určen hodnotami atributů objektu v určitém okamžiku - např. jméno zákazníka, jeho adresa a bankovní spojení. Chování objektu je dáno operacemi, které můžeme s objektem provádět. Další společnou vlastností všech objektů je identita, představující jedinečnou existenci objektu v čase a prostoru, která jej odlišuje od jiných objektů. O identitě objektů můžeme rozhodnout na základě klíčových atributů, které jednoznačně objekt identifikují - např. evidenční číslo stroje nebo přihlašovací jméno uživatele v informačním systému.

Pojem zapouzdření představuje ukrytí vnitřní struktury objektu a implementace jeho operací za veřejným rozhraním objektu. Často spočívá například v tom, že s atributy objektu nemůžeme manipulovat přímo, ale pouze pomocí operací, které jsou součástí tohoto veřejného rozhraní. Zapouzdření nám zajišťuje plnou kontrolu nad objektem, uživatel objektu s ním může manipulovat jen prostřednictvím veřejného rozhraní. Můžeme pak například změnit vnitřní reprezentaci objektu nebo implementaci jeho metod, aniž by to ovlivnilo uživatele objektu.