OHJ-7400 Graafisen käyttöliittymän ohjelmointi 4/6 op Syksy 2008, periodit 1-2 Harjoitustyö Yleistä Harjoitustyö tehdään 2 hengen ryhmissä. Yhden hengen ryhmistä tulee sopia kurssiassistentin kanssa erikseen ja yli 2 hengen ryhmät eivät ole sallittuja. Ryhmän muodostus tapahtuu ilmoittamalla ryhmän tiedot kurssin kotisivuilla olevalla wwwlomakkeella. Lomake löytyy harjoitustyö-sivulta. Ryhmän muodostamiselle ei ole määritelty deadlinea, mutta ilmoittautumisen yhteydessä generoitavaa ryhmänumeroa tarvitaan muun muassa välipalautusajan varaamiseen ja harjoitustöitä palautettaessa. Harjoitustyö koostuu kahdesta osasta: välipalautuksesta, jossa esitellään assistentille käyttöliittymän prototyyppi ja palautetaan luokkakaavio ja itse harjoitustyön toteutusvaiheesta. Tarkemmat vaatimukset välipalautukseen löytyvät tämän dokumentin kohdasta Välipalautus. Harjoitustyössä tulee noudattaa MVC-mallin mukaista rakennetta ja ohjelman käytettävyyteen tulee kiinnittää erityistä huomiota. Ennen työn suunnittelua kannattaa kerrata kurssin IHTE-2100 (OHJ-7200) Käyttöliittymäsuunnittelun perusteet asiat. Sovelluksen kohderyhmä Ohjelman kohderyhmä hallitsee tietokoneen peruskäytön, kuten toimistosovellukset ja www-sivujen selailun, mutta ei ole IT-alan ammattilainen. Kohderyhmän jäsenet myös harrastavat tietokonepelejä vapaa-ajallaan, mutta eivät omaa mitään mielenkiintoa ohjelmointiin tai tietokoneen virittelyyn. Kuvaus Nykyään useisiin tietokonepeleihin on saatavina erilaisia editoreita, joilla voi muokata pelin sisältöä. Harjoitustyön tehtävänä on toteuttaa ohjelma, jolla voi suunnitella taisteluajoneuvoja kuvitteelliseen tietokonepeliin. Ajoneuvossa on sen rungosta riippuen yksi tai useampia kerroksia, joihin voidaan liittää komponentteja ja piirtää seiniä. Ajoneuvon luonti Käyttäjä aloittaa uuden ajoneuvoprojektin valitsemalla haluamansa runkotyypin. Runkotyypit ja niiden ominaisuudet on lueteltu taulukossa 1.
Taulukko 1 runkotyypit ja niiden ominaisuudet Tyyppi Kerroksia Kantokyky Erillinen pääase Kevyt 1 1000 Ei Keskiraskas 2 1500 Kyllä Raskas 2 3000 Kyllä Kerroksien lisäksi jokaiseen ajoneuvoon kuuluu katto, jolle voidaan myös sijoittaa komponentteja. Ajoneuvojen muut mitat on esitetty seuraavissa kuvissa. Harmaa väri tarkoittaa kattoa ja valkoinen ajoneuvon sisätilaa. Kuva 1 kevyen ajoneuvon kerrokset
Kuva 2 keskiraskaan ajoneuvon kerrokset Kuva 3 raskaan ajoneuvon kerrokset Huomaa, että mitat eivät ole suoraan pikseleitä, koska kun ohjelman suunnitteluikkunaa venytettäessä ajoneuvografiikka skaalautuu sen mukana. Harjoitustyössä oikaistaan fysiikan lakeja jonkin verran, eikä esim. komponenttien sijoittelu kerroksessa vaikuta ajoneuvon kantokykyyn.
Ajoneuvojen sisälle voi piirtää sisäseiniä vapaasti. Harjoitustyössä riittää, että ohjelmalla voi luoda suorakulmion muotoisia pohjaratkaisuja, mutta monimutkaisemmatkin toteutukset toki sallitaan. Ajoneuvojen ulkoseinien muotoon ei voi vaikuttaa (paitsi lisäämällä niihin kiinni komponentteja kuten panssaria tai konekivääripesäkkeitä). Ajoneuvon sivuilla (ja alla) olevien telojen päälle samaan kerrokseen ei voida sijoittaa panssaria (se tosin voi olla seinän sisäpuolella vastaavalla kohtaa). Kaikkien komponenttien paikkaa voi muuttaa hiirellä raahaamalla. Sisäseiniä ei kuitenkaan voi siirtää ajoneuvon ulkoseinien ulkopuolelle. Komponentit kuuluvat aina johonkin kerrokseen, eikä niitä voi siirtää kerroksesta toiseen. Ohjelman on toteutettava komponenteille ainakin seuraavat ominaisuudet: Komponentin lisääminen Komponentin poistaminen Paikan muuttaminen hiirellä raahaamalla o Esim. seinän sijaintia kerroksen sisällä voi muuttaa o Esim. konekivääripesäkkeen sijaintia seinällä voi muuttaa Ominaisuuden määrittäminen (esim. seinän paksuuden muuttaminen) Copy-Paste Cut-Paste
Kuva 4 Ajoneuvoprojekti, jossa aktiivisena muokkaamista varten ajoneuvon kerros 0. Ajoneuvojen kerroksien sisällön muokkaus Kerroksiin on mahdollista lisätä ja poistaa komponentteja. Komponentit on kuvattu alla ja niiden mitat selviävät kuvista. Komponentit harjoitustyöryhmä voi pääosin valita itse, mutta vähintään seuraavia on tuettava: Seinä - sisäseinän pituutta ja paksuutta voidaan muuttaa - sijoittuu kerrokseen tai katolle - paino: 0 - hinta: ilmainen (0) Lisäpanssari - kiinnittyy seinään, sisä- tai ulkopuolelle - paino: 100
- hinta: 30 Konekivääripesäke - kiinnittyy seinään, ulkoseinään kiinnittyessä piippu osoittaa ajoneuvon ulkopuolelle. - paino: 80 - hinta: 100 Korjausyksikkö - sijoittuu kerrokseen, ei voi asentaa katolle. - paino: 100 - hinta: 60 Tutka-asema - sijoittuu kerrokseen tai katolle - paino: 20 - hinta: 200 Kulkuaukko - sijoittuu kerrokseen tai katolle. Ei voida sijoittaa, jollei suoraan alla olevassa kerroksessa ole myös tyhjää tilaa tällä kohdalla. Aukon mitat ovat vastaavat myös siinä. Kulkuaukon halkaisijaa voidaan muuttaa, mutta sen muoto on aina ympyrä. - paino: 0 - hinta: ilmainen (0)
Jokaisella komponentilla on nimi, jota voidaan muuttaa. Lisäksi seinien ja kulkuaukon kokoa voidaan muuttaa. Jokaisella komponentilla on paino ja hinta. Kaikkien ajoneuvossa olevien komponenttien painot lasketaan yhteen ja yhteispaino ei saa ylittää rungon kantokykyä. Jos kantokyky on ylittymässä, ei seuraavaa komponenttia voi lisätä ja ohjelma ilmoittaa tästä virheilmoituksella. Ohjelmasta näkee myös ajoneuvon kaikkien komponenttien kokonaishinnan. Komponenttien paikkoja voi muuttaa hiirellä raahaamalla. Komponentteja ei kuitenkaan voi siirtää seinän tai toistensa päälle tai kokonaan pohjan ulkopuolelle. Mikäli näin yritetään tehdä, komponentti siirtyy lähimpään vapaaseen paikkaan tai takaisin alkuperäiselle paikalle josta siirto aloitettiin. Seinään kiinnittyvän komponentin (konekivääripesäke tai lisäpanssari) raahautuessa riittävän lähellä seinää kiinnittyy se seinään. Ajoneuvojen pääaseeseen tai teloihin ei voi kiinnittää tai niiden päälle siirtää mitään komponentteja. Ajoneuvoprojektien tallentaminen Ajoneuvoprojektit tulee voida tallentaa (Save). Ohjelman tulee myös pystyä lataamaan niitä (Open). Harjoitustyön palautuksen yhteydessä ryhmä palauttaa 3 ohjelmallaan tehtyä ajoneuvoa, jotka ohjelma kykenee lataamaan. Näistä projekteista jokaisessa on useita komponentteja ja niissä on käytetty vähintään kahta runkotyyppiä. Muut ominaisuudet Edellä mainittujen toimintojen lisäksi ohjelmaan tulee toteuttaa seuraavat ominaisuudet: Undo-Redo toiminto joka muistaa vähintään 10 edellistä muutosta. Suunnittelualueen skaalautuvuus o Ajoneuvon suunnittelualue skaalautuu ikkunan kokoa muutettaessa siten, että se hyödyntää ikkunan piirtoalueen mahdollisimman tehokkaasti hyväkseen. Ohjelma sisältää Help (Ohje) valikon, jonka viimeisenä alkiona on toiminto nimeltä About (Tietoja). Toiminto aukaisee modaalisen dialogin, joka näyttää ryhmän numeron sekä ryhmään kuuluvien jäsenten nimet, opiskelijanumerot ja sähköpostiosoitteet.
Seuraavassa taulukossa on vielä listattu vaaditut ominaisuudet: Yleiset ominaisuudet Uusi Ajoneuvo Käyttäjä voi luoda uuden ajoneuvoprojektin. Projektin tallentaminen ja lataaminen Käyttäjä voi tallentaa ja ladata projektin levyltä. Undo-Redo Toiminto joka muistaa vähintään 10 edellistä muutosta. Copy-Paste Toiminto, jolla voi nopeasti kopioida komponentteja ensin aktivoimalla eli valitsemalla se hiirellä ja valitsemalla (copy), sen jälkeen liittämällä (paste) se toiseen paikkaan. Cut-Paste Kuin yllä, mutta komponentti poistuu alkuperäiseltä paikalta. Pohjan skaalautuvuus Pohja skaalautuu ikkunan kokoa muutettaessa siten, että se hyödyntää ikkunan piirtoalueen mahdollisimman tehokkaasti hyväkseen. Komponenttien ominaisuudet Komponentin lisääminen ja poistaminen kerroksesta Komponentin yleiset ominaisuudet: nimen muokkaaminen, komponentin liikuttaminen hiirellä raahaamalla. Sisäseinät Muut toiminnot Help-valikko, jossa toiminto About. Toiminto aukaisee modaalisen dialogin, joka näyttää harjoitusryhmän tiedot. Pätevät kaikkiin ajoneuvoon lisättäviin komponentteihin: sisäseinä, konekivääripesäke, korjausyksikkö yms.. Käyttäjä voi lisätä sisäseiniä vaaka- tai pystytasoon. Välipalautus Harjoitustyön ensimmäisessä vaiheessa ohjelmoidaan käyttöliittymän prototyyppi ja tehdään ohjelman luokkakaavio. Välipalautukseen on varattu aikaa 15 minuuttia ryhmää kohti, joten huolehtikaa, että ohjelmanne on käyttövalmiina, aikanne alkaessa. Prototyypistä tulee näkyä valikoiden sisällöt, ohjelman layoutit (suunnittelualueen koko ja valittavien työkalujen paikat) ja siinä tulee voida avata kaikki ohjelman dialogit. Välipalautustilaisuudessa esitellään assistentille ohjelman prototyyppi, palautetaan ohjelman luokkakaavio ja selostetaan suullisesti minkälainen ohjelman arkkitehtuuri tulee olemaan. Välipalautus on pakollinen ja se arvostellaan asteikolla hyväksytty hylätty. Luokkakaavio palautetaan välipalautuksessa. Välipalautukset pidetään viikolla 40: 29.9 3.10.2008.
Toteutus.NET Harjoitustyö toteutetaan.net-ympäristöön C#-kielellä. Ympäristö Visual Studio 2005.NET framework versio 2.0 Arvostelu.NET-harjoitustyö arvostellaan asteikolla 0-5. 0 tarkoittaa hylättyä työtä, jolloin ryhmälle annetaan mahdollisuus korjata harjoitustyössä havaitut puutteet ja saada siten työ hyväksytyksi arvosanalla 1. Arvostelussa kiinnitetään huomiota muun muassa seuraaviin seikkoihin: Ohjelma toteuttaa tehtävänannon vaatimukset Ohjelman virheetön toiminta Ohjelman rakenne Ohjelman käytettävyys Välipalautusvaiheessa palautettu luokkakaavio Koodin luettavuus (kommentointi jne.) Palautus Deadline: 9.11.2008 klo 23.59 Harjoitustyön lähdekoodit palautetaan zip-tiedostoon pakattuna osoitteeseen juha.vanhatupa@tut.fi tai teemu.heinimaki@tut.fi riippuen välipalautuksenne pitäneestä assistentista. Paketin nimeksi annetaan ryhmän numero (esim. 4.zip). Paketin koko tulisi olla < 100 KB (poista kääntäjän mahdollisesti generoimat objekti- ja debugtiedostot). Sähköpostin otsikkoon kirjoitetaan Palautus: Ryhmä NRO (net), jossa NRO tarkoittaa ryhmän numeroa. Toteutus Java / QT (vain 6 op versio) Harjoitustyö toteutetaan Java-ympäristöön Swing-kirjastoa käyttäen tai käyttäen QTkäyttöliittymäkirjastoa. Tämä vaihe on tarkoitettu vain 6op versiota suorittaville. Tähän toiseen vaiheeseen ei sisälly enää erillistä välipalautustilaisuutta. Ympäristö Java 2 Platform standard edition (J2SE) 6.0 tai QT 4.4. Arvostelu Myös toinen harjoitustyö arvostellaan asteikolla 0-5, jossa 0 tarkoittaa hylättyä työtä. Tästä harjoitustyöstä ei bumerangeja jaeta. Hylätty työ tarkoittaa, että ryhmä suorittaa kurssin 4op:n laajuisena.
Palautus Deadline: 23.11.2008 klo 23.59 Harjoitustyön lähdekoodit palautetaan zip-tiedostoon pakattuna osoitteeseen juha.vanhatupa@tut.fi tai teemu.heinimaki@tut.fi riippuen välipalautuksenne pitäneestä assistentista.. Paketin nimeksi annetaan ryhmän numero (esim. 4.zip). Paketin koko tulisi olla < 100 KB (poista kääntäjän mahdollisesti generoimat objekti- ja debugtiedostot). Sähköpostin otsikkoon kirjoitetaan Palautus: Ryhmä NRO (java), jossa NRO tarkoittaa ryhmän numeroa. Kopiointi ja lähdemateriaalin käyttö Harjoitustyöstä saa keskustella muiden ryhmien jäsenten kanssa vain periaatteellisella tasolla. Yhdenkin harjoitustyörivin luovuttaminen toisen ryhmän jäsenelle on ehdottomasti kielletty. Kirjallisuuden ja verkosta löytyvän materiaalin tutkiminen on sallittua ja suositeltavaa, mutta näidenkään tapauksessa kopiointi ei ole sallittua