Część I. Aplikacja konsolowa
Napisz program implementujący klasę i dwie klasy potomne, który obsługuje działanie urządzeń domowych.

Założenia do programu:
- Program wykonywany w konsoli
- Zastosowany obiektowy język programowania zgodny z zainstalowanym na stanowisku egzaminacyjnym: C++ lub C#, lub Java, lub Python
- Program zawiera klasę bazową reprezentującą urządzenie oraz dwie klasy potomne reprezentujące pralkę oraz odkurzacz
- Wymaganie do klasy bazowej:
- Implementuje jedną ogólnodostępną metodę, która wyświetla treść komunikatu. Komunikat jest argumentem metody. Metoda nie zwraca wartości.
- Wymagania do klasy reprezentującej pralkę:
- Definiuje pole przechowujące numer programu prania, który jest liczbą całkowitą. Pole inicjowane jest wartością 0. Instancje klasy nie mają dostępu do pola, pole nie jest widoczne w klasach dziedziczących po klasie pralki
- Implementuje ogólnodostępną metodę do ustawienia numeru programu prania. Argumentem metody jest numer programu. Gdy jest on liczbą z przedziału od 1 do 12, metoda ustawia pole określające numer programu na tą wartość. W przeciwnym wypadku pole jest ustawione na wartość 0. Metoda zwraca wartość pola numeru programu
- Wymagania do klasy reprezentującej odkurzacz:
- Definiuje pole reprezentujące stan odkurzacza, które jest typu logicznego, inicjowane wartością false. Wartość false oznacza, że odkurzacz jest wyłączony, true – włączony. Pole dostępne tylko w tej klasie, niedostępne w klasach potomnych
- Implementuje ogólnodostępną bezargumentową metodę on(), która włącza odkurzacz. Metoda nie zwraca wartości. Włączenie polega na ustawieniu pola stanu na wartość true oraz wywołaniu metody klasy bazowej z komunikatem „Odkurzacz włączono”. Zmiana stanu i komunikat mogą być wykonane tylko i wyłącznie, gdy odkurzacz jest wyłączony
- Implementuje ogólnodostępną bezargumentową metodę off(), która wyłącza odkurzacz. Metoda nie zwraca wartości. Wyłączenie polega na ustawieniu pola stanu na wartość false oraz wywołaniu metody klasy bazowej z komunikatem „Odkurzacz wyłączono”. Zmiana stanu i komunikat mogą być wykonane tylko i wyłącznie, gdy odkurzacz jest włączony
- Wymagania do programu głównego:
- Należy zainicjować dwa obiekty typu pralka i odkurzacz
- Na obiekcie typu pralka należy przetestować ustawienie programu prania z wartościami poprawnymi i niepoprawnymi. Powinny być wyświetlone odpowiednie komunikaty, patrz obrazy 1 i 2
- Na obiekcie typu odkurzacz należy:
- Wywołać metodę on()trzykrotnie; mimo trzykrotnego wywołania tylko raz wyświetla się komunikat – patrz obraz 1
- Wywołać metodę klasy bazowej z treścią: „Odkurzacz wyładował się”
- Wywołać metodę off()
- Program powinien podejmować zrozumiałą komunikację z użytkownikiem. Jej przykład przedstawiono na obrazach 1 i 2
- W programie może być zastosowane angielskie lub polskie nazewnictwo klas, pól, metod, instancji klas, zmiennych
- Program powinien być zapisany czytelnie, z zachowaniem zasad czystego formatowania kodu, należy stosować znaczące nazwy zmiennych, metod
- Dokumentację aplikacji należy utworzyć zgodnie z opisem w części III treści zadania.
Część II. Aplikacja mobilna
Za pomocą środowiska programistycznego dostępnego na stanowisku egzaminacyjnym wykonaj aplikację mobilną do obsługi urządzeń domowych. Do wykonania zadania należy wykorzystać obrazy zawarte w archiwum pliki4.zip zabezpieczonym hasłem: Int3rn3tOfThingS


Stan początkowy aplikacji został przedstawiony na obrazach 3 i 4. Interakcje w aplikacji zostały przedstawione na obrazach 5 i 6. W zależności od zastosowanego środowiska programistycznego oraz emulowanego systemu wynik końcowy może nieznacznie różnić się od przedstawionego.
Elementy aplikacji:
- Napis (etykieta) o treści: „Urządzenia Domowe”
- Napis o treści: „Autor: ”, dalej wstawiony numer zdającego
- Rozkład dotyczący pralki:
- Obraz pralka.jpg
- Napis o treści: „Pralka”
- Pole edycyjne z podpowiedzią o treści: „Podaj nr prania 1..12” umożliwiające wpisywanie jedynie liczb
- Przycisk o treści: „Zatwierdź”
- Napis o treści: „Numer prania: nie podano”
- Rozkład dotyczący odkurzacza:
- Obraz odkurzacz.jpg
- Napis o treści: „Odkurzacz”
- Przycisk o treści: „Włącz”
- Napis o treści: „Odkurzacz wyłączony”
- Napis o treści: „Status: naładowany”
- Rozmieszczenie elementów zgodne z obrazami 3 i 4
- Działanie aplikacji:
- Po wciśnięciu przycisku „Zatwierdź” pobierana jest liczba z pola edycyjnego, jeśli jest ona z przedziału od 1 do 12 to zmieniany jest napis poniżej na: „Numer prania: <numer>”, gdzie <numer> oznacza wartość podaną w polu edycyjnym (obraz 5)
- Po wciśnięciu przycisku „Włącz”, zmienia się podpis przycisku na „Wyłącz” oraz treść napisu poniżej na: „Odkurzacz włączony”. Jeżeli kolejny raz zostanie wciśnięty przycisk, napisy wracają do stanu początkowego („Włącz” oraz „Odkurzacz wyłączony”) (obraz 6)
Założenia aplikacji:
- Interfejs użytkownika zapisany za pomocą języka znaczników wspieranego w danym środowisku (np. XAML, XML)
- Zastosowane rozkłady liniowe (Linear / Stack lub inny o tej idei), aby można było uzyskać widok taki jak na obrazach 3 i 4.
- Kolory tła:
- Dla głównego rozkładu lub strony: LightBlue (#ADD8E6)
- Dla pola edycyjnego: SkyBlue (#87CEEB)
- Dla przycisków: RoyalBlue (#4169E1)
- Kolor czcionki wpisanego tekstu oraz czcionki podpowiedzi dla pola edycyjnego: Navy (#000080)
- Marginesy zewnętrzne:
- Dla pierwszych dwóch napisów 5
- Dla przycisków 10
- Dla obrazów marginesy lewy, prawy i dolny 20, górny 0
- Tekst zapisany powiększoną czcionką dla napisów „Urządzenia Domowe”, „Pralka”, „Odkurzacz”
- Pierwsze dwa napisy na stronie są wyśrodkowane
- Obrazy mają wysokość 150
- Aplikacja powinna być zapisana czytelnie, z zachowaniem zasad czystego formatowania kodu, należy stosować znaczące nazwy zmiennych i funkcji.
Podejmij próbę kompilacji i emulacji aplikacji. Informacje dotyczące dokumentacji i zrzutów ekranowych umieszczono w części III zadania.
Kod aplikacji przygotuj do nagrania na płytę. W podfolderze mobilna powinno znaleźć się archiwum całego projektu o nazwie mobilna.zip, skopiowane z projektu plik (lub pliki) z kodem źródłowym interfejsu użytkownika (XAML lub XML) oraz plik źródłowy kodu skojarzonego z interfejsem użytkownika.
Część III. Dokumentacja aplikacji konsolowej
Wykonaj dokumentację do aplikacji utworzonych na egzaminie. W kodzie źórdłowym aplikacji konsolowej za pomocą komentarza utwórz nagłówek metody klasy bazowej, według wzoru z listingu 1. Komentarz powinien znaleźć sięnad lub pod nazwą metody. W miejscu nawiasów <> należy podać odpowiednie opisy.
UWAGA: Dokumentację należy umieścić w komentarzu (wieloliniowym lub kilku jednoliniowych). Znajdujący się w listingu 1 wzór dokumentacji jest bez znaków początku i końca komentarza, gdyż te są różne dla różnych języków programowania.
Listing 1. Wzór dokumentacji metody (liczba gwiazdek dowolna)
************************************************
nazwa: <tu wstaw nazwę metody>
opis: <co wykonuje metoda?>
parametry: <nazwa i opis parametrul, lub „brak”>
<nazwa i opis parametru2>
... zwracany typ i opis: <nazwa typu i opis co jest zwracane lub „brak”> autor: <numer zdającego>
************************************************
Wykonaj zrzuty ekranu dokumentujące uruchomienie aplikacji utworzonych podczas egzaminu. Zrzuty powinny obejmować cały obszar ekranu monitora z widocznym paskiem zadań. Jeżeli aplikacja uruchamia się, na zrzucie należy umieścić okno z wynikiem działania programu oraz otwarte środowisko programistyczne z projektem lub okno terminala z kompilacją projektu. Jeżeli aplikacja nie uruchamia się z powodu błędów kompilacji, należy na zrzucie umieścić okno ze spisem błędów i widocznym otwartym środowiskiem programistycznym. Wykonać należy tyle zrzutów, ile interakcji podejmuje aplikacja. Wymagane zrzuty ekranu:
- Aplikacja konsolowa – dowolna liczba zrzutów nazwanych konsola1, konsola2, …
- Aplikacja mobilna – dowolna liczba zrzutów nazwanych mobile1, mobile2, … (np. stan początkowy, po wciśnięciu przycisku Zatwierdź”, po wciśnięciu przycisku „Włącz”, następnie „Wyłącz”)
W edytorze tekstu pakietu biurowego utwórz plik z dokumentacją i nazwij go egzamin. Dokument powinien zawierać informacje o wykorzystanych w czasie egzaminu narzędziach:
- Nazwę systemu operacyjnego
- Nazwy środowisk programistycznych
- Nazwę emulatora dla aplikacji mobilnej
- Nazwy języków programowania
Zrzuty ekranu i dokument umieść w podfolderze dokumentacja.