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.