V objektově orientovaném popisu systémů je třeba používat různé druhy objektů podle způsobu jejich vytvoření. Podle požadavků na dobu existence objektu lze použít různé způsoby vytvoření objektů podle toho, má-li být objekt statický nebo dynamický. Předpokládáme-li třídu Zakaznik, můžeme vytvořit objekty této třídy například takto:
(1) new Zakaznik; (2) Zakaznik *ptr; ptr = new Zakaznik; (3) Zakaznik Z;
V prvním případě je dynamicky vytvořen nový objekt třídy Zakaznik a takto vytvořený objekt není nijak identifikovatelný. Proto je tento způsob použitelný pouze pro objekty, na které nebude třeba se explicitně odkazovat. Druhý případ je doplněn o ukazatel na objekt třídy zákazník. Tento ukazatel potom slouží k identifikaci konkrétního zákazníka při komunikaci s ním. Dynamické objekty lze vytvářet i rušit v průběhu simulace. Třetí způsob odpovídá vytvoření globálního statického objektu s identifikací jménem (identifikátorem). Tento objekt existuje po celou dobu běhu simulačního programu.
Objekty, definované tvůrcem modelu, mohou být globální nebo lokální z hlediska jejich umístění v jiných objektech. Objekty globální jsou dostupné vždy, objekty uvnitř třídy (lokální) jsou dostupné pouze když to tato třída dovolí specifikací public. Lokální objekty jsou součástí jiných tříd objektů:
class X : public Process { Histogram H; double StartTime; int i; public: X() : H("X.H",0,0.1,10), i(0) {}; ... };
Z ukázky je patrná syntaxe volání konstruktoru lokálního objektu H. Každý objekt třídy X obsahuje histogram H, který je nedostupný objektům jiné třídy (má implicitně specifikaci private).
Další členění objektů je z hlediska časového. Objekty, které v modelu existují po celou dobu simulace, nazveme statické a objekty, které vznikají a zanikají v průběhu simulace, budeme nazývat dynamické.
Protože objekty modelu je nutné identifikovat (pro čitelný výstup), musí se při vytváření objektů některých tříd uvést jejich textové pojmenování:
Facility F1("Zařízení 1"); Store S1("Sklad 1", Kapacita); Histogram H("Četnost hodnot x",Od,Krok,10);
Store *ptr; ptr = new Store("Sklad X",10000);
class X { Facility F; public: X() : F("Lokální zařízení") {} ... };
Pro zrušení objektu odvozeného od třídy Process lze použít metodu Cancel, která provede potřebné operace. Tatáž operace se provede implicitně po ukončení popisu chování objektu v metodě Behavior. Dynamicky vytvořené objekty lze rušit operátorem delete aplikovaným na ukazatel na objekt:
delete objptr;
Statické globální objekty nelze rušit explicitně, ruší se automaticky po ukončení simulačního programu. Jazyk C++ volá automaticky při rušení každého objektu speciální metodu -- destruktor, který může provést případné operace, nutné pro jeho korektní odstranění z modelu.