Pytania pomocnicze - INF.04

Projektowanie, programowanie i testowanie aplikacji

Pytania pomocnicze rozwijające tematy z pytań egzaminacyjnych. Każde pytanie ma krótką odpowiedź, która pomaga utrwalić wiedzę i przygotować się do egzaminu. Łącznie: 1207.
Strona 7 z 11.

Czym jest domena publiczna?

Domena publiczna obejmuje utwory, z których można korzystać bez uzyskiwania zgody właściciela autorskich praw majątkowych. Można je kopiować, modyfikować i rozpowszechniać, także komercyjnie.

Co oznacza symbol domeny publicznej?

Symbol domeny publicznej informuje, że utwór nie jest objęty majątkowymi prawami autorskimi albo prawa te wygasły. Taki utwór można zwykle swobodnie kopiować, rozpowszechniać i modyfikować.

Czym domena publiczna różni się od praw autorskich?

Prawa autorskie chronią twórcę i ograniczają korzystanie z utworu bez zgody uprawnionego. Domena publiczna oznacza brak takich ograniczeń w zakresie autorskich praw majątkowych.

Jak odróżnić symbol domeny publicznej od symbolu praw autorskich?

Symbol praw autorskich to zwykle znak ©. Symbol domeny publicznej często przedstawia przekreślone ©, co sugeruje brak ograniczeń wynikających z autorskich praw majątkowych.

Czy każdy darmowy zasób z Internetu jest domeną publiczną?

Nie. Darmowy dostęp nie oznacza braku praw autorskich. Zawsze należy sprawdzić licencję lub informację o statusie prawnym zasobu.

Czym domena publiczna różni się od licencji Creative Commons?

Creative Commons to zestaw licencji, które określają warunki korzystania z utworu, np. konieczność podania autora. Domena publiczna oznacza, że utwór można wykorzystywać bez typowych ograniczeń licencyjnych.

Kiedy utwór może trafić do domeny publicznej?

Najczęściej dzieje się tak po wygaśnięciu autorskich praw majątkowych, zwykle po upływie określonego czasu od śmierci twórcy. Utwór może też zostać świadomie udostępniony jako dobro publiczne, jeśli pozwala na to prawo.

Jaka jest różnica między domeną publiczną a licencją Creative Commons?

Domena publiczna oznacza brak ograniczeń wynikających z praw majątkowych. Creative Commons to zestaw licencji, które mogą pozwalać na użycie utworu, ale często pod pewnymi warunkami, np. podaniem autora.

Dlaczego programista powinien znać podstawy praw autorskich?

Programista korzysta z kodu, bibliotek, grafik, fontów i dokumentacji. Nieznajomość licencji może prowadzić do naruszenia praw autorskich w tworzonym projekcie.

Czy utwór z domeny publicznej można wykorzystać w projekcie informatycznym?

Tak, można go wykorzystać np. w aplikacji, stronie internetowej, dokumentacji lub materiałach graficznych. Warto jednak sprawdzić źródło i upewnić się, że utwór rzeczywiście znajduje się w domenie publicznej.

Czy utwór z domeny publicznej można wykorzystać w aplikacji komercyjnej?

Tak, co do zasady utwory z domeny publicznej można wykorzystywać także komercyjnie. Warto jednak upewnić się, że informacja o domenie publicznej pochodzi z wiarygodnego źródła.

Na czym polega prawo cytatu i dlaczego nie jest tym samym co domena publiczna?

Prawo cytatu pozwala użyć fragmentu cudzego utworu w uzasadnionym celu, np. wyjaśnienia, analizy lub krytyki. Nie oznacza ono swobodnego korzystania z całego utworu tak jak w przypadku domeny publicznej.

Na czym polega prawo cytatu?

Prawo cytatu pozwala wykorzystać fragment cudzego utworu w uzasadnionym celu, np. do analizy, wyjaśnienia lub nauczania. Nie pozwala jednak dowolnie kopiować całych cudzych materiałów.

Co oznacza modyfikator abstract przy metodzie?

Oznacza, że metoda jest tylko zadeklarowana i nie ma implementacji w tej klasie. Jej ciało powinno zostać zdefiniowane w klasie pochodnej.

Czy metoda abstrakcyjna może mieć ciało?

Nie. Metoda abstrakcyjna zawiera tylko deklarację, np. nazwę, typ zwracany i parametry, ale nie zawiera kodu wykonywalnego.

Dlaczego klasa z metodą abstrakcyjną jest traktowana jako baza dla innych klas?

Ponieważ nie dostarcza pełnej implementacji wszystkich metod. Klasy pochodne muszą uzupełnić brakujące zachowanie.

Czy można utworzyć obiekt klasy abstrakcyjnej?

Nie można bezpośrednio utworzyć obiektu klasy abstrakcyjnej. Można natomiast tworzyć obiekty klas, które po niej dziedziczą i implementują wymagane metody.

Jaka jest różnica między metodą abstrakcyjną a zwykłą metodą?

Zwykła metoda ma implementację, czyli ciało metody. Metoda abstrakcyjna nie ma ciała i musi zostać zaimplementowana w klasie pochodnej.

Jak metoda abstrakcyjna wiąże się z dziedziczeniem?

Metoda abstrakcyjna jest dziedziczona przez klasy potomne, które muszą podać jej konkretną implementację, jeśli same nie są abstrakcyjne.

Czy klasa pochodna zawsze musi implementować wszystkie metody abstrakcyjne?

Tak, jeśli klasa pochodna ma być klasą konkretną. Jeśli sama pozostaje abstrakcyjna, może nie implementować wszystkich metod abstrakcyjnych.

Czym jest WCAG 2.0?

WCAG 2.0 to zbiór zaleceń dotyczących tworzenia dostępnych stron i aplikacji internetowych. Standard pomaga projektować treści tak, aby mogły z nich korzystać także osoby z niepełnosprawnościami.

Jakie są główne zasady WCAG 2.0?

WCAG 2.0 opiera się na czterech zasadach: postrzegalność, funkcjonalność, zrozumiałość i solidność. Oznacza to, że treść ma być widoczna, obsługiwana różnymi sposobami, czytelna oraz poprawnie interpretowana przez technologie wspomagające.

Dlaczego wysoki kontrast jest ważny w dostępności stron internetowych?

Wysoki kontrast ułatwia odczytywanie tekstu osobom słabowidzącym oraz użytkownikom korzystającym ze strony w trudnych warunkach oświetleniowych. Zbyt mały kontrast może sprawić, że tekst będzie nieczytelny.

Czy WCAG zaleca rezygnację z tekstów alternatywnych dla obrazów?

Nie. Teksty alternatywne są jednym z podstawowych wymagań dostępności, ponieważ opisują zawartość obrazów osobom korzystającym z czytników ekranu.

Dlaczego odpowiedź o jednej dużej czcionce nie jest poprawną zasadą WCAG?

WCAG nie wymaga stosowania jednego rozmiaru czcionki. Ważniejsze jest, aby tekst był skalowalny, czytelny i możliwy do powiększenia bez utraty funkcjonalności strony.

Jakie przykłady rozwiązań poprawiają dostępność wizualną strony?

Dostępność wizualną poprawiają m.in. odpowiedni kontrast tekstu i tła, możliwość powiększania tekstu, czytelne fonty, alternatywne wersje kolorystyczne oraz unikanie przekazywania informacji wyłącznie kolorem.

Co oznacza, że algorytm sortowania jest stabilny?

Algorytm stabilny zachowuje pierwotną kolejność elementów o równych kluczach sortowania. Jeśli dwa elementy mają tę samą wartość, nie zamienia ich miejscami względem siebie.

Dlaczego sortowanie szybkie uznaje się zwykle za niestabilne?

W typowej implementacji quick sort podczas podziału względem pivota elementy mogą być przestawiane w sposób zmieniający kolejność elementów równych. Dlatego klasyczne sortowanie szybkie nie gwarantuje stabilności.

Które algorytmy z pytania są stabilne?

Sortowanie bąbelkowe, sortowanie przez wstawianie i sortowanie przez zliczanie są zwykle stabilne, o ile są poprawnie zaimplementowane. Niestabilne w tym zestawie jest sortowanie szybkie.

Czy algorytm niestabilny zawsze sortuje błędnie?

Nie. Algorytm niestabilny może poprawnie uporządkować dane według wybranego klucza, ale nie gwarantuje zachowania kolejności elementów o identycznym kluczu.

Kiedy stabilność sortowania ma praktyczne znaczenie?

Stabilność jest ważna przy sortowaniu danych rekordowych, np. listy uczniów według klasy, nazwiska lub daty. Pozwala zachować wcześniejszy porządek przy elementach o tej samej wartości sortowania.

Na czym polega metoda dziel i zwyciężaj w sortowaniu szybkim?

Problem sortowania jest dzielony na mniejsze podproblemy przez wybór pivota i podział tablicy na części. Następnie każda część jest sortowana osobno.

Jaka jest typowa złożoność czasowa sortowania szybkiego?

Średnia złożoność sortowania szybkiego wynosi O(n log n). W najgorszym przypadku, przy złym doborze pivota, może spaść do O(n²).

Jak rozpoznać zmienną typu tekstowego w Javie?

Najczęściej jest zadeklarowana jako `String`, np. `String imie = "Anna";`. Wartość tekstowa jest zapisana w podwójnym cudzysłowie.

Które typy w podanym kodzie są typami całkowitymi?

Typami całkowitymi są `short` i `int`. W przykładzie są to zmienne `wiek` oraz `i`.

Czym różni się `char` od `String`?

`char` przechowuje pojedynczy znak, np. `'K'`, a `String` przechowuje ciąg znaków, np. `"Anna"`. `char` zapisuje się w apostrofach, a `String` w cudzysłowie.

Do czego służy typ `boolean` w Javie?

`boolean` przechowuje wartość logiczną: `true` albo `false`. W przykładzie zmienna `jestUczniem` ma wartość `true`.

Dlaczego w tym pytaniu nie ma zmiennej typu rzeczywistego?

Typy rzeczywiste w Javie to np. `float` i `double`. W podanym kodzie nie występuje żadna zmienna zadeklarowana takim typem.

Jak policzyć liczbę zmiennych danego rodzaju w deklaracjach?

Należy odczytać typ przed nazwą każdej zmiennej i przypisać go do kategorii, np. `String` jako tekstowy, `int` i `short` jako całkowite, `char` jako znakowy, `boolean` jako logiczny.

Co oznacza modyfikator static przy polu klasy?

Oznacza, że pole należy do klasy, a nie do pojedynczego obiektu. Wszystkie instancje klasy korzystają z tej samej wartości pola.

Czy pole static jest automatycznie niemodyfikowalne?

Nie. `static` oznacza wspólność pola dla klasy, ale nie blokuje zmiany wartości. Do tworzenia stałych używa się innych modyfikatorów, np. `final` w Javie.

Co oznacza private w definicji pola private static int licznik?

`private` ogranicza dostęp do pola tylko do wnętrza klasy. Kod spoza klasy nie może bezpośrednio odczytać ani zmienić tego pola.

Czym różni się pole statyczne od pola instancyjnego?

Pole statyczne jest jedno dla całej klasy. Pole instancyjne istnieje osobno dla każdego utworzonego obiektu.

Do czego można użyć statycznego pola licznik?

Można go użyć np. do zliczania liczby utworzonych obiektów danej klasy. Każdy konstruktor może zwiększać wspólny licznik.

Czy obiekt klasy musi istnieć, aby korzystać z pola statycznego?

Nie zawsze. Pole statyczne należy do klasy, więc zwykle można odwoływać się do niego przez nazwę klasy, o ile pozwala na to poziom dostępu.

Dlaczego ciasteczka nadają się do zbierania danych statystycznych w aplikacji internetowej?

Ciasteczka są zapisywane w przeglądarce użytkownika, więc mogą przechowywać informacje o jego wizytach, preferencjach lub identyfikatorze użytkownika. Dzięki temu aplikacja może rozpoznawać powracające odwiedziny.

Czym różnią się ciasteczka od sesji?

Ciasteczka są przechowywane po stronie klienta, czyli w przeglądarce. Sesja zwykle przechowuje dane po stronie serwera, a po stronie klienta zapisuje tylko identyfikator sesji.

Czy buforowanie służy do zbierania statystyk o użytkownikach?

Nie. Buforowanie polega na tymczasowym przechowywaniu danych w celu szybszego dostępu, np. do plików strony lub wyników zapytań. Nie jest podstawowym mechanizmem identyfikowania użytkownika do statystyk.

Jakie informacje można przechowywać w ciasteczkach?

Można przechowywać np. identyfikator użytkownika, ustawienia języka, informację o zaakceptowaniu regulaminu lub dane analityczne. Nie powinno się przechowywać w nich jawnych haseł ani poufnych danych.

Jakie atrybuty ciasteczek zwiększają bezpieczeństwo aplikacji?

Do ważnych atrybutów należą `HttpOnly`, `Secure` i `SameSite`. Ograniczają one dostęp do ciasteczek, wymuszają HTTPS i zmniejszają ryzyko niektórych ataków.

Dlaczego ciasteczka są kojarzone z prywatnością użytkownika?

Ciasteczka mogą służyć do śledzenia aktywności użytkownika między wizytami, a czasem także między różnymi stronami. Dlatego ich użycie, szczególnie analityczne i reklamowe, wymaga przejrzystej informacji dla użytkownika.

Dlaczego metoda liczPole() powinna być zadeklarowana w klasie Figura?

Ponieważ każda figura geometryczna ma pole, więc metoda dotycząca pola pasuje do najbardziej ogólnej klasy w hierarchii. Klasy szczegółowe, takie jak trójkąt czy trapez, mogą potem podać własną implementację.

Czym jest klasa bazowa w hierarchii dziedziczenia?

Klasa bazowa to klasa ogólna, po której dziedziczą klasy bardziej szczegółowe. W tym przykładzie klasą bazową jest Figura.

Czym różni się deklaracja metody od jej implementacji?

Deklaracja określa nazwę, typ zwracany i parametry metody. Implementacja zawiera konkretne instrukcje, czyli ciało metody.

Co oznacza metoda abstrakcyjna liczPole()?

Metoda abstrakcyjna jest tylko zadeklarowana, ale nie ma ciała. Klasy pochodne muszą ją zaimplementować, jeśli same nie są abstrakcyjne.

Dlaczego trapez nie jest najlepszym miejscem na deklarację metody liczPole()?

Trapez jest tylko jednym konkretnym rodzajem figury. Gdyby metoda była zadeklarowana dopiero w klasie Trapez, nie dotyczyłaby automatycznie trójkąta, kwadratu ani innych figur.

Jaką rolę pełni dziedziczenie w pokazanej hierarchii klas?

Dziedziczenie pozwala klasom szczegółowym przejmować cechy i metody klas bardziej ogólnych. Trójkąt i czworokąt dziedziczą po Figurze, a kwadrat i trapez po Czworokącie.

Na czym polega nadpisanie metody liczPole() w klasach pochodnych?

Nadpisanie polega na dostarczeniu własnej wersji metody odziedziczonej z klasy bazowej. Każda figura może inaczej obliczać pole, mimo że metoda ma tę samą nazwę.

Po czym najłatwiej rozpoznać wywołanie metody w kodzie?

Po nazwie poprzedzonej obiektem lub klasą oraz po nawiasach okrągłych, np. `obj1.rysunek();`. Nawiasy `()` oznaczają wywołanie metody.

Czym różni się metoda od pola w klasie?

Pole przechowuje dane obiektu, np. liczbę lub tekst. Metoda wykonuje określoną czynność i jest wywoływana za pomocą nawiasów.

Czym różni się metoda od konstruktora?

Konstruktor tworzy i inicjalizuje obiekt, np. `new MojaKlasa()`. Metoda jest wywoływana na już istniejącym obiekcie, np. `obj1.rysunek();`.

Co oznacza zapis `MojaKlasa obj1 = new MojaKlasa();`?

Tworzy nowy obiekt klasy `MojaKlasa` i przypisuje go do zmiennej `obj1`. Słowo `new` uruchamia konstruktor klasy.

Co oznacza kropka w zapisie `obj1.rysunek();`?

Kropka służy do odwołania się do składnika obiektu. W tym przypadku umożliwia wywołanie metody `rysunek` należącej do obiektu `obj1`.

Czy metoda może przyjmować argumenty?

Tak. Argumenty wpisuje się w nawiasach, np. `rysunek(10, 20);`. Jeśli metoda nie potrzebuje danych wejściowych, nawiasy pozostają puste.

Które zdarzenie kontrolki ComboBox w WPF odpowiada za zmianę wybranego elementu?

Za zmianę wybranego elementu odpowiada zdarzenie `SelectionChanged`. To ono zostaje wywołane po dokonaniu wyboru z listy.

Dlaczego w podanym kodzie zostanie wyświetlony komunikat „Zdarzenie 1”?

Ponieważ wybór elementu z listy rozwijanej powoduje zdarzenie `SelectionChanged`, a ono jest przypisane do metody `Funkcja1`. Ta metoda wyświetla komunikat `Zdarzenie 1`.

Do czego służy parametr sender w metodzie obsługi zdarzenia?

`sender` wskazuje obiekt, który wywołał zdarzenie. W tym przypadku byłaby to kontrolka `ComboBox`.

Czym różni się zdarzenie SelectionChanged od KeyDown?

`SelectionChanged` występuje po zmianie zaznaczenia w kontrolce, a `KeyDown` po naciśnięciu klawisza. Sam wybór elementu z listy nie oznacza automatycznie obsługi zdarzenia klawiatury.

Kiedy występuje zdarzenie LostFocus?

`LostFocus` występuje wtedy, gdy kontrolka przestaje być aktywna, np. użytkownik kliknie inne pole formularza. Nie jest to podstawowe zdarzenie wyboru elementu z listy.

Kiedy zostałaby wywołana metoda przypisana do DragEnter?

Metoda przypisana do `DragEnter` zostałaby wywołana podczas przeciągania obiektu nad kontrolkę. Nie dotyczy zwykłego wyboru elementu z listy.

Jakie znaczenie ma typ argumentu zdarzenia, np. SelectionChangedEventArgs?

Typ argumentu określa, jakie informacje o zdarzeniu są dostępne w metodzie obsługi. Dla `SelectionChangedEventArgs` mogą to być informacje o dodanych i usuniętych elementach zaznaczenia.