|
|
- ## 3 Luokka, varaston laajentaminen
-
- **Tehtävä:**
-
- Tässä tehtävässä jatkamme toisessa tehtävässä luodun Laatikko-luokan kanssa työskentelyä. Lisää siis Laatikko-luokkaan seuraavat ominaisuudet:
-
- (1) Metodi nollaa, joka tyhjentää jäsenmuuttujan sisus asettamalla sen arvoksi tyhjän merkkijonon, sekä (2) lisää jäsenmuuttuja koko, joka saa alustuksessa arvokseen jäsenmuuttujan sisus pituuden, tai jos sitä ei määritellä, arvon 0. Lopuksi tee vielä (3) metodi suuri?, joka palauttaa arvon true jos koko on suurempi kuin 25 ja false jos pienempi kuin 25.
-
- Tämän jälkeen kopioi seuraava ohjelmakoodi lähdekoodiisi; koodilla kokeillaan luokkamäärittelyn toimintaa:
-
- ```
- Varasto = Laatikko.new()
- Varasto.sisus = "hirviömeikkilaukkutelinetukijalka"
- tulos = Varasto.suuri?
- puts "Kokotestin tulos oli: #{tulos}."
- Varasto.nollaa
- tulos = Varasto.suuri?
- puts "Kokotestin tulos oli: #{tulos}."
- ```
-
- Toimiessaan oikein ohjelma tulostaa seuraavaa:
-
- Example output:
-
- ```
- Kokotestin tulos oli: true.
- Kokotestin tulos oli: false.
- ```
-
- **Vastaus**
-
- ```
- #!/usr/bin/env ruby
- # coding: utf-8
-
- class Laatikko
-
- # alustaja
- def initialize(sisalto=nil, koko=0)
- @sisus = sisalto
- if not @sisus.nil? then @koko = @sisus.length end
- end
-
- # set-metodi
- def sisus=(sisalto)
- @sisus = sisalto
- @koko = @sisus.length
- end
-
- # get-metodi
- def sisus
- @sisus
- end
-
- def nollaa
- @sisus = nil
- @koko = 0
- end
-
- def suuri?
- # Tehtävänannossa on sanottu:
- # "palauttaa arvon true jos koko on suurempi
- # kuin 25 ja false jos pienempi kuin 25."
- #
- # Mitä tämän luokkametodin pitäisi palauttaa,
- # jos arvo on tasan 25?
- # Alla oleva implementaatio ei vastaa
- # tehtävänannon kuvausta kyseisin osin.
- #return @koko > 25 ? true : false
-
- # Tämä vastaa tehtävänannon määrittelyyn,
- # mutta ei ota kantaa, jos @koko == 25
- #
- return true if @koko > 25
- return false if @koko < 25
- end
-
- end
-
- Varasto = Laatikko.new()
- Varasto.sisus = "hirviömeikkilaukkutelinetukijalka"
- tulos = Varasto.suuri?
- puts "Kokotestin tulos oli: #{tulos}."
- Varasto.nollaa
- tulos = Varasto.suuri?
- puts "Kokotestin tulos oli: #{tulos}."
- ```
|