Podcast
Questions and Answers
Który z wymienionych opisuje Kotlina najdokładniej?
Który z wymienionych opisuje Kotlina najdokładniej?
Co oznacza, że Kotlin jest językiem 'wieloplatformowym'?
Co oznacza, że Kotlin jest językiem 'wieloplatformowym'?
Która z poniższych opcji nie jest powodem, dla którego Kotlin stał się popularny wśród programistów Androida?
Która z poniższych opcji nie jest powodem, dla którego Kotlin stał się popularny wśród programistów Androida?
Kiedy firma Google oficjalnie ogłosiła, że Kotlin jest preferowanym językiem dla twórców aplikacji na Androida?
Kiedy firma Google oficjalnie ogłosiła, że Kotlin jest preferowanym językiem dla twórców aplikacji na Androida?
Signup and view all the answers
Która z wymienionych cech charakteryzuje statyczne typowanie
w języku Kotlin?
Która z wymienionych cech charakteryzuje statyczne typowanie
w języku Kotlin?
Signup and view all the answers
Która wersja Android Studio wprowadziła Kotlina jako alternatywę dla kompilatora Java?
Która wersja Android Studio wprowadziła Kotlina jako alternatywę dla kompilatora Java?
Signup and view all the answers
Jaką licencję posiada projekt Kotlin od momentu udostępnienia go jako open source?
Jaką licencję posiada projekt Kotlin od momentu udostępnienia go jako open source?
Signup and view all the answers
Która funkcja została dodana do Kotlina w wersji 1.3?
Która funkcja została dodana do Kotlina w wersji 1.3?
Signup and view all the answers
Które z poniższych stwierdzeń najlepiej opisuje działanie wyrażenia when
w Kotlinie?
Które z poniższych stwierdzeń najlepiej opisuje działanie wyrażenia when
w Kotlinie?
Signup and view all the answers
Jak utworzyć tablicę typu IntArray
o rozmiarze 5, w której każdy element ma wartość 42?
Jak utworzyć tablicę typu IntArray
o rozmiarze 5, w której każdy element ma wartość 42?
Signup and view all the answers
Co zostanie wypisane na konsoli po wykonaniu następującego fragmentu kodu: val arr = Array(3) { i -> (i * 2).toString() }; println(Arrays.toString(arr))
?
Co zostanie wypisane na konsoli po wykonaniu następującego fragmentu kodu: val arr = Array(3) { i -> (i * 2).toString() }; println(Arrays.toString(arr))
?
Signup and view all the answers
Która pętla służy do iterowania po elementach kolekcji w Kotlinie?
Która pętla służy do iterowania po elementach kolekcji w Kotlinie?
Signup and view all the answers
Jak sprawdzić, czy zmienna obj
jest typu String
i, jeśli tak, wypisać długość tego stringa?
Jak sprawdzić, czy zmienna obj
jest typu String
i, jeśli tak, wypisać długość tego stringa?
Signup and view all the answers
Które z poniższych wyrażeń prawidłowo rzutuje zmienną obj2
typu Any
na typ Int
, zakładając, że obj2
jest liczbą całkowitą?
Które z poniższych wyrażeń prawidłowo rzutuje zmienną obj2
typu Any
na typ Int
, zakładając, że obj2
jest liczbą całkowitą?
Signup and view all the answers
Jaki będzie wynik wyrażenia 4 in 1..4
?
Jaki będzie wynik wyrażenia 4 in 1..4
?
Signup and view all the answers
Jak można zdefiniować tablicę wartości typu Int
, w której każdy element ma wartość równą swojemu indeksowi pomnożonemu przez 1?
Jak można zdefiniować tablicę wartości typu Int
, w której każdy element ma wartość równą swojemu indeksowi pomnożonemu przez 1?
Signup and view all the answers
Która z poniższych opcji najlepiej opisuje cel interfejsu Factory
w kontekście przedstawionego kodu?
Która z poniższych opcji najlepiej opisuje cel interfejsu Factory
w kontekście przedstawionego kodu?
Signup and view all the answers
W kontekście delegacji interfejsów, jak zachowa się wywołanie Derived(b).print()
?
W kontekście delegacji interfejsów, jak zachowa się wywołanie Derived(b).print()
?
Signup and view all the answers
Jak zadziała wywołanie Derived(b).print2()
w przedstawionym przykładzie delegowania interfejsu?
Jak zadziała wywołanie Derived(b).print2()
w przedstawionym przykładzie delegowania interfejsu?
Signup and view all the answers
Co charakteryzuje delegację właściwości w klasie Example
z użyciem Delegate
?
Co charakteryzuje delegację właściwości w klasie Example
z użyciem Delegate
?
Signup and view all the answers
Jaki jest główny efekt użycia lazy()
przy delegowaniu właściwości?
Jaki jest główny efekt użycia lazy()
przy delegowaniu właściwości?
Signup and view all the answers
Jak działa Delegates.observable()
w kontekście delegacji właściwości?
Jak działa Delegates.observable()
w kontekście delegacji właściwości?
Signup and view all the answers
Co jest nieprawidłowe w kontekście działania delegata Delegate
przedstawionego w kodzie?
Co jest nieprawidłowe w kontekście działania delegata Delegate
przedstawionego w kodzie?
Signup and view all the answers
Które z poniższych stwierdzeń najlepiej opisuje delegację interfejsów?
Które z poniższych stwierdzeń najlepiej opisuje delegację interfejsów?
Signup and view all the answers
Jaka jest prawidłowa kolejność stosowania logiki w potoku produkcji stanu interfejsu użytkownika?
Jaka jest prawidłowa kolejność stosowania logiki w potoku produkcji stanu interfejsu użytkownika?
Signup and view all the answers
Jaką rolę pełni posiadacz stanu w kontekście logiki?
Jaką rolę pełni posiadacz stanu w kontekście logiki?
Signup and view all the answers
Która z poniższych korzyści wynika z używania posiadaczy stanu?
Która z poniższych korzyści wynika z używania posiadaczy stanu?
Signup and view all the answers
Jak relacja między elementem UI a jego posiadaczem stanu jest zdefiniowana?
Jak relacja między elementem UI a jego posiadaczem stanu jest zdefiniowana?
Signup and view all the answers
Która z poniższych opcji nie jest rolą posiadacza stanu logiki biznesowej?
Która z poniższych opcji nie jest rolą posiadacza stanu logiki biznesowej?
Signup and view all the answers
Jaki typ obiektu jest zwykle używany do implementacji posiadacza stanu logiki biznesowej?
Jaki typ obiektu jest zwykle używany do implementacji posiadacza stanu logiki biznesowej?
Signup and view all the answers
Jaka kluczowa właściwość opisuje odpowiedzialność posiadacza stanu logiki biznesowej?
Jaka kluczowa właściwość opisuje odpowiedzialność posiadacza stanu logiki biznesowej?
Signup and view all the answers
Które zdanie najlepiej opisuje relacje pomiędzy poszczególnymi elementami: logika biznesowa, UI i posiadacz stanu interfejsu użytkownika?
Które zdanie najlepiej opisuje relacje pomiędzy poszczególnymi elementami: logika biznesowa, UI i posiadacz stanu interfejsu użytkownika?
Signup and view all the answers
Jaką główną rolę pełnią klasy repozytorium w architekturze aplikacji?
Jaką główną rolę pełnią klasy repozytorium w architekturze aplikacji?
Signup and view all the answers
Które z poniższych zadań NIE jest odpowiedzialnością klasy repozytorium?
Które z poniższych zadań NIE jest odpowiedzialnością klasy repozytorium?
Signup and view all the answers
Jak powinny być udostępniane dane przez warstwę danych, aby zapewnić ich bezpieczeństwo i spójność?
Jak powinny być udostępniane dane przez warstwę danych, aby zapewnić ich bezpieczeństwo i spójność?
Signup and view all the answers
W jaki sposób klasy w warstwie danych zazwyczaj udostępniają operacje jednorazowe?
W jaki sposób klasy w warstwie danych zazwyczaj udostępniają operacje jednorazowe?
Signup and view all the answers
Co to są klasy źródeł danych w warstwie danych?
Co to są klasy źródeł danych w warstwie danych?
Signup and view all the answers
Dlaczego inne warstwy aplikacji nie powinny mieć bezpośredniego dostępu do źródeł danych?
Dlaczego inne warstwy aplikacji nie powinny mieć bezpośredniego dostępu do źródeł danych?
Signup and view all the answers
Jak klasy w warstwie danych obsługują dane zmieniające się w czasie (np. aktualizacje z serwera)?
Jak klasy w warstwie danych obsługują dane zmieniające się w czasie (np. aktualizacje z serwera)?
Signup and view all the answers
W jakich scenariuszach repozytorium może potrzebować zależności od innego repozytorium?
W jakich scenariuszach repozytorium może potrzebować zależności od innego repozytorium?
Signup and view all the answers
Która z poniższych opcji najlepiej opisuje rolę warstwy interfejsu użytkownika?
Która z poniższych opcji najlepiej opisuje rolę warstwy interfejsu użytkownika?
Signup and view all the answers
Jaka jest główna korzyść zdefiniowania stanu interfejsu użytkownika jako niezmiennego obiektu?
Jaka jest główna korzyść zdefiniowania stanu interfejsu użytkownika jako niezmiennego obiektu?
Signup and view all the answers
Dlaczego nie powinno się umieszczać logiki obsługi zdarzeń w samym interfejsie użytkownika?
Dlaczego nie powinno się umieszczać logiki obsługi zdarzeń w samym interfejsie użytkownika?
Signup and view all the answers
Czym jest ViewModel w kontekście architektury warstwy UI?
Czym jest ViewModel w kontekście architektury warstwy UI?
Signup and view all the answers
Jak opisać jednokierunkowy przepływ danych (UDF)?
Jak opisać jednokierunkowy przepływ danych (UDF)?
Signup and view all the answers
W kontekście UDF, jaka jest rola ViewMode'lu?
W kontekście UDF, jaka jest rola ViewMode'lu?
Signup and view all the answers
W modelu UDF, gdzie powstają zmiany stanu?
W modelu UDF, gdzie powstają zmiany stanu?
Signup and view all the answers
Która z poniższych definicji najlepiej opisuje 'logikę biznesową' w aplikacji?
Która z poniższych definicji najlepiej opisuje 'logikę biznesową' w aplikacji?
Signup and view all the answers
Co oznacza, że stan interfejsu użytkownika jest niezmienną migawką?
Co oznacza, że stan interfejsu użytkownika jest niezmienną migawką?
Signup and view all the answers
Jaką główną role pełni mediator w kontekście zarządzania stanem UI?
Jaką główną role pełni mediator w kontekście zarządzania stanem UI?
Signup and view all the answers
Które stwierdzenie najlepiej opisuje, jak UI korzysta ze stanu interfejsu użytkownika?
Które stwierdzenie najlepiej opisuje, jak UI korzysta ze stanu interfejsu użytkownika?
Signup and view all the answers
W kontekście jednokierunkowego przepływu danych, jak interfejs użytkownika informuje ViewModel o zdarzeniach użytkownika?
W kontekście jednokierunkowego przepływu danych, jak interfejs użytkownika informuje ViewModel o zdarzeniach użytkownika?
Signup and view all the answers
Co jest głównym celem rozdzielenia miejsca, gdzie powstają zmiany stanu, od miejsca jego konsumpcji w UDF?
Co jest głównym celem rozdzielenia miejsca, gdzie powstają zmiany stanu, od miejsca jego konsumpcji w UDF?
Signup and view all the answers
Jakie elementy, poza aktywnościami i fragmentami, mogą pełnić funkcję interfejsu użytkownika?
Jakie elementy, poza aktywnościami i fragmentami, mogą pełnić funkcję interfejsu użytkownika?
Signup and view all the answers
Która z poniższych opcji najlepiej oddaje istotę jednokierunkowego przepływu danych?
Która z poniższych opcji najlepiej oddaje istotę jednokierunkowego przepływu danych?
Signup and view all the answers
Flashcards
Kotlin
Kotlin
Wieloplatformowy, statycznie typowany język programowania wysokiego poziomu, który w pełni współdziała z Javą. Został zaprojektowany do kompilacji do JVM, JavaScript i kodu natywnego.
Początki Kotlina
Początki Kotlina
Firma JetBrains stworzyła Kotlin jako projekt w 2011 roku.
Wydajność Kotlina 1.0
Wydajność Kotlina 1.0
Wersja 1.0 Kotlina została wydana 15 lutego 2016 roku, co oznaczało zobowiązanie firmy JetBrains do zapewnienia długotrwałej kompatybilności.
Wsparcie Google dla Kotlina na Androida
Wsparcie Google dla Kotlina na Androida
Signup and view all the flashcards
Kotlin w Android Studio
Kotlin w Android Studio
Signup and view all the flashcards
Generowanie bajtkodu w Kotlinie
Generowanie bajtkodu w Kotlinie
Signup and view all the flashcards
Optymalizacja wersji Javy w Kotlinie
Optymalizacja wersji Javy w Kotlinie
Signup and view all the flashcards
Współdzielenie kodu w Kotlinie 1.2
Współdzielenie kodu w Kotlinie 1.2
Signup and view all the flashcards
Wyrażenie when
Wyrażenie when
Signup and view all the flashcards
Jak działa when
?
Jak działa when
?
Signup and view all the flashcards
Wyrażenia logiczne w when
Wyrażenia logiczne w when
Signup and view all the flashcards
Funkcja arrayOf
Funkcja arrayOf
Signup and view all the flashcards
Funkcja arrayOfNulls
Funkcja arrayOfNulls
Signup and view all the flashcards
Tworzenie tablicy z Array
Tworzenie tablicy z Array
Signup and view all the flashcards
Pętla for
z zakresem
Pętla for
z zakresem
Signup and view all the flashcards
Pętla for
po kolekcji
Pętla for
po kolekcji
Signup and view all the flashcards
Tworzenie obiektu przez interfejs
Tworzenie obiektu przez interfejs
Signup and view all the flashcards
Interfejs Factory
Interfejs Factory
Signup and view all the flashcards
Implementacja Factory
w MyClass3
Implementacja Factory
w MyClass3
Signup and view all the flashcards
Delegacja interfejsu
Delegacja interfejsu
Signup and view all the flashcards
Klasa BaseImpl
Klasa BaseImpl
Signup and view all the flashcards
Klasa Derived
Klasa Derived
Signup and view all the flashcards
Funkcja lazy()
Funkcja lazy()
Signup and view all the flashcards
Funkcja observable()
Funkcja observable()
Signup and view all the flashcards
Element UI profilu użytkownika
Element UI profilu użytkownika
Signup and view all the flashcards
Potok UI: logika biznesowa vs UI
Potok UI: logika biznesowa vs UI
Signup and view all the flashcards
Posiadacz stanu
Posiadacz stanu
Signup and view all the flashcards
Posiadacz stanu logiki biznesowej
Posiadacz stanu logiki biznesowej
Signup and view all the flashcards
Posiadacz stanu logiki UI
Posiadacz stanu logiki UI
Signup and view all the flashcards
ViewModel jako posiadacz stanu
ViewModel jako posiadacz stanu
Signup and view all the flashcards
Tworzenie stanu UI
Tworzenie stanu UI
Signup and view all the flashcards
Przetwarzanie danych w posiadaczu stanu
Przetwarzanie danych w posiadaczu stanu
Signup and view all the flashcards
Rola klas repozytoriów
Rola klas repozytoriów
Signup and view all the flashcards
Odpowiedzialność klasy źródła danych
Odpowiedzialność klasy źródła danych
Signup and view all the flashcards
Rola klas źródeł danych
Rola klas źródeł danych
Signup and view all the flashcards
Bezpośredni dostęp do źródeł danych
Bezpośredni dostęp do źródeł danych
Signup and view all the flashcards
Zależność od źródła danych
Zależność od źródła danych
Signup and view all the flashcards
Skalowanie warstw architektury
Skalowanie warstw architektury
Signup and view all the flashcards
Niezmienność danych
Niezmienność danych
Signup and view all the flashcards
Funkcje API warstwy danych
Funkcje API warstwy danych
Signup and view all the flashcards
ViewModel
ViewModel
Signup and view all the flashcards
Interfejs użytkownika (UI)
Interfejs użytkownika (UI)
Signup and view all the flashcards
Warstwa danych
Warstwa danych
Signup and view all the flashcards
Pobieranie i przekształcanie danych
Pobieranie i przekształcanie danych
Signup and view all the flashcards
Tworzenie elementów UI
Tworzenie elementów UI
Signup and view all the flashcards
Obsługa zdarzeń użytkownika
Obsługa zdarzeń użytkownika
Signup and view all the flashcards
Stan UI
Stan UI
Signup and view all the flashcards
Niezmienne obiekty w stanie UI
Niezmienne obiekty w stanie UI
Signup and view all the flashcards
Rola UI
Rola UI
Signup and view all the flashcards
Zakaz modyfikacji stanu UI w UI
Zakaz modyfikacji stanu UI w UI
Signup and view all the flashcards
Mediator stanu UI
Mediator stanu UI
Signup and view all the flashcards
Logika obsługi zdarzeń poza UI
Logika obsługi zdarzeń poza UI
Signup and view all the flashcards
Jednokierunkowy przepływ danych (UDF)
Jednokierunkowy przepływ danych (UDF)
Signup and view all the flashcards
Właściciele stanu UI
Właściciele stanu UI
Signup and view all the flashcards
Typ ViewModel
Typ ViewModel
Signup and view all the flashcards
Study Notes
Wprowadzenie do języka Kotlin
- Język programowania Kotlin jest wieloplatformowy, statycznie typowany i uniwersalny.
- Statyczne typowanie zwiększa bezpieczeństwo kodu.
- Język Kotlin został zaprojektowany tak, aby w pełni współpracował z Javą.
- Biblioteka Kotlina w wersji JVM zależy od biblioteki klas Java.
- Kotlin działa na maszynie wirtualnej Java (JVM), ale również kompiluje się do kodu JavaScript lub kodu natywnego.
Cele przedmiotu i wymagania wstępne
- Poznanie języka Kotlin.
- Poznanie współczesnych metod tworzenia interfejsów użytkownika.
- Poznanie zalecanych zasad architektury aplikacji mobilnej.
- Znajomość programowania obiektowego.
- Znajomość języka angielskiego – podstawowy stopień.
- Znajomość budowania struktur danych i sieci komputerowych.
- Zaliczenie testu pisemnego.
Efekty uczenia się
- W zakresie wiedzy: poznać najważniejsze elementy języka Kotlin i architekturę współczesnych aplikacji mobilnych; poznać współczesne metody tworzenia interfejsu użytkownika.
- W zakresie umiejętności: potrafić projektować i implementować aplikacje mobilne; potrafić tworzyć interfejsy użytkownika.
- W zakresie kompetencji społecznych: rozumieć potrzeby rozwijania i aktualizowania wiedzy w dynamicznie rozwijających się technologiach mobilnych.
Tematyka wykładów
- Wprowadzenie do języka Kotlin (składnia, system typów, wyrażenia, operatory, funkcje).
- Klasy i interfejsy w języku Kotlin (składnia, dziedziczenie, metody rozszerzające).
- Metody tworzenia interfejsu użytkownika w systemie Android.
- Nawigacja w aplikacji (graf nawigacji, przechodzenie po grafie, przekazywanie parametrów).
- Programowanie asynchroniczne w języku Kotlin (współprogramy).
- Architektura aplikacji (wprowadzenie, zarządzanie stanem, obsługa cyklu życia, wiązanie widoków i danych, przechowywanie danych, zarządzanie zadaniami w tle).
- Wstrzykiwanie zależności w systemie Android.
- Tworzenie testów aplikacji mobilnych.
Zalecana literatura
- Efektywny Kotlin: najlepsze praktyki
- Kickstart Modern Android Development with Jetpack and Kotlin
- Kotlin language specification
Język Kotlin
- Język wieloplatformowy, statycznie typowany, uniwersalny język programowania wysokiego poziomu z wnioskowaniem typów.
- Zaprojektowany tak, aby w pełni współdziałał z Javą.
- Działa na JVM, ale także kompiluje się do JavaScript lub kodu natywnego.
- Kompilator Kotlin domyślnie generuje kod bajtowy Java 8, ale pozwala programiście wybrać docelową wersję Java 9 do 20 w celu optymalizacji.
- Wspiera statyczne typowanie, wnioskowanie typów i funkcje rozszerzające.
Historia języka Kotlin
- Kotlin został stworzony w lipcu 2011 r. przez firmę JetBrains.
- Projekt Kotlin był rozwijany od roku.
- Udostępniono projekt jako open source w lutym 2012 roku z wykorzystaniem licencji Apache.
Podstawowe typy danych
- Całkowite ze znakiem: Byte, Short, Int, Long
- Całkowite bez znaku: UByte, UShort, UInt, ULong
- Zmiennoprzecinkowe: Float, Double
- Logiczne: Boolean
- Znaki: Char
- Ciągi znaków: String
- Any: Korzeń hierarchii klas w Kotlinie, wszystkie klasy dziedziczą po Any (podobnie jak w Javie po Object)
- Unit: Typ z jedną wartością – obiektem Unit (odpowiednik void z Javy)
- Nothing: Nie ma instancji; służy do reprezentowania wartości, która nigdy nie istnieje.
Podstawy składni
- Tworzenie zmiennych:
var a: Int = 1
(z typowaniem) lubvar b = 1
(wnioskowanie typu). - Typy niezmienne:
val d = 1
- Konwersja między typami (np.
b = c.toInt()
). - Tablice.
- Wyrażenia (
if
,when
). - Szablony łańcuchów.
Zakresy
for
z zakresem (1..3
)for
po kolekcji.while()
do while
Sprawdzanie typów i rzutowanie
- Sprawdzenie typu
if (obj is String) { ... }
- Rzutowanie
val int1: Int = obj2 as Int
(musi nastąpić prawidłowe rzutowanie) lubstr2=obj2 as? String
(może zwrócić null)
Funkcje
- Typy funkcji.
- Funkcje z pojedynczym wyrażeniem.
- Parametry domyślne.
- Zwracanie
Unit
. - Nazwane parametry.
Wyrażenia lambda
- Konwersje między lambda a zwykłymi funkcjami.
- Wykorzystanie lambd jako parametrów funkcji.
Klasy – konstruktor i inicjalizacja
- Główny konstruktor.
- Konstruktor z parametrami.
- Inicjalizacja – blok init.
- Niejawna delegacja w konstruktorach.
Klasy danych
- Automatyczne metody:
ToString
,Equals
,HashCode
,Copy
,Component
- Przykład użycia,
data class User (val name: String, val id: Int)
Klasy zagnieżdżone i wewnętrzne
- Klasy zagnieżdżone nie mają dostępu do zmiennych klasy zewnętrznej.
- Klasy wewnętrzne mają dostęp do zmiennych klasy zewnętrznej.
Funkcje rozszerzające
- Cechy funkcji rozszerzających.
- Przykład użycia,
fun <T MutableList<T>> .swap
(uwaga na <T>)
Interfejsy
- Interfejs może zawierać tylko abstrakcję (interfejs).
- Przykład użycia,
interface MyInterface { fun foo() }
Singleton
- Klasa singleton ma tylko jedną instancję, jest obiektem.
- Przykład użycia,
object Singleton { val a = 1}
Obiekty towarzyszące
- Klasa towarzysząca to statyczny obiekt klasy, służy do udostępnienia funkcjonalności.
- Przykład użycia,
companion object Factory { fun create(): MyClass = MyClass() }
Delegacja interfejsów
- Przykłady użycia.
Delegacja właściwości
- Użycie
Delegates
.
Null safety
- Bezpieczeństwo w kodzie.
- Operatory.
Kolekcje – interfejsy kolekcji
MutableIterable
,Iterable
,MutableCollection
,Collection
,List
,Set
,Map
,MutableList
,MutableSet
,MutableMap
.
Listy – tworzenie, przeglądanie, kopiowanie, porównywanie, modyfikacja
- Zastosowanie,
listOf
,mutableListOf
,listof
,LinkedList
- ListIterator, przechodzenie po liści w przód i wstecz.
- Kopiowanie,
toMutableList
,toSet
,toMutableSet
. - Metody porównania, równe/nie równe.
Zbiory – tworzenie, użycie
Mapy – tworzenie, użycie
mapOf()
,mutableMapOf()
- Operacje na mapie.
Operacje na kolekcjach
- filtrowanie, transformacje, operacje agregujące, grupowanie, pobieranie elementów, porządkowanie.
any()
,none()
,all()
,partition()
,groupBy()
,map()
,zip()
.
Scope functions
Klasy - podstawowy i dodatkowe konstruktory
Klasy – właściwości
- Domyślne wartości właściwości.
- Gettery i settery
- Inicjalizacja.
Klasy - widoczność
- Jakie są zasady widoczności w klasach Kotlin.
- Widoczność prywatna, publiczna, wewnętrzna, chroniona.
Klasy - dziedziczenie
- Dziedziczenie w języku Kotlin.
Architektura aplikacji z Android Jetpack
- Elementy charakterystyczne dla architektury Android Jetpack.
Działanie aplikacji mobilnej
- Zasady tworzenia aplikacji mobilnych.
Podstawowe zasady architektoniczne
- Zasady dobrego projektowania aplikacji mobilnych.
Zalecana architektura aplikacji
- Architektura aplikacji z Android Jetpack.
Współczesna architektura aplikacji
- Nowoczesne techniki używane w aplikacjach mobilnych.
Zarządzanie zależnościami między komponentami
- Wstrzykiwanie zależności, lokalizator usług
Ogólne najlepsze praktyki
- Zasady projektowania, testowania, konserwacji aplikacji
Warstwa UI
- Rola i elementy warstwy UI.
Definiowanie stanu UI
- Kluczowe koncepcje dotyczące stanu interfejsu użytkownika.
Jednokierunkowy przepływ danych - UDF
- Jednokierunkowy przepływ danych w aplikacjach mobilnych.
Udostępnianie stanu UI
- Sposób udostępniania stanu UI.
Obsługa zdarzeń ViewModel
- Obsługa zdarzeń przez
ViewModel
.
Zawartość obiektu stanu UI
- Jak przechowywać dane w
UiState
.
Wiele czy jeden strumienie stanu UI?
- Obsługa wielu strumieni w UI.
Konsumowanie stanu UI
Rodzaje stanu UI
- Dostępne metody przedstawiania stanu UI.
Cykl życia elementów aplikacji oraz typów stanu i logiki interfejsu użytkownika
- Cykl życia komponentów UI.
Potok produkcji stanu UI
- Etapy przetwarzania stanu.
API używane w tworzeniu stanu
- API używane do produkowania stanu.
Jednorazowe API jako źródła zmiany stanu
Modyfikacja stanu z wywołań asynchronicznych
Modyfikacja stanu z wątku działającego w tle
Strumienie jako źródła zmiany stanu
- Użycie strumieni do tworzenia stanu.
Jednorazowe i strumieniowe API jako źródła zmiany stanu
Inicjalizacja potoku produkującego stan
Warstwa danych
- Rola i elementy warstwy danych.
Klasy repozytorium
- Obowiązki i funkcje klas repozytoriów.
API udostępniania danych
Wiele poziomów repozytoriów
Wielowątkowość
Reprezentowanie modeli biznesowych
Rodzaje operacji na danych
Layout w Compose
- Ogólne koncepcje i elementy layoutu w Compose.
Column
- Metody rozmieszczania elementów w układzie pionowym.
Row
- Metody rozmieszczania elementów w układzie poziomym
Box
- Metody rozmieszczania elementów w układzie pudełkowym
Modyfikatory
- Podstawowe modyfikatory w Compose dla zarządzania formatowaniem layoutu.
Modyfikatory - size, fillMaxSize, width, height, padding, offset,
matchParentSize
- Rozmaite modyfikatory, ich przeznaczenie i zastosowanie.
Ogólne najlepsze praktyki
Imperatywne tworzenie GUI w XML
- Metody implementacji interfejsów użytkownika.
Deklaratywne podejście do tworzenia interfejsu użytkownika w Jetpack Compose
Jetpack Compose – prosty przykład
Funkcje komponowalne (Composables)
Rekompozycja
- Mechanizmy rekompozycji w Jetpack Compose.
Rekompozycja – kolejność
Rekompozycja – wykonanie równoległe
- Funkcje uruchamiające animacje.
Rekompozycja – pomija ile się da
Cykl życia elementów komponowalnych- Podstawowe Informacje
- Cykl życia - podstawowe informacje i zasady.
Cykl życia – zachowanie elementów w kompozycji
Stan elementu i logika UI – stan w osobnej (zwykłej) klasie
Logika biznesowa i jej posiadacz stanu
Właściciel stanu na poziomie ekranu
ViewModel jako posiadacz stanu logiki biznesowej
Metody udostępniania stanu
Zachowywanie stanu UI (związanego z logiką UI)
- Zasady zachowania stanu UI.
Adnotacja @Parcelize
Funkcja mapSaver()
Funkcja listSaver()
Zachowywanie stanu - podsumowanie
- Podsumowanie różnych sposobów zachowania stanu w Android Compose.
SaveStateHandle - najlepsze praktyki
SaveStateHandle - StateFlow
Potok produkujący stan UI
API udostępniania danych
- API dla danych (do wysyłania/przechowywania danych).
Wiele poziomów repozytoriów
- Zasady tworzenia wiele poziomów w repozytoriach.
Wielowątkowość
- Zasady wielowątkowości w Android Compose.
Pasy aplikacji (App bars)
Górne paski aplikacji – typy, parametry, zachowanie przewijania
Dolny pasek aplikacji
Szuflada nawigacji ([Drawer])
Modalny dolny arkusz
Typowe komponenty Material Design i ich zastosowanie
Przyciski - rodzaje
Pływający przycisk akcji (Floating Action Button)
Karta (Card)
Przełączniki ('Switch')
Suwaki ('Slider')
Wskaźniki postępu (Progress Indicators)
Okna dialogowe (Dialogs)
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Sprawdź swoją wiedzę na temat języka Kotlin oraz jego zastosowania w programowaniu aplikacji na Androida. Quiz obejmuje podstawowe informacje o Kotlinie, jego cechach i popularności wśród programistów. Odpowiedz na pytania dotyczące jego wersji oraz charakterystyki statycznego typowania.