kart Flashcards
Podaj przykład odstępstwa od obiektowości w javie i go wyjaśnij
Przykładem odstępstwa jest autoboxing i unboxing. Polega na tym, że zmienna prymitywna jest opakowywana w klasę np zmienna int jest opakowywana w Integer. Przy okazji operacji na zmiennych opakowanych na początku następuje translacja do typu prymitywnego następnie wykonywana jest akcja, a po wykonaniu operacji automatycznie zmienna prymitywna jest na nowo opakowywana.
Podaj na co trzeba zwracać uwagę przy porównywaniu zmiennych opakowujących zmienne prymitywne
Trzeba pamiętać o tym, że są to obiekty które wskazują na coś. Przy zwykłym == porównywane są wskaźniki a nie wartości. Aby mieć pewność, że zostanie stworzony nowy obiekt, a nie zostanie stworzona referencja należy wywołać konstruktor. Najlepiej porównywać poprzez equals()
Co oznaczają trzy kropki … przy definicji metody
Oznacza to, że przy wywoływaniu metody można podać różną liczbę argumentów. Argumenty te są konwertowane do tablicy. np void test(int… a)
Podaj różnicę pomiędzy List i List
Obie przechowują referencje do obiektu, ale List przy dodawaniu nie sprawdza czy typy się zgadzają - można dodać wartość int, a potem string. Jeżeli lista ma zdefiniowany typ ten problem nie występuje
Podaj interfejsy jakie trzeba dodać, żeby po liście dało się iterować za pomocą foreach()
Iterable<> oraz Iterator
Na co trzeba zwracać uwagę przy iteratorze
Iterator na początku wskazuje na obiekt. Aby wskazywał na pierwszy element listy należy na nim wywołać metode next()
Czym są typy wyliczeniowe
Są one klasą
Jak się odwoływać do metod operujących na kolekcjach
Pomimo tego, że są to metody statyczne to odwołujemy się do nich jak do zmiennych globalnych
Podaj adnotacje które można umieścić przed definicja metod i ich znaczenie
@ Override sprawdza czy dana metoda znajduje się już w klasie – jeżeli nie to wywala wyjątek. Używane przy polimorfizmie
@Deprecated – metoda jest przestarzała – w przyszłości może nie działać
@SuppressWarnings – ostrzeżenie na pomarańczowo o danym tekście
@Description – opis metody, np. ważność, przedmiot, autor
Czym są metaadnotacje i metainformacje
Są to informacje na temat naszych interfejsów. Nie możemy tworzyć własnych.
Metainformacje czyli informacje na temat zawartości obiektu
Podaj atrybuty metaadnotacji??????
@dounented @Retantion Runtime – ile coś ma przetrwać Source – adnotacja istnieje tylko w naszym kodzie źródłowym, np. @Override Class – adnotacja usuwana w momencie załadowania klasy do maszyny wirtualnej, dla programów które przetwarzają klasę @Target target @Inherited - czy dziedziczne
Podaj nazwę metody zwracającej obiekt o podanej nazwie i mechanizm z tym związany
Class.forName zwrócenie referencji na obiekt o podaną nazwę. Jest związana z mechanizmem refleksji – polega on na tym, ze program jest świadomy swojej własnej struktury)
podaj operator referencji na metodę oraz metodę pozwalającą na pobranie metody obiektu
:: operator referencji na metode – przed dwukropkiem obiekt a po nim metoda która powinna zostać wywołana metoda.
getMethod pobieramy obiekt metody
Co robią podane metody split() chars() findFirst() ifPresent() collect() groupingBy() reduce()
chars() zwraca tablicę kodów ascii
split() rozdzielanie napisu bazując na podany symbol
findFirst() zwraca typ optional - wynik, ale w niektórych momentach nie może zwróci
ifPresent jeżeli dane były obecne(z findFirst) to wykonuje dalej program
jeżeli metoda zwraca null to lepiej dać optional – zabezpiecza przed tym, że nie sprawdzimy czy zmienna nie zawiera nulla
collect tworzy kolekcję w oparciu o strumień
groupingBy grupowanie bazując na wyrażeniu labmda 35
reduce pozwala wybrać jeden z dwóch elementów
Wyjaśnij czym są testy jednostkowe i ich założenia. Jak się nazywa klasa które symuluje testowaną klasę
Testy jednostkowe służą do testowania jednej klasy – powinno się ją testować w odłączeniu od innych klas – błąd w klasie A nie powinien doprowadzać do tego, że test w klasie B nie przejdzie test
Klasy powinny zależeć od sowich interfejsów
Zaślepki-mock klasa symulująca klasę pozwalając na przeprowadzanie testów jednostkowych.
Przy testowaniu powinno się sprawdzać zwykłe dane oraz dane graniczne - przy których spodziewamy się zmiany działania programu