Demo 4 - 18.4.
Mallivastaus - Opiskelijoiden vastauksia
4. demoissa keskitytään uudelleenkäyttötekniikoihin ja
tilakaavioihin.
Demojen tulee olla palautettuna verkossa viimeistään 24.4. klo
12.00. Demot palautetaan NettiDemoWWW:llä. Muista
merkitä NettiDemoWWW:n molempien tehtävien kohdalle pistemäärä (ja
tarvittaessa kommentteja). Pisteet voi jakaa useammalle tiedostolle
tai useita tehtäväkohtia voi yhdistää samaan tiedostoon
(suositeltavat formaatit: teksti, html, kuvaformaatit,
pdf).
1. Käsitteitä
1a). Tutustu seuraavaan kohdealuekuvaukseen:
Komppanianpäälliköllä on alaisina upseereita, joilla on alaisena
joukkueenjohtajina toimivia upseerikokelaita. Upseerikokelailla on
alaisina ryhmänjohtajina toimivina alikersantteja, joiden alaisina
on sotamiehiä. Kokelaat, alikersantit ja sotamiehet ovat
varusmiehiä, muut kuuluvat kantahenkilökuntaan. Ylennyksiä varten
kaikkien sotilashenkilöiden palvelusaikaa seurataan (ilmoitetaan
päivissä).
Suunnittele luokkarakenne (kuvaus luokkakaaviona, assosiaatioiden toteutukseen ei tarvitse ottaa kantaa), joka mahdollistaa käskytyksen komppanianpäälliköstä alkaen niin, että eri tasoilla olevat johtajat välittävät käskyt alaisilleen (jotka välittävät käskyn edelleen tai suorittavat, jos ovat sotamiehiä (=miehistöä)). Lisäksi millä tahansa tasolla olevan johtajan tulee pystyä luettelemaan kaikkien (suorien ja epäsuorien) alaistensa nimet. (2p)
Vihje: Composite-suunnittelumalli.
1b). UML:ssä sekä tila- että aktiviteettikaaviossa perusmallinnuselementtejä kutsutaan tiloiksi (state). Mikä merkitysero tilakaavion tilalla on aktiviteettikaavion tilaan (aktiviteettiin) verrattuna? (1p)
2. Kirjastojärjestelmä
2a). Muodosta "Hae aineistoa"-yhteistoimintakaavion ja kohdealuemallin pohjalta suunnitteluvaiheen luokkakaavio, jossa attribuutit, metodit ja assosiaatioiden toteutustapa on kuvattu tarkasti. Voit käyttää pohjana malliharjoitustyön StarUML-projektia (sekä kohdealuemallin että lainaus/palautus-käyttötapauksiin liittyvän suunnitteluvaiheen luokkakaavion osalta). (2p)2b). Muodosta "Hae aineistoa"-yhteistoimintakaavion ja suunnitteluvaiheen luokkakaavion pohjalta sekvenssikaavio, joka kuvaa käyttötapauksen toteutusta. Assosiaatioiden toteutuksen tulee näkyä metodikutsuissa. (2p)
3. Rahaliikenteen seurantajärjestelmä
Jatketaan aiemmissa demoissa kuvatun rahaliikenteen
seurantajärjestelmän yksityiskohtaista suunnittelua.3a). Suunnittele RaportinLuonti-luokalle tilakaavio (käytä apunasi ainakin luokkakaaviota, käyttötapauksia, CRC-kortteja ja muita suunnitteluvaiheen kuvauksia). (2p)
3b). Suunnittele seurantajärjestelmälle fyysinen arkkitehtuuri (laitteet ja yhteydet, joissa järjestelmä toimii). Esitä sijoituskaaviona, jonka solmuissa myös komponentit (tai komponenttien määrittämät artefaktit) on merkitty. Komponenttien pohjana voi olla 3. demojen looginen arkkitehtuuri ja 3. osapuolen tai toteutusympäristön komponentteja (tutki/mieti, millaisia komponentteja voitaisiin tarvita). (3p)
4. Bonus
4a). Yleistä 1a-tehtävän luokkakaavio tilanteeseen, jossa kantahenkilökunnan (komppanianpäälliköt ja upseerit) palvelusaikaa lasketaan vuosissa, kun taas varusmiehet (kokelaat, alikersantit ja ryhmänjohtajat) laskevat TJ (tänään jäljellä) -indeksiä, joka vähenee päivittäin yhdellä. Kun TJ on 0, varusmies kotiutetaan. (1p)4b). Tutustu jonkin oliokielen (esim. Java, C++, C#, Python) standardikirjaston keskeisimpiin kokoelmaluokkiin ja niiden käyttöön. Listaa tärkeimmät luokat (luokkakaaviolla perintähierarkiaa havainnollistaen), ja kuvaa tiiviisti tietorakenteiden perusteita ja tärkeimpiä toimintoja (joko luokkien omia metodeja tai muita apuluokkia, joita suunniteltu tietorakenteiden käsittelyyn). Muista mainita käyttämäsi lähteet. (3p)
Materiaalia esim.
- Python: http://docs.python.org/tutorial/datastructures.htmll
- Java: http://java.sun.com/docs/books/tutorial/collections/, http://www.holub.com/goodies/java.collections.html
- C#: http://msdn.microsoft.com/en-us/library/ybcx56wz(VS.80).aspx
- C++: http://www.cplusplus.com/reference/stl/, http://www.cppreference.com/wiki/stl/start
