Kolokwium 1 2016 gr. 1

Transkrypt

Kolokwium 1 2016 gr. 1
Kolokwium PROE
Grupa 1
14 kwietnia 2016
1
2
3
4
suma
Imię:
Nazwisko:
Zadanie 1 (10 punktów)
Zaprojektuj zestaw klas umożliwiających stworzenie aplikacji sterującej monitoringiem budynków.
Założenia:
Aplikacja ma pozwalad na sterowanie dowolną liczbą niezależnych systemów. Każdy budynek może byd wyposażony
w dowolną liczbą czujników dymu, podczerwieni i wizyjnych. W zależności od typu czujnika, każdy z nich może
generowad inny sygnał dźwiękowy w przypadku wystąpienia alarmu. W dowolnym momencie można włączyd lub
wyłączyd dany czujnik. Aplikacja powinna mied możliwośd sprawdzenia czy wszystkie czujniki są aktywne, tzn. czy nie
nastąpiło uszkodzenie czujnika.
W aplikacji powinno występowad minimum 6 powiązanych klas.
Proszę nie pisad definicji klas a jedynie "obrazkowy" rozkład obiektów, ich powiązania (jeśli istnieją), metody, metody
wirtualne (przynajmniej jedna) i zmienne. W projekcie powinny występowad co najmniej 2 konstruktory inne niż
domyślny i kopiujący. Należy wykorzystad mechanizmy dziedziczenia. Wszystkie powyższe założenia projektowe
powinny zostad spełnione.
Nie ma jednego, "poprawnego" rozwiązania tego zadania!
Zadanie 2 (5 punktów)
Wskaż błędy w niniejszym kodzie. Proszę zaznaczyd błędne linijki i opisad 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 otrzymad ujemnych punktów
1. Klasa Zwierze jest klasą bazową klas Pies, natomiast ZlyPies i BardzoZlyPies dziedziczy po klasie Pies.
Klasa Zwierze jest klasą abstrakcyjną, pozostałe klasy nie są abstrakcyjne. Określ prawdziwośd
następujących twierdzeo:
TAK/NIE
Każda metoda klasy Zwierze musi mied definicję.
Każda metoda klasy Pies musi mied definicję w klasie Pies lub w klasie Zwierzę.
Klasa Pies musi zawierad definicję metod abstrakcyjnych klasy Zwierze
Metody zadeklarowane jako wirtualne w klasie Pies będą wirtualne także w
klasie BardzoZlyPies
2. Określ prawdziwośd zdao dotyczących kompilatora i linkera:
TAK/NIE
Błędy dotyczące składni programu zgłaszane są przez kompilator
Błędy dotyczące braku definicji zadeklarowanych funkcji zgłaszane są przez
kompilator.
Błędy wynikające z wycieków pamięci zgłaszane przez kompilator
Kompilator służy do łączenia plików skompilowanych w plik wykonywalny
3. Określ prawdziwośd zdao o konstruktorach:
TAK/NIE
Konstruktor z parametrem, w którym wszystkie parametry mają przypisaną
wartośd domyślną (np. Obiekt(int i = 1)), będzie zastępował także konstruktor
kopiujący
W przypadku braku konstruktorów z parametrem, są one generowane
automatycznie
W przypadku braku konstruktora domyślnego, jest on generowany
automatycznie
Brak jawnie zdefiniowanego destruktora wywołuje błąd kompilacji
4. Określ prawdziwośd zdao o szablonach:
TAK/NIE
Jest możliwe wskazanie dwóch typów w szablonie (np. aby wywoład funkcję
f<int, int>)
Klasa vector jest klasą szablonową
Kod szablonu dla danego typu tworzony jest na etapie kompilacji
Wykorzystanie mechanizmu szablonów powoduje spowolnienie działania
programu
5. Określ prawdziwośd stwierdzeo:
TAK/NIE
Abstrakcja jest to przesłanianie funkcji przez inne funkcje (np. poprzez
przeciążanie operatorów)
Hermetyzacja jest elementem każdego języka obiektowego
Polimorfizm to wielopostaciowośd, charakteryzująca np. dziedziczenie czy też
przeciążanie funkcji
Dziedziczenie, m.in., umożliwia zwiększenie czytelności kodu