Tietojenkäsittelytiede                          Harjoitustehtäviä
Olio-ohjelmointi				16-20.10.2000



11.	Tehtävässä 7 laadittiin Java:lla luokka Laskuri, joka kuvaa
	muuttujaa, jota voidaan kasvattaa ja vähentää yhdellä.

	Muuta luokka C++:lle ja lisää sille seuraavat aliluokat:

	- NippuLaskuri, jonka arvoa voidaan muuttaa muullakin kuin
	  ykkösellä

	- RajoitettuLaskuri, joka ei salli laskurin kasvaa yli
	  annetun rajan

	Laadi lisäksi näiden yhteinen aliluokka

	- RajoitettuNippuLaskuri, jonka arvoa voidaan muuttaa
	  muullakin kuin ykkösellä mutta joka ei salli laskurin
	  kasvaa yli annetun rajan

	Laadi myös luokkasi testaava ohjelma.

	Testaa ohjelmasi ja tuo se sekä levykkeellä että paperi-
	listauksena harjoitustilaisuuteen.



12.	Laadi C++:lla luokka Vali, joka kuvaa kokonaisluvuista muo-
   	dostuvan, tasa-askelisen välin (esimerkiksi "väli kymmenestä
   	kahden välein sataan", johon kuuluu siis luvut 10, 12, 14,
   	..., 98, 100). Luokalla on oltava ainakin seuraavat operaa-
   	tiot:

        a) Konstruktori, jolla parametreina ensimmäinen arvo, askel ja
           viimeinen arvo
        b) Konstruktori, jolla parametreina ensimmäinen arvo ja
           viimeinen arvo ja joka olettaa askeleeksi luvun 1 tai -1

        c) Operaatio, jolla saadaan selville kuuluko parametrina
           annettava luku väliin
        d) Operaatio, jolla saadaan selville välin alkioiden
           lukumäärä
        e) Operaatio, jolla saadaan selville onko väli tyhjä

        f) Operaatio, jolla saadaan selville välin ensimmäinen alkio
        g) Operaatio, jolla saadaan selville välin seuraava alkio
        h) Operaatio, jolla saadaan selville oliko kahden edellisen
           operaation (f tai g) kutsulla saatu arvo kunnollinen vai
           loppuivatko alkiot jo

	i) Operaatio, jolla on parametrina yksiparametrinen funktio
	   ja joka soveltaa tätä funktiota välin kaikkiin alkioihin
	   yksi kerrallaan (esim: kutsulla vali.sovella(tulosta);
	   tulostuu välin vali kaikki luvut, kun funktio tulosta on:
	   
	   void tulosta(int i) { printf("%d\n",i); }


	Laadi myös luokkasi testaava ohjelma.

	Testaa ohjelmasi ja tuo se sekä levykkeellä että paperi-
	listauksena harjoitustilaisuuteen.