Käyttöliittymistä

Omaa projektiani suunnitellessani ajattelin painottaa työnteon määrää enemmän logiikkapuoleen ja peliälyyn kuin graafiseen käyttölittymään. ”Pääasia että se nyt jotenkin näkyy siellä” oli fiilikseni ennen koodausurakan aloittamista. Kun sitten josakin vaiheessa projektia pääsin siihen vaiheeseen, että ”se nyt tosiaan näkyi siellä jotenkin”, niin ymmärsin miten oleellinen se käyttöliittymä sitten kuitenkin on. Seuraavassa muutama tehtävänantoon pohjautuva pohdinta, jotka pohjautuvat projektinaikaisiin ”Siperia opettaa”-metodilla tapahtuneisiin opintoihini.

Melestäni käyttöliittymät kannattaa pitää mahdollisimman pitkälle erillään ohjelman toimintalogiikasta. näin tehdessä koodi tulee ensinnäkin paljon selkeämmäksi ja sitä pystyy tulkitsemaan paremmin, kun eri osa-alueet ovat eri luokissa. Myös koodiin tehtävät muutokset ovat järjettömän työläitä, jos käyttöliittymä ja logiikka syleilevät toisiaan: Jos haluaa muuttaa toista, niin täytyy oletettavasti tehdä täysi remontti myös toiseen.

Tietenkään aivan irralla toisistaan ei näitä kahta puolta voi pitää. Puhutaanhan nyt kuitenkin yhdestä ohjelmasta, jonka eri osien täytyy kommunikoida keskenään. Nämä sidoksetkin kanattaa kuitenkin suunnitella hyvin ja rakentaa järkevästi. Oman kokemukseni perusteella voisin suositella tapaa, jossa kommunikointi tapahtuu yhden luokan luokan toimiessa ns. välittäjänä. Eli logiikasta ei kutsuta suoraan sitä käyttöliittymän luokkaa, johon halutaan saada yhteys, vaan mennään tämän välittäjä-luokan kautta. Mielestäni näin on helpompi selvittää, mitä käyttöliittymään päivitetään ja missä, kun kaikki liikenne tapahtuu samoja väyliä pitkin.

Myös muutenkin suunnittelu on erittäin oleellista graafisia käyttöliittymiä luodessa. Ensinnäkin ihan visuaaliselta kannalta on parempi miettiä ja piirtää kunnolla, minkä näköiseksi käyttöliittymän haluaa. Sen jälkeen on myös syytä pohtia, miten kyseisen ulkonäön toteuttaisi: millä asettelijalla ja miten? Minkälaisia säiliöitä ja muita komponentteja kannattaa käyttää? Miten aikoo piirtää kuvat ja tekstit? Onko joku kohta suhteettoman vaikea toteuttaa ja toimisiko tuo kohta myös jonkin muun näköisenä? Pahin virhe tässä kohtaa olisi vain alkaa heitellä komponentteja GridBagLayouttiin (itsehän en siis ollenkaan tehnyt näin) ja ihmetellä miksi mikään ei näytä tyylikkäältä.

On myös hyvä suunnitella etukäteen kuuntelijoden käyttö. Kannattaa miettiä, mihin kohtaan ohjelmassa tarvitaan interaktiota ja miten näihin kohtiin olisi järkevintä sijoittaa kuuntelija-olioita. Tärkeätä on myös kiinnittää huomiota, miten interaktio käyttäjän ja koneen välillä toimisi mahdollisimman simppelisti ja nopeasti. Omaa projektiani testaillessa huomasin, että jokaisen napinpainalluksen jälkeen koko pelikentän uudelleenpiirtäminen hidastaa pelin kulkua hieman. Eli on syytä miettiä myös tietokoneen resursseja.

Tehtävänannossa pyydettiin ottamaan kantaa myös  mahdollisiin vaihtoehtoisiin tapoihin hoitaa interaktio. Suoraan sanottuna minulle tulee mieleen ainoastaan keino, jossa jokaiselle tapahtumalle määritellään oma funktio. Se hankaloittaisi toimintaa, koska silloin tähän tapahtuman metodiin pitäisi määritellä tarkasti, erot, kun tapahtuma kohdistuu ohjelman eri osiin. Esimerkiksi hiiren klikkaus mudostuisi huomattavasti hankalammaksi, jos ohjelmassa on eri paikoissa eri toiminnot hiiren klikaukselle. Toisaalta joissakin yksinkertaisissa ohjelmissa, joissa eri tapahtumista aiheutuu vain yhdenlaisia toimintoja tämänkaltainen interaktio voisi olla yksinkertaisempi ratkaisu.

 -Ville

0 Responses to “Käyttöliittymistä”



  1. Jätä kommentti

Vastaa

Please log in using one of these methods to post your comment:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s





%d bloggers like this: