Ukázka - simulátor obvodů


Následující program implementuje jednoduchý diskrétní simulátor obvodů s využitím OOP.

Vlastní simulátor je reprezentován třídou TSimulator, který nese jedinou datovou strukturu - obousměrně vázanou frontu událostí (každá událost je reprezentována časem události, ukazatelem na objekt, kterého se událost týká (vodič, port) a hodnota (např. nastavené napětí na vodiči) spjatá s událostí. Metoda simuluj zpracovává postupně frontu událostí.

Abstraktní třída TObjekt je společný předek všech objektů v simulátoru (vodičů, součástek, atd.). Virtuální metoda funkce je volána v každém kroku simulace a představuje funkcionalitu prvků (např. nastavení napětí na vodiči a aktivaci portů, které napájí). Metoda vypis_info vypisuje na obrazovku aktuální stav objektu (volá se v každém kroku simulace).

Od třídy TObjekt je odvozena třída TNosic; ta je společným předkem třídy TVodic, TVstupPin (modeluje vstupní pin součástky), TVstupPort (vstupní napájecí port celého obvodu). Napětí na portu se nastavuje voláním metody nastav_napeti. Vazba mezi porty, vodici a piny je realizována ukazateli na konktrétní objekty (jsou atributy jednotlivých tříd).

Třída TKomponenta je společný předek součástek. Její potomci TKomp_nula a TKomp_nap modelují komparátory napětí s nulovou hodnotou a nenulovou nastavenou hodnotou napětí.

Zapojení obvodu je zajištěno voláním příslušných metod v hlavním programu. Simulátor simuluje obvod dle následujícího obrázku.

Simulátor ke stažení: simulator.zip