L1 / OLO
Harjoitus 1: Arvosteluohjeet:
Yleistä:
-
Kustakin kohdasta annetaan pisteitä sen mukaan, kuin toimintoja on
oikein toteutettu. Alla annetaan tehtäväkohtaisesti
tarkka pisteytys eri kohdista.
-
Kaikki ohjelmat käännetään ja testataan (pääohjelma
Main*.java on valmis testiohjelma).
-
Jos toiminnon koodi on toteutettu, mutta se toimii osin virheellisesti,
saa pisteitä 0-75% / virheellinen toiminto riippuen siitä, onko
virhe pieni vai iso. Jos jotain toimii oikein, niin annetaan pisteitä.
-
Jos toiminnon koodi on toteutettu oikein, mutta ohjelma ei käänny
jossain muualla olevan kielioppivirheen vuoksi, annetaan kohdasta täydet
pisteet.
-
Jos toiminto on periaatteessa oikein, mutta käännösvirheen
vuoksi ei toimi, esim. puolipiste puuttuu, saa pisteitä 50% / virheellinen
toiminto.
-
Jos toiminto puuttuu, ei tietenkään saa siitä kohdasta pisteitä.
-
Jos 50% ei ole tasapiste, niin pyöristetään ylöspäin.
-
Huonosta ohjelmointityylistä ei sakoteta, mutta huomautetaan palautteessa.
Tehtävä 1.1 (20p)
Kirjoita luokka Thing seuraavien ohjeiden mukaisesti:...
-
Muuttuja name määritelty oikein: 5p
-
Kukin metodi oikein, 5p + 5p + 5p
Tehtävä 1.2 (20p)
Kirjoita Thing-luokkaan uusi metodi setName(String n),
joka asettaa esineelle uuden nimen vanhan nimen tilalle.
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.
-
kumpikin operaatio oikein 5p + 5p
Tehtävä 1.3 (30p)
Kirjoita luokan Thing aliluokka Radio. Voit itse päättää,
mitä muuttujia luokkaan laitat, mutta luokalla on oltava seuraavat
metodit:
Radio: luontimetodi (constructor), jolle annetaan
parametrina olion nimi.
powerOn: laita radio päälle
powerOff: laita radio pois päältä
isOn: jos radio on päällä, palauta
true, muuten false.
getChannel: tämän hetkisen kanavan palauttaminen.
setChannel: aseta radio annetulle kanavalle.
print: tulosta radion tila, eli millä kanavalla
se on, ja onko virta päällä. Muista tulostaa myös esineen
nimi.
Harjoitus 1.4 (50p)
Kirjoita uuteen tiedostoon Person.java luokka Person. Luokkaan kuuluvilla
oliolla on muuttujat
name: henkilön nimi merkkijonona (String)
room: huone, jossa henkilö on
thing: esine, jota henkilö mahdollisesti kantaa tai
null
-
Luokan määrittely 3p
-
Muuttujien määrittelyt 1p + 1p + 1p
Luokalla tulee lisäksi olla seuraavat metodit:
Person: luontimetodi (constructor), jolle annetaan parametrina
henkilön nimi ja huone, jossa henkilö aluksi on
getName: palauttaa henkilön nimen
getRoom: palauttaa huoneen, jossa henkilö on
moveTo: henkilö siirtyy parametrina annettuun huoneeseen
getThing: palauttaa henkilön mahdollisesti kantaman esineen;
mikäli henkilö ei kanna esinettä, palautetaan null
pickUp: henkilö nostaa huoneessa mahdollisesti olevan
esineen kannettavakseen
putDown: henkilö jättää mahdollisesti
kantamansa esineen huoneeseen, mikäli huoneessa ei jo ole esinettä
print: henkilön tietojen tulostaminen
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ä.