Ohjelmointiharjoitus 1

Ohjelmointiharjoituksen tarkoituksena on soveltaa kahden ensimmäisen tapauksen ja 1. esseen yhteydessä opittuja tietoja.

Tämän ohjelmointiharjoituksen maksimipistemäärä on 100, vaikka tehtävien yhteispistemäärä on tätä suurempi. Läpäisyraja on 50 pistettä.

Osatehtävä 1.1 (max 20 pistettä)

Tässä tehtävässä toteutetaan esineitä kuvaava luokka Thing.

  1. Kopioi itsellesi tiedosto Main1.java, joka sisältää pääohjelmaluokan Main1. Huomaa, että luokkatiedoston nimi kirjoitetaan isolla alkukirjaimella.
  2. Kopioi itsellesi tiedosto Thing.java, joka sisältää luokan Thing. Tiedosto sisältää luokan rungon, jota tehtävässä pitää täydentää.
  3. Kirjoita luokka Thing seuraavien ohjeiden mukaisesti:

    Luokkaan kuuluvilla oliolla on muuttuja

    Luokalla on seuraavat metodit:

  4. Käännä tiedostot Main1.java sekä Thing.java. Suorita syntynyt ohjelma. Mitä ohjelma tulostaa?

Osatehtävä 1.2 (max 20 pistettä)

Tässä tehtävässä täydennetään edellistä luokkaa uudella toiminnalla.

  1. Kirjoita Thing-luokkaan uusi metodi setName(String n), joka asettaa esineelle uuden nimen vanhan nimen tilalle.
  2. Täydennä Main1-luokkaa siten, että asetat main-metodin lopussa kirja-esineelle uuden nimen "Java-oppikirja" ja tulostat sen jälkeen kirjan nimen book.print()-metodin avulla.
  3. Käännä tiedostot Main1.java sekä Thing.java. Suorita syntynyt ohjelma. Mitä ohjelma nyt tulostaa?

Osatehtävä 1.3 (max 30 pistettä)

Tässä tehtävässä toteutetaan yksinkertainen radiota kuvaava luokka Radio, joka on luokan Thing aliluokka. Radiolla ei ole muuta toimintoja kuin virran kytkeminen päälle ja pois sekä kuunneltavan kanavan asettaminen.

  1. Kopioi itsellesi tiedosto Main2.java, joka sisältää pääohjelmaluokan Main2 sekä tiedosto Radio.java, joka sisältää luokan Radio rungon.
  2. Kirjoita luokan Thing aliluokka Radio. Voit itse päättää, mitä muuttujia luokkaan laitat, mutta luokalla on oltava seuraavat metodit:
  3. Käännä tiedostot Main2.java sekä Radio.java. Suorita syntynyt ohjelma. Mitä ohjelma tulostaa?

Osatehtävä 1.4 (max 50 pistettä)

Tässä tehtävässä käsitellään yksinkertaistettua peliskenaariota, joka koostuu huoneista, henkilöistä ja esineistä. Tässä skenaariossa kussakin huoneessa voi olla ainoastaan yksi esine ja yksi henkilö. Tehtävässä käytetään valmista huoneita kuvaavaa luokkaa Room sekä edellä tekemääsi luokkaa Thing. Tarkoituksena on toteuttaa luokka Person, joka kuvaa henkilöä. Sinun ei tarvitse muuttaa kumpaakaan luokkaa Room tai Thing. Tarkoituksena on, että käytät niiden valmiita metodeja hyväksi.

  1. Kopioi itsellesi tiedosto Main3.java, joka sisältää pääohjelmaluokan Main3 sekä tiedosto Room.java, joka sisältää huoneluokan Room.
  2. Kirjoita uuteen tiedostoon Person.java luokka Person. Luokkaan kuuluvilla oliolla on muuttujat

    Luokalla tulee lisäksi olla seuraavat metodit:

    Huomaa seuraavat seikat. Ennenkuin henkilö yrittää siirtyä uuteen huoneeseen, tulee tarkistaa, ettei huoneessa ole jo joku. Samoin ennen kuin henkilö yrittää laskea jonkin esineen, on tarkistettava, ettei huoneessa jo ole esinettä. Kun henkilö siirtyy uuteen huoneeseen, on päivitettävä muuttujan room sisältö. Tämän lisäksi on huolehdittava siitä, että huoneiden vastaavia muuttujia person tulee päivitettyä. Vastaavasti kun henkilö nostaa tai jättää esineen, on huoneen muuttujia päivitettävä.

  3. Käännä tiedostot Main3.java sekä Person.java. Suorita syntynyt ohjelma. Mitä ohjelma tulostaa?

Harjoituksen palautus

Harjoitukset palautetaan jar-apuohjelmalla luotuina paketteina. Seuraava Unix-komento luo jar-tiedoston harj1.jar Java-tiedostoista Luokka1.java ja Luokka2.java.

jar cf harj1.jar Luokka1.java Luokka2.java

Jar-tiedoston sisällön voi katsoa komennolla:

jar tf harj1.jar

Valmis jar-paketti, joka sisältää KAIKKI harjoituksessa käytettävät luokat (myös valmiit luokat) lähetetään sähköpostitse liitetiedostona oman ryhmän tutorille. Kaikkien eri osatehtävien luokat palautetaan samassa paketissa, eli lähetä vain yksi viesti.

Palautus on tehtävä viimeistään keskiviikkona 10.10 klo 16.00. Jos palautus myöhästyy, arvosana laskee 10 pistettä / myöhästymispäivä.