Kolokwium 1 2014 gr. 2

Transkrypt

Kolokwium 1 2014 gr. 2
Kolokwium PROE
3 kwietnia 2014
1
2
3
4
suma
Imię:
Nazwisko:
Zadanie 1 (10 punktów)
Zaprojektuj zestaw klas umożliwiających stworzenie wieloosobowej gry komputerowej symulującej
działanie miasta (typu SimCity).
Założenia:
Aplikacja ma pozwalać m.in. na dodawanie nowych budynków, zdarzeń losowych, modyfikację
terenu, modyfikację poziomu trudności itp.
Proszę nie pisać definicji klas a jedynie "obrazkowy" rozkład obiektów (tak jak poniżej), ich
powiązania (jeśli istnieją), funkcjonalność (metody), metody wirtualne i zmienne, przynajmniej 2
konstruktory. Należy wykorzystać mechanizmy dziedziczenia.
Obiekt
Przykladowy
zmienne
int licznik
string nazwa
...
...
funkcje
void funkcjaPrzykladowa(int parametr);
Przykladowy()
...
Nie ma jednego, "poprawnego" rozwiązania tego zadania!
Zadanie 2 (5 punktów)
Wskaż błędy w niniejszym kodzie. Proszę zaznaczyć błędne linijki i nazwać występujący błąd.
Zadanie 3 (5 punktów)
Napisz co zostanie wypisane do strumienia cout po wykonaniu następującego programu. Zakładamy,
że nie zostały włączone optymalizacje kompilatora:
Zadanie 4 (5 punktów)
Za każdą poprawnie udzieloną odpowiedź Student otrzymuje 0,25 punktu, za błędną -0.25. Brak
odpowiedzi na pytanie oznacza 0. Za jedno podzadanie (1..5) nie można otrzymać ujemnych punktów
1. Klasa ObiektBardzoSzczegolowy (w skrócie OBS) dziedziczy po klasie ObiektSzczegolowy
(w skrócie OS) dziedziczy po klasie ObiektOgolny (w skrócie OO). Proszę określić dostęp
do elementów poszczególnych klas:
TAK/NIE
Funkcje OS mają dostęp do zmiennych private klasy OO
Funkcje OBS mają dostęp do zmiennych protected klasy OO
Zadeklarowanie operatora+ klasy OO jako wirtualnego sprawi, że będzie on
wirtualny w klasie OBS
Funkcje OO mają dostęp do zmiennych protected klasy OBS
2. Mamy dwie przestrzenie nazw - PN1, PN2, obie zawierają funkcję o tej samej nazwie void fun(). Określ prawdziwość następujących zdań:
TAK/NIE
Można ułatwić sobie pracę z przestrzeniami, w jednym pliku cpp, poprzez
instrukcję : using namespace PN1; using namespace PN2.
Do funkcji z PN1 możemy odwołać się poprzez PN1::fun()
Można, w jednym pliku cpp, wywołać PN1::fun(), PN2::fun()
Nie jest możliwe stworzenie dwóch przestrzeni nazw z dokładnie taką samą
funkcją (wystąpi błąd kompilatora).
3. Określ prawdziwość zdań o konstruktorach:
TAK/NIE
Aby stworzyć obiekt konstruktor domyślny może znajdować się w części
prywatnej
Konstruktor klasy Rower określony: Rower(double wysokosc = 1.0) będzie
działał także jako konstruktor domyślny
Konstruktor domyślnie zwraca referencję na obiekt *this
Konstruktor jest wywoływany w momencie tworzenia wskaźnika na obiekt
4. Określ prawdziwość zdań o operatorach (zakładamy istnienie obiektu klasy Obiekt o):
TAK/NIE
Standardowo operator = zwraca referencję do *this
Operator postinkrementacji (o++) zwraca kopię obiektu o
Operator >> realizujący działanie o>>cin musi być zaprzyjaźniony z klasą
Obiekt
Operator >> realizujący cin>>o musi być zaprzyjaźniony z klasą Obiekt
5. Określ prawdziwość stwierdzeń:
TAK/NIE
W momencie zmiany wartości zmiennej statycznej klasy, wartość ta zmieni się
we wszystkich instancjach tej klasy
„Forward declaration" służy do deklaracji przestrzeni nazw
Wskazane jest jak najczęstsze zaprzyjaźnianie funkcji
Wskazane jest jak najczęstsze stosowanie wywołań system("pause")

Podobne dokumenty