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")