Kolokwium 1 2014 gr. 1

Transkrypt

Kolokwium 1 2014 gr. 1
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
życie ludzi (typu Sims).
Założenia:
Aplikacja ma pozwalać m.in. na dodawanie nowych osób, budynków, mebli, zadań do wykonania,
generowanie zdarzeń losowych, zmianę poziomu trudności itp. W aplikacji ma występować
minimum 6 powiązanych klas.
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. Proszę wypisać co zostanie wyświetlone kolejno
w linijkach 1), 2), 3), 4) i 5).
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 OO mają dostęp do zmiennych private klasy OS
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 OBS mają dostęp do zmiennych protected klasy OS
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 h, poprzez
instrukcję : using namespace PN1; using namespace PN2.
Do funkcji z PN2 możemy odwołać się poprzez PN2::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 kopię obiektu *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 preinkrementacji (++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")