Budeme se zabývat objektovým návrhem a následnou implementací Dijkstrova algoritmu (jako speciálního případu diskrétní simulace). Začněte tedy přípravou objektového návrhu. Pro kontrolu napište, kolik tříd ve Vašem návrhu vystupuje.


Pro naše účely se příliš nehodí návrh v podobě UML diagramu, návrh tedy provedeme zápisem tříd, atributů a metod (přičemž těla metod definujeme později - a tím dosvědčíme realizovatelnost objektového návrhu). Proveďte a následně porovnejte s naším (na slepo provedeným) objektovým návrhem. Zatím svůj návrh (dle toho našeho) ještě neupravujte (netvrdíme, že náš návrh je vrchol kvality):
class kalendar
{	udalost**udalosti;//samotny kalendar implementujeme haldou
	public:
	udalost*extract_min();//Vybere prvni udalost z kalendare (a vrati pointer na ni)
	void pridej(udalost*);//Prida udalost do kalendare
	void posun(int poradi,int na_kdy);//Posune udalost v kalendari
}

class jadro
{	kalendar*kal;
	public:
	void priprav();//pripravi simulaci
	int proved_dalsi();//zajisti obslouzeni pristi udalosti. Vrati udaj o tom, zda obslouzeni probehlo (navratova hodnota -1), nebo simulace skoncila (v tom pripade vrati cas konce simulace)
}

class udalost
{	int cas;//cas udalosti
	public:
	virtual void obsluz_se()=0;//metoda zajistici obslouzeni udalosti bude definovana v synech.
}

class mravenec:public udalost
{	int kamlezu;//cislo ciloveho vrcholu (vrcholy grafu jsou cislovane)
	virtual void obsluz_se();//zajisti oblehnuti vrcholu (a vypravi brabence do sousednich vrcholu - dosud neobsazenych).
}
Nyní si představme, že máme tento objektový návrh implementovat. Na jaká slabá místa narazíme?

Napište, kolik slabých míst návrhu jste našli: