812336A C++ -kielen perusteet, 21.8.2010



Samankaltaiset tiedostot
RINNAKKAINEN OHJELMOINTI A,

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Encapsulation. Imperative programming abstraction via subprograms Modular programming data abstraction. TTY Ohjelmistotekniikka

The CCR Model and Production Correspondence

Capacity Utilization

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

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

Mikä yhteyssuhde on?

Network to Get Work. Tehtäviä opiskelijoille Assignments for students.

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Javan perusteita. Janne Käki

Alternative DEA Models

12 Mallit (Templates)

C++11 seminaari, kevät Johannes Koskinen

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

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

Tietorakenteet ja algoritmit

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

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

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

make and make and make ThinkMath 2017

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

Ohjelmoinnin jatkokurssi, kurssikoe

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

16. Allocation Models

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

1 Tehtävän kuvaus ja analysointi

Ohjelmointi 1 C#, kevät 2013,

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Salasanan vaihto uuteen / How to change password

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Periytyminen (inheritance)

Olio-ohjelmointi Javalla

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

2. Olio-ohjelmoinista lyhyesti 2.1

Gap-filling methods for CH 4 data

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

Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)

Rajapinta (interface)

Metodien tekeminen Javalla

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

public static void main (String [] args)

SIMULINK S-funktiot. SIMULINK S-funktiot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Luokan muodostimet (Constructors)

815338A Ohjelmointikielten periaatteet

Teknillinen tiedekunta, matematiikan jaos Numeeriset menetelmät

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

Other approaches to restrict multipliers

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

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

Lyhyt kertaus osoittimista

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

VAASAN YLIOPISTO Humanististen tieteiden kandidaatin tutkinto / Filosofian maisterin tutkinto

AYYE 9/ HOUSING POLICY

4. Olio-ohjelmoinista lyhyesti 4.1

Returns to Scale Chapters

Uusia kokeellisia töitä opiskelijoiden tutkimustaitojen kehittämiseen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Java kahdessa tunnissa. Jyry Suvilehto

Choose Finland-Helsinki Valitse Finland-Helsinki

Results on the new polydrug use questions in the Finnish TDI data

Efficiency change over time

Luokan sisällä on lista

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Information on preparing Presentation

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

YLIVIESKAN KIRKON JA SEN YMPÄRISTÖN ARKKITEHTUURIKILPAILU

Counting quantities 1-3

Osa III. Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat:

Statistical design. Tuomas Selander

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

ITKP102 Ohjelmointi 1 (6 op)

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Osa III. Olioiden luominen vapaalle muistialueelle

1. Olio-ohjelmointi 1.1

YHTEYSSUHDE (assosiation)

15. Ohjelmoinnin tekniikkaa 15.1

Java UI-komponentit (JTable) Juha Järvensivu 2007

TIE Ohjelmistojen suunnittelu

Fraktaalit. Fractals. Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto. 1 / 8 R. Kangaslampi Fraktaalit

anna minun kertoa let me tell you

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

C# olio-ohjelmointi perusopas

The Viking Battle - Part Version: Finnish

Exercise 1. (session: )

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

XNA grafiikka laajennus opas. Paavo Räisänen. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

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

Sisällysluettelo Table of contents

Transkriptio:

812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys (overriding)? c) Mikä on oletusmuodostin (oletuskonstruktori)? d) Mikä on kopiomuodostin (kopiokonstruktori)? e) Mitä tarkoittaa monimuotoisuus (polymorfismi)? f) Mainitse jokin ongelmatilanne, joka voi aiheutua moniperinnän käytöstä. 2. Laadi Asunto- luokka, jolla on attribuutteina asunnon pinta-ala neliömetreinä (int; private) ja hinta euroina (double; private). Luokkaan tulee toteuttaa attribuuttien asettamiseen tarvittavat metodit ja niiden arvot palauttavat metodit. Lisäksi on toteutettava muodostin (konstruktori), jonka parametreina ovat asunnon pinta-ala ja hinta. Edelleen tuhoaja (destruktori) ja kopiomuodostin sekä asunnon neliöhinnan palauttava julkinen metodi on kirjoitettava. 3. Oletetaan, että luokka A perii luokan B. Mitkä seuraavista väittämistä ovat oikeita ja mitkä vääriä? (3p) a) Kun luokan A olio luodaan, kutsutaan ensin luokan A konstruktoria ja tämän jälkeen luokan B konstruktoria. b) Kun luokan A olio luodaan, kutsutaan ensin luokan B konstruktoria ja tämän jälkeen luokan A konstruktoria. c) Kun luokan A olio luodaan, kutsutaan luokan A konstruktoria. Luokan B konstruktoria ei kutsuta. d) Kun luokan A olio tuhotaan, kutsutaan ensin luokan A destruktoria ja tämän jälkeen luokan B destruktoria. e) Kun luokan A olio tuhotaan, kutsutaan ensin luokan B destruktoria ja tämän jälkeen luokan A destruktoria. f) Kun luokan A olio tuhotaan, kutsutaan luokan A destruktoria. Luokan B destruktoria ei kutsuta. Kirjoita ohjelma, jonka tulostuksesta voidaan päätellä väitteiden todenmukaisuus. Kuvaa myös, miten ohjelman tulostus ilmaisee ko. asian. (3p) Jatkuu toisella puolella -> 4. a) Mitä tarkoitetaan geneerisellä ohjelmoinnilla? Kirjoita geneerinen funktio vaihda, jonka avulla voi vaihtaa minkä tahansa kahden perustietotyypin muuttujan

arvot keskenään. (3p) b) Mitä seuraava ohjelma tulostaa? Perustele vastauksesi! (3p) class BaseClass{ std::cout << "Announcement from class BaseClass\n"; ; class SubClass: public BaseClass{ std::cout << "Announcement from class SubClass\n"; ; void printannouncement(baseclass bcobj){ bcobj.announce(); void printannouncementref(baseclass &bcobref){ bcobref.announce(); SubClass sc; printannouncement(sc); printannouncementref(sc); Jatkuu toisella ppaperilla ->

5. a) Mikä on funktio-olio? (2p) b) Kuvaa tarkasti seuraavan ohjelman toiminta (4p): #include <vector> typedef std::vector<double> dubvec; typedef dubvec::iterator dubveciter; class Op{ private: double res; int n; Op() : res(0),n(0) { ; void operator()(double elem) { res += elem; n++; double getvalue(){ return (res/n); double findvalue(dubveciter from, dubveciter to){ Op o; dubveciter iter; for(iter=from; iter!=to;iter++){ o(*iter); return o.getvalue(); dubvec numbers; numbers.push_back(2.1); numbers.push_back(3.2); numbers.push_back(4.0); std::cout << findvalue(numbers.begin(),numbers.end()) << std::endl; Tentin tulokset julkistetaan viimeistään 15.9.2010.

812336A Basics of C++ programming language (C++ -kielen perusteet), 21.8.2010 1. Answer briefly following questions (1p each): a) What does overloading a function mean? b) What does overriding a member function mean? c) What is a default constructor? d) What is a copy constructor? e) What does polymorphism mean? f) Mention a problem that can occur, when using multiple inheritance. 2. Write an Apartment class, having as its attributes the apartment s area in square meters (int; private) and its price (double; private). You should implement methods to get and set the attributes in the class. Moreover, write a constructor with the apartment s area and price as its parameters. Furthermore, copy constructor, destructor and a public method to return the price per square meter should be written. 3. Assume that class A inherits class B. Which of the following claims are right and which are wrong? (3p) a) When an object of class A is created, the constructor of class A is first called and then the constructor of class B is called. b) When an object of class A is created, the constructor of class B is first called and then the constructor of class A is called. c) When an object of class A is created, the constructor of class A is called. The constructor of class B is not called. d) When an object of class A is destroyed, the destructor of class A is first called and then the destructor of class B is called. e) When an object of class A is destroyed, the destructor of class B is first called and then the destructor of class A is called. f) When an object of class A is destroyed, the destructor of class A is called. The destructor of class B is not called. Write a program, from whose output one can verify, which claims are correct. Also explain how the output indicates this. (3p) Continued on the other side ->

4. a) What does generic programming mean? Write a generic function swap that exchanges values of two variables. The variables can be any basic data type. (3p) b) What is the output of the following program? Justify your answer! (3p) class BaseClass{ std::cout << "Announcement from class BaseClass\n"; ; class SubClass: public BaseClass{ std::cout << "Announcement from class SubClass\n"; ; void printannouncement(baseclass bcobj){ bcobj.announce(); void printannouncementref(baseclass &bcobref){ bcobref.announce(); SubClass sc; printannouncement(sc); printannouncementref(sc); Continued on the other paper ->

5. a) What is a function object? (2p) b) Describe in detail the operation of the following program (4p): #include <vector> typedef std::vector<double> dubvec; typedef dubvec::iterator dubveciter; class Op{ private: double res; int n; Op() : res(0),n(0) { ; void operator()(double elem) { res += elem; n++; double getvalue(){ return (res/n); double findvalue(dubveciter from, dubveciter to){ Op o; dubveciter iter; for(iter=from; iter!=to;iter++){ o(*iter); return o.getvalue(); dubvec numbers; numbers.push_back(2.1); numbers.push_back(3.2); numbers.push_back(4.0); std::cout << findvalue(numbers.begin(),numbers.end()) << std::endl; The results will be available not later than 15.9.2010.