Tämä kurssi on jo päättynyt.
Tentti: valmistautuminen ja kysymykset¶
Tentti keskittyy kurssin ydinosaamistavoitteisiin teoreettisen sisällön osalta. Tentissä ei tarvitse koodata eikä tentissä odoteta täydellistä syntaksia.
Esimerkkitentti¶
- Kurssin nimi on Ohjelmointi 3: tekniikat. Selitä miksi kurssin ydinosaamistavoitteiden valossa. 6 pistettä.
- Selitä ko. termiparista, miten termit liittyvät yhteen. Huomaa, että termeissä voi olla useampia yhtenemiskohtia. 2 pistettä per kohta.
- Luokkahierarkia — Rajapintaluokat
- Polymorfismi — Periytymishierarkia
- Abstrakti kantaluokka — Lokalisaatioperiaate
- Rajapintaluokka KaupunkiRPn rajapintadokumentaatio on liitteenä. Mitä dokumentaatiossa esiintyvät käsitteet tarkoittavat? Millaisia valvollisuuksia dokumentaation valossa kutsujalla on? MItä pitää ottaa huomioon rajapintaa toteutettaessa? 6 pistettä.
- Kirjoita (sanallisesti tai kaavalla, kuitenkin mahdollisimman täsmällisesti) esi- ja jälkiehto funktiolle. 2 pistettä per kohta. Esim:
void func( string& s )
{
s.clear();
}
- Totta/epätotta, 1piste per kohta. Esim:
- Abstrakteissa kantaluokissa määritellään sekä rajapintafunktiot että niiden kantaluokan toteutus.
- Luokkahierarkioiden tarkoituksena on esittää, mitkä luokat käyttävät minkäkin toisen luokan palveluita.
- Dynaaminen sitominen (dynamic binding) tarkoittaa sitä, että jäsenfunktion kutsun yhteydessä kutsuttava koodi valitaan vasta ajonaikana.
#. Kerro listauksen jäsenfunktioista, mitkä poikkeustakuut ne tarjoavat. Perustele valintasi mahdollisimman hyvin. ly.
class VectorInt
{
public:
VectorInt();
~VectorInt();
int front() const;
int& operator[](int location);
int& at(int location);
void push_back(int element);
void swap(VectorInt& v);
void insert(int location, int element);
void insert(int location, VectorInt& values);
private:
int* datablock_; // This pointer will point to an array of integers allocated with new
int blocksize_; // Size of the allocated array
int elementamount_; // size of the area used from array
};
Palautusta lähetetään...