Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 582309 Ohjelmointitekniikka (Java)
© 2006 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

Ohjelmointitekniikka (Java): Harjoituksia jaksolle 2, 30.1.-10.2.

(Viimeisin päivitys 26.1.2006)

  1. Vertaile AWT:tä ja Swingiä. Millaisia eroja ja yhtäläisyyksiä niillä on? Millainen historia niillä on? Miksi?

  2. Selvitä seuraavien luokkien keskinäinen suhde ja käyttötarkoitus: java.awt.Component, java.awt.Container, javax.swing.JComponent, javax.swing.JPanel, java.awt.Window, java.awt.Frame ja javax.swing.JFrame.

    1. Tee graafinen sovellus, joka esittelee käyttöliittymäkomponentteja JButton, JLabel, JRadioButton, JSlider, JTextArea ja JTextField, ym. Komponenttien ei tarvitse tehdä mitään, reagoida tapahtumiin, kunhan vain möllöttävät ikkunassa väänneltävinä ja käänneltävinä. Kokeile erilaisia ulkoasuja: Motif, Metal, (Windows).
    2. Täydennä edellisen tehtävän ohjelmaa siten, että käyttöliittymäkomponentit reagoivat kirjoittamalla JTextArea-olioon "ketä kutsuttiin".
    3. Tee edellisen kohdan hengessä jokin yksinkertainen graafinen sovellus - esim. jokin "painoit nappia 7. kerran" -ohjelma. Esittele tällä ohjelmalle erilaisia tapoja liittää tapahtumankäsittelijä käyttöliittymäkomponenttiin: nimetön sisäluokka suoraan , nimetty private-sisäluokka, ...

  3. Tee graafinen sovellus, joka esittelee graafisia hahmoja, kirjasintyyppejä ja värejä. Esittelyn ei tarvitse olla mitenkään dynaaminen, reagoida tapahtumiin. Riittää kun ruudulla näkyy viivoja, käppyröitä, yms. Kannattanee käyttää luokan java.awt.Graphics2D palveluita?

  4. Selvitä seuraavien rajapintaluokkien käyttö: ComponentListener, MouseMotionListener, MouseListener, MouseWheelListener, KeyListener, FocusListener, WindowListener, ... Miten täydentäisit listaa?

  5. Toteuta graafisena sovelluksena lottorivin arvontasovellus: Käyttäjä saa yhdellä napinpainalluksella arvottua seitsemän lukua väliltä 1-39. Ohjelmaa käytetään rivin täyttämisen automatisointiin, ei oikean rivin arvontaan.

    Seuraavat kolme tehtävää saa tehdä hyvin pelkistettyinä ja yksinkertaisina: Oleellisinta näissä tehtävissä on ohjelman arkkitehtuuri - miten näkymä rakennetaan, miten tapahtumiin reagoidaan, ... Monipuolisinakin tehtävät toki saa tehdä, jos intoa, taitoa ja aikaa riittää.

  6. Toteuta graafisena sovelluksena taskulaskin, jossa on ainakin yhteenlasku, vähennyslasku, kertolasku ja jakolasku.

  7. Toteuta graafisena sovelluksena yksinkertainen piirto-ohjelma: hiirellä vedettäessä ("drag") syntyy viivaa. Pelkkä mustan viivan piirtäminen riittää, mutta jos haluat, voit toki toteuttaa myös värin valinnan, viivan paksuuden säätämisen, ...

  8. Toteuta graafisena sovelluksena yksinkertainen tekstieditori. Aivan perustoiminnot - tekstin kirjoittaminen ja poistaminen - riittävät, mutta jos haluat, voit toki toteuttaa monimutkaisempiakin editointioperaatiota, talletuksen tiedostoon, tiedostosta lataamisen, ym.

  9. Tekninen essee: Graafisen sovelluksen ulkoasun (layout) laadintaa Javalla on väitetty hankalaksi. Kirjoita lyhyt (n. 2-3 A4-sivua) tekninen ohje, joka auttaa aloittelevaa ohjelmoijaa selviämään mahdollisimman vaivattomasti pienehkön graafisen sovelluksen ulkoasun ohjelmoinnista. Kuvaile periaatteita, älä API:n yksityiskohtia. Voit olettaa, että lukijalla on API-kuvaus käytössään. Kirjoituksen ajateltu lukija on tietojenkäsittelytieteen aineopintojen alkupuolella oleva opiskelija, jonka ohjelmointikokemus rajoittuu Ohjelmoinnin harjoitustyön melko hyvään suorittamiseen.

  10. Tekninen essee: Graafisessa sovelluksessa tapahtumiin reagoinnin voi toteuttaa monin erilaisin tavoin: keskitetysti, hajautetusti, nimettömiä sisäluokkia käyttäen, nimettyjä private-sisäluokkia käyttäen, ... Kirjoita lyhyt (n. 2-3 A4-sivua) yleinen ohje tapahtumankäsittelyn ohjelmointityyleistä ja tyylien eduista ja haitoista. Älä keskity liikaa syntaksin yksityiskohtiin tai "kaiken luettelemiseen". Kirjoita sen sijaan yleisellä tasolla siitä, millaisia nuo vaihtoehdot ovat. Hyvin valitut esimerkit ovat toki tarpeen. Kirjoituksen ajateltu lukija on tietojenkäsittelytieteen aineopintojen loppupuolella oleva opiskelija, joka on toteuttamassa pienehköä yksittäistä sovellusohjelmaa (so. ohjelma ei ole minkään toisen järjestelmän osa).



[Pääsivulle] Takaisin harjoitusten pääsivulle.