------------------------------------------------------------------------- Ohjelmoinnin perusteet, 13.06.2000 tehtävä 1 / Averell ------------------------------------------------------------------------- 1) Vastaa lyhyesti ja täsmällisesti seuraaviin kysymyksiin (12 pist): o Tyhjiä 1 kpl, keskiarvo 8.7 pistettä. a) Mikä tärkeä ero on int-parametrin ja String-parametrin käsittelyssä? Kun käytetään int-parametria, kopioidaan muodollisen parametrin alkuarvoksi todellisen parametrin arvo. Mutta muodollisen String-parametrin arvoksi kopioidaan vain viite todelliseen parametriin (viite on itseasiassa todellisen parametrin sijaintipaikka). Muodolliseen int-parametriin tehdyt muutokset kohdistuvat aina tuohon muodolliseen parametriin. Kaikki String-oliot ovat aina tyypiltään 'read-only' ja siksi String-parametria muutettaessa syntyy aina uusi String-olio ja muodollinen parametri laitetaan osoittamaan tuohon uuteen arvoon. 1 p: int-arvon välitys 1 p: String-viitteen välitys 1 p: parametrin muutokset Muuta (tätä ei kysytty): ----- Metodin kutsussa esiintyvän todellisen parametrin arvo lasketaan kutsun yhteydessä. Kutsussa voi todellisena parametrina olla muuttuja, lauseke, vakio (ts. mikä tahansa arvo, joka voidaan laskea). Kummassakin tapauksessa todellisen parametri arvo ei koskaan muutu, vaikka muodollista parametria muutettaisiinkin metodin sisällä. Niinpä int- ja String-parametrilla voidaan välittää tietoa vain metodiin päin, ei metodista kutsujalle. b) Mitä tarkoittaa metodin kuormittaminen? Kuormittaminen tarkoittaa sitä, että luokassa on kaksi tai usempia täsmälleen samannimisiä metodeja, jotka eroavat toisistaan nimenomaan parametrien tyypin tai määrän suhteen. Pelkkä paluuarvon erilaisuus ei riitä. 1 p: samannimisiä metodeja 1 p: ero parametrien lukumäärässä 1 p: tai niiden tyypeissä c) Milloin metodin muuttuja syntyy? Milloin se häviää? Metodin muuttujat luodaan, kun metodia kutsutaan, ja vapautetaan, kun metodista palataan kutsuvaan osaan. 1 1/2 p: synty 1 1/2 p: häviäminen Muuta: (tätä ei kysytty) ------ Metodin muuttujia ovat metodin otsikossa esitellyt muodolliset parametrit ja metodin lauselohkossa ja sisemmissä lohkoissa esitellyt paikalliset muuttujat. Parametreilla on kutsussa asetettu alkuarvot, kun taas muille metodin muuttujille on eksplisiittisesti sijoitettava alkuarvo. Metodin lauselohkoissa (siis sulkeiden { } sisällä) esitellyt muuttujat ovat käytettävissä vain, kun ko. lohko tulee suoritettavaksi. Kun suoritus poistuu lohkosta, ei muuttujiin voi enää viitata. d) Mihin public String toString() -metodia käytetään? toString() metodi palauttaa arvonaan merkkijonon (String), joka on muodostettu sopivalla tavalla olion tietorakenteiden arvoista kuvaamaan olion sisäistä tilaa. Kun olionmuuttuja esiintyy sellaisenaan paikassa, johon syntaksin mukaan pitäisi tulla merkkijono, kutsutaan toString()-metodia, joka siis palauttaa olion merkkijonoesityksen. Käytetään yleisesti tulostuslauseessa, jotta saadaan tulostettua 'olion tila': Radio asa = new Radio(); System.out.println(asa); 1 1/2 p: tuottaa merkkijonoesityksen olion tilasta 1 1/2 p: käytöesimerkki