• Ei tuloksia

TL5302 Olio-ohjelmointi (2 ov) Koe 19.4.2005 HYV3SN

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "TL5302 Olio-ohjelmointi (2 ov) Koe 19.4.2005 HYV3SN"

Copied!
4
0
0

Kokoteksti

(1)

TL5302 Olio-ohjelmointi (2 ov) Koe 19.4.2005

HYV3SN

Nimi:_________________________________

Luokka:_______________________________

Kokeen maksimipistemäärä on 20. Tehtävistä 1 ja 3 voi saada 4 p / tehtävä ja tehtävistä 2 ja 4 voi saada 6 p / tehtävä. Läpimenoon riittää varmasti 7 pistettä.

1. Oheisessa koodissa on esitetty aliohjelma vaihda. Täydennä tehtäväpaperiin:

a. Mitä aliohjelma tekee ? (1p) Vastauksesi:

b. Lisää ohjelmaan aliohjelman prototyyppi. (1p) c. Lisää pääohjelmaan vaihda-aliohjelman kutsu. (1p)

d. Tee pääohjelmaan tarvittavat lisäykset, joiden avulla voit testata, toimiiko aliohjelma oikein. (1p)

#include <iostream>

using namespace std;

int main() {

int a=1,b=2;

}

void vaihda(int *x, int *y) {

int temp=*x;

*x=*y;

*y=temp;

}

(2)

Vastaa seuraaviin tehtäviin erilliselle vastauspaperille. Elä panikoi.

2. Toteuta sylinteri-luokka, joka sisältää attribuutteina sylinterin korkeuden ja pohjan säteen.

a. Lisää luokkaan oletusmuodostin, joka alustaa korkeuden ja säteen nolliksi (1p)

b. Lisää luokkaan parametrillinen muodostin, jonka avulla tietojäsenet voidaan alustaa olion luonnin yhteydessä haluttuihin arvoihin. (1p) c. Lisää luokkaan metodi, joka laskee sylinterin tilavuuden. (1p) d. Lisää luokkaan metodi, joka tulostaa sylinterin korkeuden ja pohjan

säteen. (1p)

e. Lisää luokkan metodi, jonka avulla jo olemassaolevan olion korkeus ja pohjan säde kysytään käyttäjältä. (1p)

f. Tee pääohjelma, jonka avulla voit testata luokkasi toimintaa. (1p) Sylinterin tilavuus lasketaan kaavalla

h r V2

3. Tehtävänäsi on laatia ohjelma, joka laskee eri muotoisten kappaleiden tilavuuksia.

Ohjelman tulee pystyä käsittelemään ainakin muodot ”sylinteri”, ”särmiö” ja

”ellipsoidi”. Lisäksi ”särmiön” erikoistapaus on ”kuutio” ja ”ellipsoidin”

erikoistapaus on ”pallo”.

a. Suunnittele ohjelmalle olio-ohjelmoinnin periaatteiden mukainen

luokkahierarkia. Voit piirtää käsitteiden välisistä yhteyksistä myös kuvan.

(2p)

b. Kirjoita luokkien määrittelyt C++-kielellä käyttäen palveluliittymän periytymistä eli public-periytymistä. Toteutuksessa ei tarvitse mennä yksityiskohtiin. (2p)

4. Tarkastellaan oheista kompleksilukuja käsittelevää luokkaa nimeltään complex.

a) Lisää luokkaan ylikuormatut operaattorit – ja *, jotka laskevat kahden kompleksiluvun erotuksen ja tulon. (1p / operaattori)

b) Lisää luokkaan ylikuormatut vertailuoperaattorit > ja <, joiden avulla vertaillaan kahden kompleksiluvun itseisarvojen suuruutta. (1p / operaattori) c) Tee pääohjelma, jonka avulla voit testata kirjottamiesi operaattorien toimintaa (2p).

Alla olevaa ohjelmakoodia ei tarvitse kopioida vastauspaperiin, mutta vastauksestasi on käytävä ilmi, mihin kohtaan koodia lisäämäsi ohjelmarivit tulevat.

Kompleksiluvun z=a+jb itseisarvo lasketaan kaavalla

2

2 b

a

z = +

(3)

Neliöjuuri löytyy C++-standardikirjastosta <cmath> ja sen prototyyppi on

double sqrt(double);

#include <iostream>

using namespace std;

class complex {

private:

double re,im;

public:

complex operator+(complex &);

bool operator==(complex &);

friend ostream &operator<<(ostream &,const complex &);

complex();

complex(const double &,const double &);

};

complex::complex() {

re=0;

im=0;

}

ostream &operator << (ostream &os, const complex &p) {

os << p.re << "+j" << p.im << endl;

return os;

}

bool complex::operator == (complex &p) {

if ((this->re == p.re) && (this->im == p.im)) return 1;

else

return 0;

}

complex::complex(const double &r,const double &i) {

re=r;

im=i;

}

complex complex::operator +(complex &x) {

complex tulos;

tulos.re=this->re+x.re;

tulos.im=this->im+x.im;

return tulos;

}

(4)

Viittaukset

LIITTYVÄT TIEDOSTOT

Tämä järjestelmävaatimus voidaan mallintaa ”laiskan numeron” avulla: tehdään oma numero-olio, joka huolehtii syötteen pyytämisestä tarvittaessa. Javassa olion

javac -Xlint MunKoodi.java javac -Xlint MunKoodi.java java -enableassertions MunKoodi java -enableassertions MunKoodi.

Lisää luokkaan parametrillinen muodostin, jonka avulla olio voidaan alustaa luonnin yhteydessä haluttuun päivämäärään, esimerkiksif. Date tomorrow(20,4,2005);

jolle syötetään kaksi kokonaislukua, ja joka palauttaa toden, jos luvut ovat samat, ja epätoden, jos ne eivät ole samoja.. Tee myös pääohjelma, jonka avulla voit testata

Tee ohjelma, joka sisältää laatikko-luokan. Luokan tietojäseninä ovat laatikon syvyys, leveys ja korkeus. Toteuta luokkaan muodostin, jonka avulla olio voidaan alustaa. Toteuta

Luo johdettu luokka: Talo, joka perii rakennuksen ja ylläpitää tietoja makuuhuoneiden ja kylpyhuoneiden lukumääristä.. Luo johdettu luokka: Toimisto, joka perii rakennuksen

Mutta toimenpi- teet voitaisiin myös nykyistä systemaattisemmin toteuttaa ihan tietoisesti niin, että jälkikäteisar- viointi on mahdollista.. Jos osallistujat valitaan

Siitä saadut tulokset olivat huomattavasti parempia kuin tämän tutkimuksen perusteella, sillä heidän tuloksissa A- luokkaan sijoittui 50 %, B-luokkaan 34 % ja hy-