dopravni podnik

author(s): Zdenek Styblik (xstyz101)

Model reprezentuje fiktivni dopravni podnik (dale jen DP), ktery prepravuje lidi.

DP vlastni dopravni prostredky, reprezentovano tridou DopravniProstredek, ktere jsou dale rozdeleny na autobusy (extenze Autobus), tramvaje (extenze Tramvaj) a vlaky (extenze Vlak).

Pasazeri jsou reprezentovani extenzi tridy Clovek pojmenovanou Pasazer. Ridici, ktere DP zamestnava, jsou reprezentovani tridou Ridic. Revizori, kteri dohlizeji na to zdali cestujici maji jizdenky, jsou reprezentovani tridou Revizor. Obe tridy jsou extenze k tride Zamestnanec, ktera je extenzi tridy Clovek.

Spoje jsou reprezentovany tridou Linka, trasy tridou Trasa, jednotlive zastavky pak tridou Bod.

Jizdy jsou reprezentovany tridou Jizda. Zde je zaznamenano jakym dopravnim prostredkem, odkud, kam, kdo, atd. byl prepraven.



Workspace


Workspace Objects



Script

"Note that variables begining with uppercase letter will be moved into the workspace pool."

bod1 := Bod new.ifFalse:
bod1 jmeno: 'Bratislavska'.
bod1 poloha: 'Vedle supermarketu Plus'.

bod2 := Bod new.
bod2 jmeno: 'Prosecka'.
bod2 poloha: 'Tam na Proseku'.

bod3 := Bod new.
bod3 jmeno: 'Strelecka'.
bod3 poloha: 'Vedle strelnice ABC'.

bod4 := Bod new.
bod4 jmeno: 'Prazska'.
bod4 poloha: 'No tam, v Prazske ulici'.

bod5 := Bod new.
bod5 jmeno: 'Hrbitovni'.
bod5 poloha: 'Hadej :)'.

bod6 := Bod new.
bod6 jmeno: 'Koh-i-Noh'.
bod6 poloha: 'Jasne kde, ne?'.

trasa1 := Trasa new.
trasa1 nazev: 'Okruzni'.
trasa1 odkud: bod1.
trasa1 kam: bod6.
trasa1 presZastavky add: bod1; add: bod2; add: bod3; add: bod4; add: bod5.

trasa2 := Trasa new.
trasa2 nazev: 'Lokalka1'.
trasa2 odkud: bod2.
trasa2 kam: bod4.
trasa2 presZastavky add: bod5; add: bod6; add: bod1.

linka1 := Linka new.
linka1 cislo: 501.
linka1 trasa: trasa1.

linka2 := Linka new.
linka2 cislo: 13.
linka2 trasa: trasa1.

linka3 := Linka new.
linka3 cislo: 158.
linka3 trasa: trasa2.

autobus1 := Autobus new.
autobus1 porizovaciCena: 100.
autobus1 provozniNaklady: 2.
autobus1 pocetMistStani: 50.
autobus1 pocetMistSezeni: 48.
autobus1 maxRychlost: 80.
autobus1 patrovy: 0.
autobus1 prepravaInvalidu: 0.

tramvaj1 := Tramvaj new.
tramvaj1 porizovaciCena: 150.
tramvaj1 provozniNaklady: 1.
tramvaj1 pocetMistStani: 100.
tramvaj1 pocetMistSezeni: 70.
tramvaj1 maxRychlost: 50.
tramvaj1 tlacitkoDveri: 1.

vlak1 := Vlak new.
vlak1 porizovaciCena: 1000.
vlak1 provozniNaklady: 5.
vlak1 pocetMistStani: 100.
vlak1 pocetMistSezeni: 150.
vlak1 maxRychlost: 260.
vlak1 prepravaKol: 1.
vlak1 toaleta: 1.

pasazer1 := Pasazer new.
pasazer1 jmeno: 'Pepa'.
pasazer1 prijmeni: 'Zdepa'.
pasazer1 invalida: 0.
pasazer1 datumNarozeni: '1.3.1980' asDate.

pasazer2 := Pasazer new.
pasazer2 jmeno: 'Milos'.
pasazer2 prijmeni: 'Zeman'.
pasazer2 invalida: 0.
pasazer2 datumNarozeni: '5.11.1955' asDate.

pasazer3 := Pasazer new.
pasazer3 jmeno: 'Mirek'.
pasazer3 prijmeni: 'Topol'.
pasazer3 invalida: 1.
pasazer3 datumNarozeni: '5.5.1951' asDate.

ridic1 := Ridic new.
ridic1 jmeno: 'Franta'.
ridic1 prijmeni: 'Vomacka'.
ridic1 plat: 30000.
ridic1 datumNarozeni: '1.1.1960' asDate.
ridic1 zamestnanOd: '10.12.2000' asDate.
ridic1 odrizenychHodin: 9999.

ridic2 := Ridic new.
ridic2 jmeno: 'Pavel'.
ridic2 prijmeni: 'Prachac'.
ridic2 plat: 60000.
ridic2 datumNarozeni: '1.2.1975' asDate.
ridic2 zamestnanOd: '5.13.2001' asDate.
ridic2 odrizenychHodin: 8888.

ridic3 := Ridic new.
ridic3 jmeno: 'Janek'.
ridic3 prijmeni: 'Kopyto'.
ridic3 plat: 0.
ridic3 datumNarozeni: '1.1.1970' asDate.
ridic3 zamestnanOd: '1.1.2000' asDate.
ridic3 odrizenychHodin: 10000000.

revizor1 := Revizor new.
revizor1 jmeno: 'Ghost'.
revizor1 prijmeni: 'Buster'.
revizor1 datumNarozeni: '5.5.1970' asDate.
revizor1 plat: 35000.
revizor1 zamestnanOd: '11.12.2000' asDate.
revizor1 chycenychPasazeru: 20.

revizor2 := Revizor new.
revizor2 jmeno: 'Jan'.
revizor2 prijmeni: 'Prisny'.
revizor2 datumNarozeni: '5.6.1940' asDate.
revizor2 plat: 50000.
revizor2 zamestnanOd: '1.1.1990' asDate.
revizor2 chycenychPasazeru: 10000.

jizda1 := Jizda new.
jizda1 ridic: ridic1.
jizda1 linka: linka1.
jizda1 dopravniProstredek: autobus1.
jizda1 pridejPasazera: pasazer1.
jizda1 pridejPasazera: pasazer2.

jizda2 := Jizda new.
jizda2 ridic: ridic2.
jizda2 linka: linka2.
jizda2 dopravniProstredek: tramvaj1.
jizda2 pridejPasazera: pasazer3.
jizda2 pridejPasazera: pasazer1.

jizda3 := Jizda new.
jizda3 ridic: ridic3.
jizda3 linka: linka3.
jizda3 dopravniProstredek: vlak1.
jizda3 pridejPasazera: pasazer2.

Jizdy := Set new.
Jizdy add: jizda1; add: jizda2; add: jizda3.

DopravniProstredky := Set new.
DopravniProstredky add: vlak1; add: autobus1; add: tramvaj1.

Diagram


Classes

Bod
instance variables
jmeno :String
poloha :String
methods
initialize
jmeno
jmeno:
poloha
poloha:

Trida Bod.
Reprezentuje jednotlive zastavky a jejich vlastnosti

jmeno
* nazev zastavky
poloha
* poloha zastavky

code of non-accessing methods:

Trasa
instance variables
kam :Object
nazev :String
odkud :Object
presZastavky :Set
methods
initialize
kam
kam:
nazev
nazev:
odkud
odkud:
presZastavky

Trida Trasa.
Reprezentuje trasu, po ktere jezdi spoje, a jeji vlastnosti.

odkud
* z jake zastavky
kam
* do jake zastavky
presZastavky
* pres jake zastavky linka projizdi
* OrderedCollection - zachovava poradi zastavek
nazev
* pro snazsi identifikaci trasy

code of non-accessing methods:

Linka
instance variables
cislo :Number
trasa :Object
methods
cislo
cislo:
initialize
trasa
trasa:

Trida Linka
Reprezentuje linku (spoj) a trasu, ktera je mu urcena.

cislo
* cislo linky
trasa
* trasa, po ktere linka jezdi (ma jet)

code of non-accessing methods:

Jizda
instance variables
dopravniProstredek :Object
linka :Object
pasazeri :Set
ridic :Object
methods
dopravniProstredek
dopravniProstredek:
initialize
linka
linka:
pasazeri
pridejPasazera:
ridic
ridic:

Trida Jizda
Reprezentuje jednotlivou realizovanou jizdu a jeji vlastnosti tj. kdo, cim, koho, odkud, kam.

ridic
* kdo ridil
pasazeri
* kdo cestoval
dopravniProstredek
* jakym dopravnim prostredkem se jelo
linka
* cislo linky a trasa, po ktere se jelo

code of non-accessing methods:

Clovek
instance variables
datumNarozeni :Date
jmeno :String
prijmeni :String
methods
datumNarozeni
datumNarozeni:
initialize
jmeno
jmeno:
prijmeni
prijmeni:

Trida Clovek
Reprezentuje vlastnosti lidi shodne pro Pasazer a Zamestnanec.

jmeno
* jmeno cloveka
prijmeni
* prijmeni cloveka
datumNarozeni
* datum narozeni
* ie. '1.1.1900'

code of non-accessing methods:

DopravniProstredek
instance variables
maxRychlost :Number
pocetMistSezeni :Number
pocetMistStani :Number
porizovaciCena :Number
provozniNaklady :Number
methods
initialize
maxRychlost
maxRychlost:
pocetMistSezeni
pocetMistSezeni:
pocetMistStani
pocetMistStani:
porizovaciCena
porizovaciCena:
provozniNaklady
provozniNaklady:

Trida DopravniProstredek
Reprezentuje zakladni vlastnosti vsech dopravnich prostredeku, ktere jsou vlastneny DP.

pocetMistSezeni
* kolik mist k sezeni je ve vozidle
pocetMistStani
* kolik mist k stani je ve vozidle
maxRychlost
* maximalni rychlost vozidla
porizovaciCena
* porizovaci cena vozidla
provozNaklady
* provozni naklady na jednu cestu

code of non-accessing methods:

Pasazer
instance variables
cisloPrukazky :Number
invalida :Number
zakoupenaJizdenka :Number
methods
cisloPrukazky
cisloPrukazky:
initialize
invalida
invalida:
zakoupenaJizdenka
zakoupenaJizdenka:

Trida Pasazer
Extenze tridy Clovek
Reprezentuje vlastnosti pasazera, ktery je prepravovan DP.

cisloPrukazky
* cislo prukazky
invalida
* je pasazer invalida
zakoupenaJizdenka
* ma pasazer zakoupenou jizdenku
* zakoupenaJizdenka == 0 => False
* zakoupenaJizdenka > 0 => True

code of non-accessing methods:

Zamestnanec
instance variables
plat :Number
propustenDne :Date
zamestnanOd :Date
methods
initialize
plat
plat:
propustenDne
propustenDne:
zamestnanOd
zamestnanOd:

Trida Zamestnanec
Extenze tridy Clovek
Reprezentuje vlastnosti spolecne pro zamestnance DP.

plat
* mesicni plat zamestnance
zamestnanOd
* kdy byla uzavrena pracovni smlouva
propustenDne
* kdy byla pracovni smlouva rozvazana
* propustenDne == NULL => stale zamestnanec
* propustenDne == date => byl propusten

code of non-accessing methods:

Revizor
instance variables
chycenychPasazeru :Number
methods
chycenychPasazeru
chycenychPasazeru:
initialize

Trida Revizor
Extenze tridy Zamestnanec
Reprezentuje vlastnosti revizora dopravniho prostredku.

chycenychPasazeru
* kolik cernych pasazeru revizor chytil

code of non-accessing methods:

Ridic
instance variables
odrizenychHodin :Number
methods
initialize
odrizenychHodin
odrizenychHodin:

Trida Ridic
Extenze tridy Zamestnanec
Reprezentuje vlastnosti ridice dopravniho prostredku.

odrizenychHodin
* kolik hodin ma ridic odjezdeno

code of non-accessing methods:

Vlak
instance variables
prepravaKol :Number
toaleta :Number
methods
initialize
prepravaKol
prepravaKol:
toaleta
toaleta:

Trida Vlak.
Extenze tridy DopravniProstredek.
Reprezentuje vlastnosti vlaku.

toaleta.
* je ve vlaku toaleta.
* toaleta == 0 => False.
* toaleta > 0 => True.
prepravaKol
* podporuje vlak prepravu kol.
* prepravaKol == 0 => False.
* prepravaKol > 0 => True

code of non-accessing methods:

Autobus
instance variables
patrovy :Number
prepravaInvalidu :Number
methods
initialize
patrovy
patrovy:
prepravaInvalidu
prepravaInvalidu:

Trida Autobus.
Extenze tridy DopravniProstredek.
Reprezentuje vlastnosti autobusu.

patrovy
* je autobus patrovy.
* patrovy == 0 => False.
* patrovy > 0 => True.

code of non-accessing methods:

Tramvaj
instance variables
tlacitkoDveri :Number
methods
initialize
tlacitkoDveri
tlacitkoDveri:

Trida Tramvaj.
Extenze tridy DopravniProstredek.
Reprezentuje vlastnosti tramvaje.

tlacitkoDveri
* je vybavena tlacitkem pro ovladani dveri.
* tlacitkoDveri == 0 => False.
* tlacitkoDveri > 0 => True.

code of non-accessing methods:


Links

Data file and class source.

Generated by Daskalos - Object Modeling Tutor (C) 2006 V. Merunka
November 1, 2008