Juna esitetään kahteen suuntaan linkitettynä listana.
Veturi ja vaunut ovat merkkijonoja.
Ohjelmoi luokka Juna, jolla on operaatiot:
- public Juna(String veturi)
luo pelkästä veturista muodostuvan junan
- public void lisääPerään(String vaunu)
lisää vaunu:n junan perään
- public Juna liitä(Juna toinen)
liittää junan perään toisen junan vaunut; liitettävä vaunujono
irroitetaan vanhasta veturista; metodi palauttaa
arvonaan pidennetyn junan; liitettävän junan
veturia ei siis oteta mukaan;
- public Juna irroitaHäntä(int moneskoVaunu, String veturi)
irroittaa this-junasta loppuosan vaunusta numero
moneskoVaunu alkaen omaksi junakseen, jonka veturi annetaan
parametrina; arvonaan metodi palauttaa lopusta irroitetun junan
vetureineen; myös alkuperäinen juna siis muuttuu
- public int monentenako(String vaunu, int mistäEteenpäin)
palauttaa arvonaan junan ensimmäisen vaunu:n
järjestysnumeron, kun etsintä aloitetaan vaunusta, jonka
järjestysnumero annetaan parametrina; vaunut on numeroitu
yhdestä alkaen
- public int pituus()
junan vaunujen lukumäärä
- public String toString()
luo junan merkkijonoesityksen
Määrittele metodien käyttäytyminen myös virhetilanteissa.
Laadi luokkaa Juna käyttäen ratapihan töidensuunnittelijalle
kirjastoluokka Tyokalut, joka sisältää seuraavat välineet:
- laske annetun nimisten vaunujen määrä junassa
(esim. "makuuvaunu")
- poista annetun nimiset vaunut junasta
(esim. "säiliövaunu")
- vaihda junan vaunujen järjestys päinvastaiseksi ("paluumatkaa"
varten... :-)
Huom: Työkalut on toteutettava käyttäen pelkästään yllä
lueteltuja julkisia metodeita.
(7 pistettä)