OHJ-7400 Graafisen käyttöliittymän ohjelmointi 4/6 op Syksy 2007, 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 kotisivulla 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älipalautuksessa palautettavasta käyttöliittymäsuunnittelu-dokumentista ja luokkakaaviosta 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 kenttäeditoreita. Harjoitustyön tehtävänä on toteuttaa ohjelma, jolla voi suunnitella kenttiä kuvitteelliseen tietokonepeliin. Kentät koostuvat useista kerroksista ja niihin voi sijoittaa erilaisia huonekaluja, ikkunoita, ovia ja hirviöitä. Kentän luonti Käyttäjä aloittaa sovelluksen käytön määrittämällä ensimmäiselle kerrokselle leveyden ja pituuden, joiden perusteella kerrokselle luodaan rajat (uloimmat seinät). Harjoitustyössä riittää, että ohjelmalla voi luoda suorakulmion muotoisia pohjaratkaisuja, mutta monimutkaisemmatkin toteutukset toki sallitaan. Luonnin jälkeen kenttään kuuluu yksi kerros. Käyttäjä voi myöhemmin lisätä, poistaa ja muokata kentän kerroksia. Jokaisella kerroksella on oma leveys ja korkeus. Kuvassa 1 näkyy kenttä, jossa kolme kerrosta. Kentän kerros 1 on auki muokkaamista varten.
Kerroksiin voi vapaasti muodostaa huoneita lisäämällä sisäseiniä tarvittava määrä. Harjoitustyössä riittää, että kerroksiin pystyy luomaan suoria seiniä (nurkat 90 astetta). Vinojen seinien toteuttaminen on vapaaehtoista. Kerroksien seiniin voi myös lisätä ikkunoita ja ovia. Seinien, sekä ikkunoiden ja ovien paikkaa voi muuttaa hiirellä raahaamalla. Sisäseiniä ei kuitenkaan voi siirtää ulkoseinien ulkopuolelle. Ovet ja ikkunat voivat olla sekä ulkoseinällä, että sisäseinällä. Seinään kiinnitetyt ovet siirtyvät automaattisesti seinän paikkaa muutettaessa. Objektit kuuluvat aina johonkin kerrokseen, eikä niitä voi siirtää kerroksesta toiseen. Ohjelman on toteutettava seinälle, ikkunalle, ovelle ja hirviöille ainakin seuraavat ominaisuudet: Objektin lisääminen Objektin poistaminen Paikan muuttaminen hiirellä raahaamalla o Esim. Seinän sijaintia pohjan sisällä voi muuttaa o Esim Oven sijaintia seinällä voi muuttaa Leveyden määrittäminen (koon muuttaminen) Kuva 1. Kenttä, jossa kolme kerrosta, aktiivisena muokkaamista varten kerros 1.
Kerroksien sisällön muokkaus Kerroksiin on mahdollista lisätä ja poistaa huonekaluja ja hirviöitä. Ohjelman tukemat kalusteet ja hirviöt harjoitustyöryhmä voi pääosin valita itse, mutta vähintään seuraavia on tuettava: - Suorakulmion muotoinen huonekalu. - Ympyrän / Ellipsin muotoinen huonekalu. - Örkki, hirviö, kerroksessa näkyy neliön muotoisena kuvana. Kaikille huonekaluille ja hirviöille pitää pystyä määrittämään ainakin seuraavat ominaisuudet: Leveys Korkeus Nimi Väri Lisäksi hirviöille tulee voida määrittää: Suunta. Hirviöiden rintamasuunta on jokin pääilmansuunnista. Hirviötä pitää pystyä kääntelemään näihin neljään suuntaan. Käytettävä bmp-kuva. Hirviö kerroksessa näkyy tänä kuvana. Huonekalujen ja hirviöiden paikkoja voi muuttaa hiirellä raahaamalla. Huonekalua tai hirviötä ei kuitenkaan voi siirtää seinän tai toistensa päälle tai pohjan ulkopuolelle. Mikäli näin yritetään tehdä, huonekalu/hirviö siirtyy lähimpään vapaaseen paikkaan tai takaisin alkuperäiselle paikalle josta siirto aloitettiin. Kenttien tallentaminen Kentät tallennetaan XML muodossa (Save). Ohjelman tulee myös pystyä lataamaan XML muotoisia kenttiä (Open). XML:n formaatti on ryhmän päätettävissä, mutta harjoitustyön palautuksen yhteydessä. ryhmä palauttaa 3 ohjelmallaan tehtyä XML muotoista kenttää, jotka ohjelma kykenee lataamaan. Näistä kentistä jokaisessa on useita kerroksia ja niissä on huonekaluja ja hirviöitä. Muut ominaisuudet Edellä mainittujen toimintojen lisäksi ohjelmaan tulee toteuttaa seuraavat ominaisuudet: Undo-Redo toiminto joka muistaa vähintään 10 edellistä muutosta. Pohjan skaalautuvuus o Pohja skaalautuu ikkunan kokoa muutettaessa siten, että se hyödyntää ikkunan piirtoalueen mahdollisimman tehokkaasti hyväkseen. Ohjelma sisältää Help (ohje) valikon ja valikon viimeisenä alkiona 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 kenttä Käyttäjä voi luoda uuden kentän. Lisää kerros Käyttäjä voi lisätä uuden kerroksen kenttään. Poista Kerros Käyttäjä voi poistaa haluamansa kerroksen. Projektin tallentaminen ja lataaminen Käyttäjä voi tallentaa ja ladata projektin levyltä (XML muodossa). Undo-Redo Toiminto joka muistaa vähintään 10 edellistä muutosta. Pohjan skaalautuvuus Pohja skaalautuu ikkunan kokoa muutettaessa siten, että se hyödyntää ikkunan piirtoalueen mahdollisimman tehokkaasti hyväkseen. Objektien ominaisuudet Objektien lisääminen ja poistaminen kerroksesta Objektien yleiset ominaisuudet: nimen ja leveyden muokkaaminen, objektin liikuttaminen hiirellä raahaamalla. Sisäseinät Ovet Ikkuna Huonekalu Hirviö Muut toiminnot Help-valikko, jossa toiminto About. Toiminto aukausee modaalisen dialogin, joka näyttää harjoitusryhmän tiedot. Pätevät kaikkiin kerrokseen lisättäviin objekteihin: ikkuna, ovi, sisäseinä, huonekalu, hirviö. Käyttäjä voi lisätä sisäseiniä vaaka- tai pystytasoon. Käyttäjä voi luoda ovia sisäseiniin ja ulkoseiniin. Oven aukeamissuuntaa voi vaihtaa. Käyttäjä voi luoda ikkunoita sisäseiniin ja ulkoseiniin. Käyttäjä voi luoda kerroksiin huonekaluja (suorakulmio, ellipsi) Käyttäjä voi luoda kerroksiin hirviöitä. Hirviöitä voi käännellä neljään pääilman suuntaan. Välipalautus Harjoitustyön ensimmäisessä vaiheessa tehdään käyttöliittymäsuunnitteludokumentti ja ohjelman luokkakaavio. Dokumentti sisältää näyttökartan ja kuvat käyttöliittymäikkunoista (käsin piirretty kelpaa, jos kuvat ovat selkeitä). Ikkunoista kerrotaan mitä komponentteja ne sisältävät ja minkälaiset siirtymät näyttöjen välillä ovat mahdollisia. Dokumentti sisältää myös listan ohjelman toiminnoista. Kustakin toiminnosta kerrotaan
miten toiminto suoritetaan, mitä syötteitä ja tulosteita toiminto aiheuttaa ja miten käyttöliittymä reagoi toimintoon. Kunkin toiminnon kohdalla kerrotaan myös mitä mahdollisia virhetilanteita toiminnolla on ja määritetään virheilmoitusten tarkka sisältö ja ohjelman toiminta virhetilanteen jälkeen. Dokumentissa suositellaan käytettäväksi dokumenttipohjaa dokumenttipohja.txt Välipalautusdokumentista ei anneta erillistä arvosanaa, mutta ne vaikuttavat varsinaiseen harjoitustyöstä annettavaan arvosanaan. Käyttöliittymäsuunnitelman lisäksi palautetaan ohjelman luokkakaavio, ja välipalautus tilaisuudessa ryhmä selostaa suullisesti minkälainen ohjelman arkkitehtuuri tulee olemaan. Välipalautus on pakollinen ja se arvostellaan asteikolla hyväksytty hylätty. Välipalautukset pidetään tenttiviikon jälkeisellä viikolla. Dokumentin ja luokkakaavion deadline on 3.10.2007 klo 23.59. Palautetaan huoneeseen TF115. 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 dokumentti Koodin luettavuus (kommentointi jne.) Palautus Deadline: 11.11.2007 klo 23.59 Harjoitustyön lähdekoodit palautetaan zip-tiedostoon pakattuna osoitteeseen juha.vanhatupa@tut.fi. Paketin nimeksi annetaan ryhmän numero (esim. 4.zip). Paketin koko tulisi olla < 100KB (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 (vain 6op version) Harjoitustyö toteutetaan Java-ympäristöön Swing-kirjastoa käyttäen. Tämä vaihe on tarkoitettu vain 6op versiota suorittaville. Java toteutuksessa tallentamista ei tarvitse suorittaa XML-muotoon, eikä XML tiedostoja tarvitse lukea vaan tallentamisen voi tehdä sarjallistamisen avulla. Eikä näin ollen valmiita kenttiä tarvitse palauttaa. Ympäristö Java 2 Platform standard edition (J2SE) 5.0 Arvostelu Myös Java-harjoitustyö arvostellaan asteikolla 0-5, jossa 0 tarkoittaa hylättyä työtä. Javatyöstä ei bumerangeja jaeta. Hylätty työ tarkoittaa, että ryhmä suorittaa kurssin 4op:n laajuisena. Palautus Deadline: 2.12.2007 klo 23.59 Harjoitustyön lähdekoodit palautetaan zip-tiedostoon pakattuna osoitteeseen juha.vanhatupa@tut.fi. Paketin nimeksi annetaan ryhmän numero (esim. 4.zip). Paketin koko tulisi olla < 100KB (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