next up previous contents
Next: Struktura simulačního programu Up: No Title Previous: Úvod

Objektově orientovaná simulace

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ů.

  figure13
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í:

Abstrakce
ukazuje na podstatné charakteristiky objektu, které jej odliąují od vąech ostatních druhů objektů a tedy poskytuje přesně definované konceptuální hranice, vztaľené k perspektivě pozorovatele.

Zapouzdření
(encapsulation) Zapouzdřením se rozumí ukrývání vąech detailů objektu, které nepřispívají k jeho podstatným charakteristikám, viditelným vně objektu.

Modularita
vyjadřuje vlastnost systému, jenľ byl dekomponován do mnoľiny modulů s přesně definovanými vazbami.

Hierarchie
je uspořádání nebo seřazení abstrakcí. Příkladem je hierarchie dědičnosti tříd v objektově orientovaném programování.

Tyto principy jsou pro objektově orientované programování podstatné, následující tři jsou méně důleľité.

Typování
je takové uplatnění třídy objektu, ľe objekty různých tříd nemohou být zaměňovány, nebo nanejvýą mohou být zaměňovány jen velmi omezeným způsobem.

Paralelismus
(concurrency) je vlastnost, která odliąuje aktivní objekt od neaktivního. Při simulačním modelování dynamických systémů se tato vlastnost stává podstatnou.

Persistence
je vlastnost objektu, která definuje dobu jeho existence v čase a prostoru. Například globální proměnné existují pouze při běhu programu, ve kterém jsou definovány, naopak soubory existují, i kdyľ program neběľí.

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.


next up previous contents
Next: Struktura simulačního programu Up: No Title Previous: Úvod

Petr Peringer
Mon Dec 8 13:24:19 CET 1997