Arkusz INF.04 : 2022 - czerwiec - zad. 02
Oznaczenie: INF.04-02-22.06-SG Limit czasu: 150 minut
Zadanie egzaminacyjne
- UWAGA!
- Katalog z rezultatami pracy oraz płytę należy opisać numerem, którym został podpisany arkusz, czyli numerem PESEL lub w przypadku jego braku numerem paszportu.
Wykonaj aplikację konsolową
oraz webową
według wskazań. Wykonaj dokumentację do aplikacji konsolowej, zgodnie z opisem w części III
instrukcji do zadania. W tym celu zaloguj się na konto Egzamin
bez hasła.
Utwórz folder i nazwij go swoim numerem. W folderze utwórz podfoldery: konsola
, web
, testy
. Po wykonaniu każdej aplikacji, jej pełny kod (cały folder projektu) spakuj do archiwum
. Następnie pozostaw w podfolderze jedynie pliki źródłowe, których treść modyfikowałeś, plik uruchomieniowy, jeśli jest to możliwe oraz spakowane archiwum. Zrzuty ekranu dokumentujące uruchomienie obu aplikacji umieść w folderze testy.
Część I. Aplikacja konsolowa
Korzystając z mechanizmów programowania obiektowego zaprojektuj część logiki systemu forum użytkowników. Zaimplementuj klasę o nazwie osoba
z konstruktorami, metodą i obsługą pola statycznego.
Założenia klasy:
- Zastosowano obiektowy język programowania zgodny z zainstalowanym na stanowisku egzaminacyjnym:
C++
lubC#
, lubJava
, lubPython
. - Klasa
Osoba
zawiera:- Dwa pola: numeryczne
id
oraz tekstoweimię osoby
. Dostęp do obu pól ma jedynie klasa. W przypadku późniejszego rozszerzenia klasy, klasy potomne nie mają dostępu do tych pól. - Ogólnie dostępne pole
statyczne
zliczające liczbę instancji klasy, początkowo wypełnione wartością0
. - Trzy konstruktory:
- bezparametrowy, ustawia wartości
0
i pusty dla pól - z dwoma parametrami, które przekazują wartości
id
iimienia
- kopiujący
- bezparametrowy, ustawia wartości
- Każdy z konstruktorów dodatkowo
inkrementuje
liczbę instancji klasy - Metodę do wypisania
imienia
obiektu klasyOsoba
w postaci: „Cześć <argument>, mam na imię <imie>”, gdzie pole <argument> jest innym imieniem przekazanym jako parametr wejściowy metody. Jeżeli w obiekcie nie wypełniono wartości pola z imieniem wyświetlany jest komunikat „Brak danych”
- Dwa pola: numeryczne
- UWAGA!
- W języku Python, zamiast przeciążenia konstruktorów, należy utworzyć konstruktor z dwoma parametrami o wartościach domyślnych (0, pusty napis), który będzie zastępował konstruktor bezparametrowy oraz konstruktor z dwoma parametrami. Następnie zaimplementować metodę kopiującą dane z jednego obiektu do drugiego.
- Program powinien być zapisany czytelnie, z zachowaniem zasad czystego formatowania kodu, należy stosować znaczące nazwy pól i metod.
- Do klasy należy dołączyć
dokumentację
oraztesty
w postaci programu głównego. Testy zostały opisane wczęści III
zadania egzaminacyjnego.
Kod aplikacji przygotuj do nagrania na płytę. W podfolderze konsola powinno znaleźć się archiwum całego projektu o nazwie konsola.zip
, plik z kodem źródłowym klasy oraz plik uruchomieniowy, jeżeli istnieje.
Część II. Aplikacja Web
Wykonaj aplikację internetową typu front-end
obsługującą zapisy na kursy z zastosowaniem dostępnego na stanowisku egzaminacyjnym frameworka Angular
lub biblioteki React
. Zastosuj bibliotekę Bootstrap
do zdefiniowania stylu formularza.
Obraz 1a. Aplikacja framework Angular
Obraz 1b. Aplikacja React.js
Na obrazach 1a
i 1b
przedstawiono działanie aplikacji przygotowanej w środowisku Angular
i React.js
, stan po wybraniu przycisku „Zapisz do kursu”. W konsoli widoczne wyświetlenie imienia
i nazwiska
oraz nazwy kursu
na podstawie danych wprowadzonych do formularza
Założenia aplikacji:
- Aplikacja składa się z jednego komponentu
- Danymi komponentu jest
tablica
znazwami kursów
, o elementach: "Programowanie w C#", "Angular dla początkujących", "Kurs Django". Dla uproszczenia tablica może być zdefiniowana jakopole komponentu
. Należy założyć, że tablica w przyszłości może się zmienić, co będzie miało wpływ na zachowanie i wygląd aplikacji. - Komponent wyświetla:
- Nagłówek
drugiego
stopnia o treści: „Liczba kursów: <liczba>”, gdzie <liczba> oznaczawielkość
tablicy z nazwami kursów - Listę
numerowaną
generowaną automatycznie dla wszystkich elementów tablicy, niezależnie od jej wymiaru - Formularz składający się z:
- pola
edycyjnego
i jego etykiety o treści „Imię i nazwisko:” - edycyjnego pola
numerycznego
i jego etykiety o treści „Numer kursu:” przycisku
„Zapisz do kursu”
- pola
- Nagłówek
- Aplikacja w stanie początkowym wyświetla puste pola formularza
- Elementy formularza są formatowane zgodnie z obrazem
1a
lub1b
za pomocą stylów bibliotekiBootstrap
. Do budowy szablonu HTML należy wykorzystać pomoc zamieszczoną wTabeli 1
. Należy zastosować znaczące nazwy dla identyfikatorów pól formularza - Po wybraniu przycisku formularza jest generowane zdarzenie zatwierdzenia formularza, które wyświetla w konsoli przeglądarki:
Wartość
wpisaną w pierwszym polu formularzaNazwę kursu
odpowiadającą numerowi wpisanemu w drugie pole formularza, gdy kurs o takim numerze istnieje. W przeciwnym wypadku wyświetla komunikat "Nieprawidłowy numer kursu"
- Aplikacja powinna być zapisana czytelnie, z zachowaniem zasad czystego formatowania kodu, należy stosować znaczące nazwy zmiennych i funkcji
- Dokumentacja do programu wykonana zgodnie z wytycznymi z
części III
zadania egzaminacyjnego
Kod aplikacji przygotuj do nagrania na płytę. W podfolderze web powinno znaleźć się archiwum całego projektu o nazwie web.zip
oraz pliki z kodem źródłowym, które były modyfikowane.
Część III. Testy utworzonych aplikacji
Wykonaj testy aplikacji konsolowej oraz dokumentację do aplikacji utworzonych na egzaminie.
W podfolderze konsola
w programie głównym aplikacji konsolowej należy sprawdzić działanie klasy poprzez, kolejno:
- Wyświetlenie komunikatu „Liczba zarejestrowanych osób to <licznik>”, gdzie <licznik> jest
wartością
pobraną zpola statycznego
klasy - Utworzenie obiektu za pomocą konstruktora
bezparametrowego
- Utworzenie obiektu za pomocą konstruktora z
dwoma parametrami
. Dane obiektu wprowadzane z klawiatury - Utworzenie obiektu za pomocą konstruktora
kopiującego
(w Python konstruktora bezparametrowego i metody kopiującej). Obiekt z wypełnionymi polami jest źródłem kopiowania danych - Wywołanie metody do wypisania
imienia
z parametrem wejściowym równym„Jan”
dla wszystkich utworzonych obiektów - Ponowne wyświetlenie komunikatu „Liczba zarejestrowanych osób to <licznik>”, gdzie <licznik> jest wartością pobraną z
pola statycznego
klasy
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 nazwanychkonsola1
,konsola2
... - Aplikacja
web
– dowolna liczba zrzutów nazwanychweb1
,web2
... (np. stan początkowy, po wypełnieniu pól, po zatwierdzeniu konsola przeglądarki, gdy w drugim polu formularza jest prawidłowy numer oraz gdy jest nieprawidłowy numer kursu)
W edytorze tekstu pakietu biurowego utwórz plik z dokumentacją i nazwij go egzamin. Dokument powinien zawierać informacje:
- Nazwę
systemu operacyjnego
, na którym pracował zdający - Nazwy
środowisk programistycznych
, z których zdający korzystał na egzaminie - Nazwy
języków programowania
/frameworków
/bibliotek
użytych podczas tworzenia aplikacji
Zrzuty ekranu i dokument umieść w folderze o nazwie testy
.
- UWAGA!
- Nagraj płytę z rezultatami pracy. W folderze z numerem zdającego powinny się znajdować podfoldery: konsola, testy, web. W folderze konsola: spakowany cały projekt aplikacji konsolowej, pliki z kodem źródłowym, opcjonalnie plik uruchomieniowy. W folderze testy: pliki ze zrzutami oraz plik egzamin. W folderze web: spakowany cały projekt aplikacji web, pliki modyfikowane przez zdającego.
- Po nagraniu płyty sprawdź poprawność nagrania. Opisz płytę swoim numerem i pozostaw na stanowisku, zapakowaną w pudełku wraz z arkuszem egzaminacyjnym.
Czas przeznaczony na wykonanie zadania wynosi 180 minut.
Ocenie będą podlegać 4 rezultaty:
- implementacja, kompilacja, uruchomienie programu
- aplikacja konsolowa
- aplikacja web
- testy aplikacji.
Komentarze
Czy macie jakieś pytania, sugestie, uwagi? A może zauważyliście literówkę albo błąd? Dajcie koniecznie znać: kontakt@pasja-informatyki.pl. Dziękujemy za poświęcony czas - to dzięki Wam serwis staje się coraz lepszy!
Polecamy: Mega Sekurak Hacking Party
Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - wpiszcie go w koszyku, dzięki czemu otrzymacie 40% zniżki na bilet standard. Więcej szczegółów znajdziecie tutaj.
Książka: Wprowadzenie do bezpieczeństwa IT
Niedawno wystartował dodruk świetnej, rozchwytywanej książki pt. "Wprowadzenie do bezpieczeństwa IT, Tom I" (około 940 stron). Mamy dla Was kod: pasja (wpisz go w koszyku), dzięki któremu otrzymacie 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla naszych Widzów! Jest to pierwszy tom serii o ITsec, który wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!
Pomóż dzieciom
Polska Akcja Humanitarna od wielu lat dożywia dzieci. Proszę, poświęć teraz dosłownie chwilę i pomóż klikając w oznaczony strzałką zielony brzuszek Pajacyka. Dziękujemy!