Tärkein asia tässä harjoitustyössä on käyttöliittymän komponenttien käyttö. Erityisesti omien komponenttien tuottaminen ja jakaminen muiden käyttöön. Algoritmiset seikat eivät ole niin suurella painolla.
Harjoitustyön aihe pitää keksiä itse. Se voi olla esimerkiksi jonkin aikaisemmin tehdyn ohjelman käyttöliittymän muuttaminen graafiseksi (vaikkapa Ohjelmointikurssin harjoitustyö, tosin tämä on ehkä työlästä), jokin peli tai mikä tahansa mieleenjuolahtava (tarpeellinen) aihe.
Aihe voi olla myös malliohjelman
http://www.mit.jyu.fi/~vesal/vlwinapp/matka02/
puutteellisten/tekemättömien ominaisuuksien toteuttaminen/parantaminen.
Aiheen virikkeeksi voi käydä katsomassa vanhoja harjoitustöitä hakemistosta: N:\KURSSIT\WINOHJ\HTYOT.
Harjoitustyössä pitää olla tyypilliset Windows- ominaisuudet:
Lisäksi mielellään osa seuraavista (jos aihe vain suo mahdollisuuden):
Eli laivanupotuspeli, joka on aina 10x10 ruudussa on huono aihe, mutta jos käyttäjä voi itse valita pelilaudan koon jostakin dialogista ja menusta, niin aihe onkin jo parempi.
Jokaisen harjoitustyössä pitää valmistua vähintään yksi yleiskäyttöinen komponentti (arpakuutio, pelikortti, korttipakka, pelilauta tms...), joka luovutetaan kaikkien kurssilaisten käyttöön dokumentoituna.
Kurssille perustetaan postilista: gko02k@korppi.jyu.fi, jossa on aluksi tarkoitus ilmoittaa mitä komponentteja oma harjoitustyö tulee sisältämään. Sitten kaikki ne, jolla on tarvetta moiseen komponenttiin, tekevät yhdessä mailina vaativuusmäärittelyn ko. Komponentille (esim. pitääkö arpakuutiossa olla 6 sivua, vaiko mielivaltainen määrä, pitääkö kuution kuvat olla käyttäjän valittavissa jne...).
Komponentit laitetaan WWW-sivuille sitten vapaasti levitettäväksi ja tarkoitus on että kurssilaiset käyttäisivät mahdollisuuksien mukaan myös muiden tekemiä komponentteja.
Komponentit tehdään mieluiten Delphillä (koska silloin niitä voi käyttää myös C++ Builderissä ).
Harjoitustyöksi palautetaan dokumentoitu ohjelmalistaus. Osa dokumentointia on ongelman jakaminen selkeiksi ja hyvin nimetyiksi aliohjelmiksi. Samoin osa dokumentointia on epämääräisten vakioiden siirtäminen koodista tiedoston alussa oleviin vakiolausekkeisiin.
Ohjelma on tehtävä siten, että vaikka siinä käytetään osoittimia, ei niillä osoiteta oman alueen ylitse (esim. c: strcpy jne. on käytettävä erittäin harkitusti). Samoin vaikka ohjelma "toimisikin", saattaa se varata resursseja joita se ei vapauta ja näin ohjelman käynnistäminen useaan kertaan johtaa koko Windowsin tukkeutumiseen. Eli kaikki mitä varataan, pitää myös vapauttaa.
Keskeneräiset ja valmiit harjoitustyöt ovat nähtävillä WWW:ssä myöhemmin esitettävällä tavalla. Tekijänoikeus on ilman muuta silti tekijällä ja hän voi muotoilla lähdekoodiinsa haluamansa tekijänoikeudet (esim. GPL).
Pääsääntöisesti jokainen tekee harjoitustyönsä Delphillä tai Kylixillä (äärimmäisessä hätätilassa joko C++ Builderillä tai Javalla).
Viestin käsittelynä voidaan käytetään Borlandin VCL :ää tai CLX:ää. Mieluiten niin, että ifdef-lauseilla mahdollistetaan kumpi tahansa käännös.
Ohjelma pitää kääntämään ainakin 32-bittistä Windowsia varten. Samoin ohjelman käännöksessä EI SAA tulla yhtään virhettä eikä varoitusta.
Kurssilla jaetaan varsin suuri määrä aliohjelmia ja komponentteja eri tilanteiden käsittelyyn. Näitä saa vapaasta jokainen käyttää hyväkseen.
Toisaalta omaan harjoitustyöhön saattaa tulla hienoja ominaisuuksia, jotka hieman modifioimalla kelpaisivat muillekin. Kaikki nämä pitää kirjoittaa omaksi komponenttikokoelmakseen ja dokumentoida siten, että muutkin voivat niitä käyttää. Hyvät komponentit liitetään sitten kurssin julkiseen aliohjelmahakemistoon.
Jokainen tekee ohjelmastaan myös rinnakkaisen "pikkuversion" (vain muutamia ominaisuuksia tai pelkkä runko) kaikilla otsikossa mainituilla työvälineillä. Visual Basic sta voi ostaa itseopiskelupaketin ja luennolla sitä käsitellään tunnin verran myöhemmin syksyllä. Jos itse työ on tehty Delphillä, silloin Delphi-versiota ei tietysti tarvitse tehdä uudestaan.
Tavoitteena on että jokainen ainakin pienessä määrin tutustuu yleisimpiin työkaluihin ja erityisesti niiden tapahtuman käsittelyyn. Näiden pikaversioiden toteuttamiseen on tarkoitus käyttää esim. Javalla max 1-2 h (ulkoasu oikean oloinen, kaikista napeista tulee "Ei toimi"-dialogi, About-dialogi toimii, ohjelmasta pääsee pois). Nämä "lisäversiot" kannattaa tehdä heti kun asia on pääteohjauksissa ja luennoilla käsitelty.
Koska erityinen toivomus opiskelusta työelämään siirtyneiltä on se, että pitäisi opettaa myös suunnittelua ja aikataulussa pysymistä, niin jokainen laatii omasta harjoitustyöstään SIISTIN HTML aikataulun, johon on kirjoitettu vähintään.
Muuten aikataulun muoto saa olla vapaa ja siinä jokainen voi yrittää käyttää graafista silmäänsä parhaansa mukaan. Fonttikoon ei kuitenkaan tarvitse olla normaalia suurempaa, eikä fonttien kovin eksoottisia. Kuitenkin Courier- fontin käyttö (muualla kuin ohjelma listauksissa) osoittaa ettei ymmärrä tekstinkäsittelystä yhtään mitään.
Näitä aikatauluja luetaan kuten tarjouksia, eli tarjouksen pitää olla mahdollisemmin houkutteleva, jotta asiakas "ostaa" nimenomaan tämän tuotteen lukuisten vastaavien joukosta!
Aikataulu tallennetaan samaan paikkaan kuin kurssin harjoitustyökin nimelle tarjous.html. Kaikki tarjouksessa olevat kuvat yms. laitetaan samaan alihakemistorakenteeseen ja viitteen lisukkeisiin pitää olla suhteellisia. Nimi tarjous.html ja kaikki sen vaatimat lisätiedostot lisätään files.txt-tiedostoon.
Aikataulun voi olla suunniteltu jokaisen omiin tarpeisiin ja opintoihin sopivaksi, ja siinä pysyminen sekä harjoitustyö arvostellaan osana kurssia -3 - +2 pistettä. Liian löysä ja epätäsmällinen aikataulu sinänsä on jo negatiivinen ilman erittäin hyviä perusteita.
Harjoitustyön aihe on oltava paikallaan viimeistään torstaina 3.10.
Heti kun postilista on saatu valmiiksi, ilmoittaa jokainen postilistalle aiheensa ja alustavan luettelon siitä, mitä komponentteja hänen työnsä tulee sisältämään. Tämän pohjalta kurssilaiset voivat sitten ruveta tarkentamaan komponenttimäärityksiä postilistan välityksellä. Samasta komponentista voi lopulta olla useitakin kilpailevia toteutuksia, kunhan komponenttien rajapinta saadaan sovittua samaksi.
Harjoitustyö säilytetään Webissä. Tästä on erillinen ohje:
http://www.mit.jyu.fi/~vesal/kurssit/winohj02/htnaytto.html
Välivaiheiden näytöissä ollaan mielellään henkilökohtaisesti paikalla selittämässä.
On aivan ilmeistä, että tämän kurssin harjoitustyössä tulee erinäisiä ongelmia, joita ratkoessaan vain hakkaa päätään seinään ja meinaa vielä viivästyä aikataulusta. Kohtuullisen ongelma ratkaisuyrityksen jälkeen voi ilman muuta kääntyä aina ohjaajan puoleen, on sitä itsekin oltu vaikeuksissa (ja tullaan olemaan).
Aluksi kysyn joka tapauksessa, että onko tilannetta tutkittu debuggerilla, joten tämä kannattaa tehdä jo etukäteen. Samoin ongelma kannattaa yrittää paimentaa hyvin pienelle alalle. Näin voimme vähän nopeuttaa ongelman käsittelyä.
Jotta jokaisella voidaan taata kohtuullinen aika työn käsittelyyn, on parasta varata etukäteen aika. Viikoittainen varauslista on Korpissa kohdassa Ohjausajat ( https://korppi.it.jyu.fi/kotka/calendar/bookableTimes.jsp?coursecode=53&supervisor=4) (Paikka Agora C434.2). Muistakaa perua aika jos ette jostain syystä käytäkään sitä.
Pikakysymykset voi tehdä ilman ajanvarausta tai jopa jos saa käytävällä hihasta kiinni.