Diskuze: Objektový návrh
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Máš jen zkažené myšlení neobjektovým kódem OOP je přeci takové, jaké je to
ve skutečnosti. Stanice, vlak, to jsou normální objekty.
Trasu můžeš realizovat jako pospojování něčeho jako BodTrasy. Z toho bude dědit výhybka, ale taky stanice, prostě vše, co nějak ovlivňuje vlak. Trasa je tedy kolekce BodTrasy. Stačí jimi zasebou jet a dívat se třeba před sebe, co tam je dál.
Ještě ses ptal na to, co je to proces. To nám musíš upřesnit. Může to být třeba kolekce kroků, těžko říct, co to má dělat.
Kam se teda má proces dívat, když chce vědět, co bude dál?
Celková trasa není pevná, ani známá předem.
Představa jednoho vlaku v objektech selhává. Spíš bych to přirovnal k tomu, že každá stanice může kdykoli (v případě eventu) vypravit vlak do jiné (povolené) stanice. Ta si ten vlak po přijetí rozebere a následně může (ale nemusí) vypravit další vlaky do jiných stanic. Proces nebude jeden, ale několik na sobě nezávislých. Vlastně se takový program chová jako operační systém v malém provedení.
Proces by měl být snad něco jako sada funkcí, jejichž parametry
by se četly z bodů trasy.
To je celkem zajímavé. Víc procesů vypouštěných ze stanic by
řešilo
dost otázek. Jen by to zas muselo něco kontrolovat. Jako třeba jestli
vůbec nějaký proces běží, jestli se nespustily dva procesy, které by
si navzájem kazily činnost, atd.
Každá stanice (objekt) je proces, který se probouzí s přijetím dat (vlaku) nebo eventu (přijetí zboží místní produkce, zásah bleskem, ...)
Trasa musí být daná nebo musí být alespoň znám způsob, jak vzniká. Nic to na mém modelu nemění, jen budeš přidávat objekty do kolekce podle akcí vlaku (čím projel). OOP odpovídá tomu, jak chápou lidi svět a jak myslí. Když víš, jak to udělat, víš i jak to napsat objektově (většinou). Já tomu moc nerozumím, jinak bych ti to navrhl.
A co data, která by bylo třeba vázat na proces, ale napříč více
stanicemi.
Příkladně počet projetých stanic od začátku.
Edited:
Zdá se, že na tohle vlastně odpověděl sdraco...
Samozřejmě nad tím je nějaký supervizor, který rozděluje eventy a sleduje provoz. Když žádný proces neběží a ani není žádný event, tak spí. Obvykle se pro tyto účely používá kooperativní multitasking. Tím se vyloučí možnost kolize.
Zdá se mi, že trasa vzniká procesem a proces čte z trasy, někde je
problém Trasa by se třeba
mohla pravděpodobnostně generovat podle minulého procesu a ten by se podle
toho upravoval.
Ty jsem pochopil jako že vlak na něco najede (tedy že jsou na trase). Ale jestli jsou asynchronní, pak tvoří trasu ony.
Eventy by měly způsobit změny v trase. Svým způsobem ji tak i
tvoří.
Začínám mít pocit, že si to ještě musím nějakou dobu utřepávat v
hlavě.
Než si to sedne na správná místa.
Zobrazeno 16 zpráv z 16.