Olio-ohjelmointi 2. välikoe HYV5SN

Samankaltaiset tiedostot
Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

12 Mallit (Templates)

Olio-ohjelmointi Syntaksikokoelma

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

13 Operaattoreiden ylimäärittelyjä

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

Ohjelmointi 2 / 2010 Välikoe / 26.3

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Kääntäjän virheilmoituksia

Ohjelmointi 1 Taulukot ja merkkijonot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Operaattoreiden uudelleenmäärittely

ITKP102 Ohjelmointi 1 (6 op)

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Luokan sisällä on lista

Olio-ohjelmointi Javalla

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Muuttujien roolit Kiintoarvo cin >> r;

Periytyminen (inheritance)

Mikä yhteyssuhde on?

Metodien tekeminen Javalla

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmoinnin perusteet Y Python

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys

Ohjelmoinnin perusteet, kurssikoe

1 Tehtävän kuvaus ja analysointi

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

ITKP102 Ohjelmointi 1 (6 op)

Luokat. Luokat ja olio-ohjelmointi

Ohjelmoinnin perusteet Y Python

C++11 lambdat: [](){} Matti Rintala

Virtuaalifunktiot ja polymorfismi

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2

Java-kielen perusteita

Luokan operaatiot. Osoittimet ja viittaukset luokan olioihin

Periytyminen. Luokat ja olio-ohjelmointi

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Listarakenne (ArrayList-luokka)

Ohjelmointi 1 C#, kevät 2013,

Ohjelmoinnin perusteet Y Python

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmointi 2, välikoe

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op)

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Standardi mallikirjasto

C# olio-ohjelmointi perusopas

Javan perusteita. Janne Käki

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Olio-ohjelmointi Geneerisyys. 1. Johdanto

Osoitin ja viittaus C++:ssa

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointi 2 / 2011 Välikoe / 25.3

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

public static void main (String [] args)

9. Periytyminen Javassa 9.1

Luokan muodostimet (Constructors)

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelman virheet ja poikkeusten käsittely

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

YHTEYSSUHDE (assosiation)

21. oppitunti. Esikäsittelijä. Osa. Esikäsittelijä ja kääntäjä

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

7. Näytölle tulostaminen 7.1

Luokkamallit Luokkamallin määritteleminen

Osa. Erikoisaiheet. Oppitunnit 20 Erikoisluokat ja -funktiot 21 Esikäsittelijä

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Java-kielen perusteet

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

1. Omat operaatiot 1.1

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

Ohjelmointiharjoituksia Arduino-ympäristössä

Interaktiivinen tarinankerronta

Rajapinta (interface)

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Osa VII. Mitä mallit ovat ja kuinka niitä käytetään Miksi mallit tarjoavat paremman vaihtoehdon makroille Kuinka luokkamalleja luodaan

14. oppitunti. Operaattorin ylikuormitus. Osa. Operaattorin ylikuormittaminen

17. Javan omat luokat 17.1

9. Periytyminen Javassa 9.1

Transkriptio:

Olio-ohjelmointi 2. välikoe 27.4.2007 HYV5SN 1. 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 myös metodi, joka tulostaa laatikon tilavuuden. class laatikko double syvyys,leveys,korkeus; laatikko(double s,double l,double k) syvyys=s; leveys=l; korkeus=k; double tilavuus() return syvyys*leveys*korkeus; ; laatikko olio(2,3,4); cout << olio.tilavuus(); system("pause"); 2. Tee ohjelma, joka kysyy käyttäjältä 5 lukua STL:n vektoriin ja tulostaa ne käyttäen iteraattoria. //Kertaustehtävä 1 #include <vector>

vector <int> luvut; vector <int>::iterator it; int i,luku; for (i=0;i<5;i++) cout << "Luku?" << endl; cin >> luku; luvut.push_back(luku); for (it=luvut.begin();it!=luvut.end();it++) cout << *it << endl; system("pause"); 3. Luo yleinen luokka: Rakennus, joka ylläpitää tietoa rakennuksen kerrosten ja huoneiden lukumäärästä sekä kokonaispinta-alasta. a. Luo johdettu luokka: Talo, joka perii rakennuksen ja ylläpitää tietoja makuuhuoneiden ja kylpyhuoneiden lukumääristä. b. Luo johdettu luokka: Toimisto, joka perii rakennuksen ja ylläpitää tietoja varauloskäytävien ja puhelimien lukumääristä. Tee pääohjelma, jossa kokeilet luokkiesi toimivuutta. class Rakennus int kerrosten_lkm; int huoneiden_lkm; double pinta_ala; Rakennus(int k,int h,double a) kerrosten_lkm=k; huoneiden_lkm=h; pinta_ala=a; Rakennus() kerrosten_lkm=0; huoneiden_lkm=0; pinta_ala=0; void tulosta() cout << "Kerrosten lukumäärä " << kerrosten_lkm << endl; cout << "Huoneiden lukumäärä " << huoneiden_lkm << endl;

; cout << "Pinta-ala " << pinta_ala << endl; class Talo : public Rakennus int makuuhuoneiden_lkm; int kylpyhuoneiden_lkm; Talo(int m,int k) makuuhuoneiden_lkm=m; kylpyhuoneiden_lkm=k; void tulosta() cout << "Makuuhuoneiden lukumäärä " << makuuhuoneiden_lkm << endl; cout << "Kylpyhuoneiden lukumäärä " << kylpyhuoneiden_lkm << endl; ; class Toimisto : public Rakennus int varauloskaytavien_lkm; int puhelimien_lkm; Toimisto(int v,int p) varauloskaytavien_lkm=v; puhelimien_lkm=p; void tulosta() cout << "Varauloskäytävien lukumäärä " << varauloskaytavien_lkm << endl; cout << "Puhelimien lukumäärä " << puhelimien_lkm << endl; ; Rakennus rakennus_olio(3,18,6000); Talo talo_olio(3,2); Toimisto toimisto_olio(1,20); rakennus_olio.tulosta(); talo_olio.tulosta(); toimisto_olio.tulosta(); system("pause"); return 0;

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 z = a + Neliöjuuri löytyy C++-standardikirjastosta <cmath> ja sen prototyyppi on double sqrt(double); b 2 complex complex::operator + (const complex &z) complex foo; foo.real=this->real+z.real; foo.imag=this->imag+z.imag; return foo; complex complex::operator * (const complex &z) complex foo; double itseisarvo,kulma; itseisarvo=this->abs()*z.abs(); kulma=this->angle()+z.angle(); foo.real=itseisarvo*cos(kulma); foo.imag=itseisarvo*sin(kulma); return foo; bool complex::operator > (const complex &z) if (this->abs() > z.abs()) return true; else return false;

bool complex::operator < (const complex &z) if (this->abs() < z.abs()) return true; else return false; complex z1(-1.),z2(3.3,2.2); complex z3(0),z4(1,1); cout << (z1 > z2) << endl; cout << (z2 < z3) << endl; z1=z2+z3; z2=z1*z4; cout << z1 << z2 << z3 << z4 << endl; cout << "Anna z1 ja z2" << endl; cin >> z1 >> z2; cout << z1*z2 << endl; return 0; class complex double re,im; 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;