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