Model je v SIMLIB chápán jako množina prvků (entit), které jsou spolu navzájem propojeny vazbami. Tyto vazby spolu s chováním prvků určují chování systému jako celku. Podobný přístup je podstatou objektově orientovaného programování, jehož principy se poprvé objevily v šedesátých letech v jazyce SIMULA 67. Objektově orientovaný program je tvořen množinou objektů, které spolu navzájem komunikují -- posílají si zprávy.
Rozdělení systému na jednotlivé objekty je závislé na účelu modelu. Mezi objekty modelu můžeme najít takové, které mají shodné podstatné charakteristiky a ty pak můžeme zařadit do jedné třídy objektů. Třída definuje vnitřní strukturu objektů, reakce objektů na vstupy (zprávy) a vlastní chování objektu v čase.
Objekty modelu provádějí určité akce jako odezvu na přijímané zprávy a současně provádějí jiné akce, které jsou nezávislé na přijímaných zprávách. Akce mění stav objektu, jenž je dán obsahem jeho vnitřních datových struktur.
Každý objekt má definované akce, které realizuje když je vytvořen (inicializuje se) a když je rušen. Tyto akce se nazývají konstruktory a destruktory. Stejně jako ostatní akce, související s popisem chování objektu, patří k takzvaným metodám. Přijetí zprávy odpovídá vyvolání metody a metoda pak popisuje akce, kterými má objekt na tuto zprávu reagovat.
Mezi třídami objektů modelu lze nalézt jisté vzájemné vztahy. Tyto vztahy mají obvykle hierarchický charakter (částečné uspořádání). Některé třídy popisují obecné vlastnosti objektů, jiné je více konkretizují. Toho lze výhodně využít při návrhu tříd modelu tak, aby třídy konkrétní mohly využít všeho, co již definovaly třídy obecné. Tato hierarchie tříd je definována relací dědičnosti. Třída může zdědit vlastnosti své bázové třídy, přidávat nové vlastnosti a případně modifikovat vlastnosti zděděné. Takto pojatá hierarchie tříd umožňuje v maximální míře využívat již existujících tříd, což zjednodušuje a zpřehledňuje implementaci modelů. Hierarchie tříd je v podstatě uspořádáním abstrakcí, obvykle od nejobecnějších po konkrétní. Například:
Objekt Dopravní prostředek Automobil Nákladní automobil Osobní automobil Osoba Učitel Žák
Postup od obecných tříd ke konkrétním odpovídá postupu shora dolů, lze však postupovat i jinak. Vytvoření vhodné hierarchie tříd obvykle závisí na řešeném problému.
Hierarchická struktura existuje i na úrovni objektů modelu. Jde o vzájemný vztah objektů z hlediska jejich zahrnutí do jiných objektů jako jejich částí. Tato relace se označuje "patří do" ("is part of"), má jiné použití než dědičnost ("is kind of") a definuje hierarchii objektů.
Figure: Příklad hierarchického uspořádání objektů
Tento způsob popisu problémů je velmi přirozený, protože lze vyjádřit jednoznačný vztah mezi objekty modelu (programu) a objekty modelovaného systému. Metod pro analýzu problémů a návrh objektově orientovaných programů lze využít i v oblasti modelování a simulace. Proto zde uvedeme základní pojmy objektově orientovaného programování.
Objektově orientované programování je metoda implementace, při níž jsou programy tvořeny spolupracujícími skupinami objektů, z nichž každý reprezentuje instanci některé třídy, a třídy jsou navzájem v relaci dědičnosti. Základní principy objektově orientovaného programování:
Tyto principy jsou pro objektově orientované programování podstatné, následující tři jsou méně důležité.
Tyto principy nejsou v oblasti programování nové, ale objektově orientované programování je vhodným způsobem kombinuje. Požadavky, které jsou kladeny na objektově orientovaný jazyk můžeme shrnout do následujících bodů:
Existuje mnoho objektově orientovaných programovacích jazyků, největšího rozšíření dosáhly především jazyky Smalltalk a C++. Bližší informace o objektově orientovaném programování jsou dostupné v literatuře.