Programowanie w języku Kotlin. The Big Nerd Ranch Guide - ebook
Programowanie w języku Kotlin. The Big Nerd Ranch Guide - ebook
Gdy w 2017 roku na konferencji Google ogłoszono, że Kotlin jest jednym z oficjalnie wspieranych języków programowania aplikacji dla Androida, język ten błyskawicznie stał się popularny. Najpoważniejsze firmy technologiczne doceniają jego zalety, takie jak zwarta składnia i integracja z kodem Javy. Co ważne, twórcy Kotlina czerpali z doświadczeń projektantów Javy i zapewnili, że te dwa języki są ze sobą ściśle powiązane. W ten sposób świeżość rozwiązań i nowoczesne mechanizmy zostały znakomicie połączone z najlepszymi cechami Javy, a Kotlin stał się wszechstronnym wieloplatformowym językiem programowania.
Ta książka jest przeznaczona dla programistów, którzy chcą poznać język o możliwościach wykraczających poza Javę i pisać solidne aplikacje dla różnych platform. Pozwala w praktyczny sposób zapoznać się z unikalnymi możliwościami Kotlina i - na podstawie licznych przykładowych projektów - stopniowo zgłębiać złożone zagadnienia. Znakomitym uzupełnieniem prezentowanych treści są informacje o wewnętrznych mechanizmach działania języka wraz z ćwiczeniami do samodzielnego wykonania. Dzięki tej książce nawet początkujący programista szybko zacznie pisać efektywne i solidne aplikacje, które będą służyć użytkownikom różnych platform.
W tej książce między innymi:
- wprowadzenie do Kotlina
- funkcje w Kotlinie, w tym funkcje anonimowe
- praca na obiektach: dziedziczenie, klasy, klasy abstrakcyjne
- programowanie funkcyjne w Kotlinie
- najciekawsze biblioteki i współdziałanie z Javą
Big Nerd Ranch mieści się w Atlancie w USA. Firma została założona w 2001 roku przez Aarona Hillegassa, znakomitego programistę i trenera programowania. Jej misją jest krzewienie wiedzy o rozwijających się technologiach mobilnych. Słynie ze świetnych szkoleń i znakomitych trenerów.
Kotlin: najlepsze rozwiązania nie tylko dla Androida!
Spis treści
Podziękowania 13
Przedstawienie Kotlina 15
- Dlaczego Kotlin? 15
- Dla kogo jest przeznaczona ta książka? 16
- Jak korzystać z tej książki? 16
- Dla ciekawskich 17
- Wyzwania 17
- Konwencje typograficzne 17
- Patrząc w przyszłość 17
1. Pierwsza aplikacja w Kotlinie 19
- Instalowanie IntelliJ IDEA 19
- Pierwszy projekt programu w Kotlinie 20
- Tworzenie pierwszego pliku źródłowego w Kotlinie 25
- Wykonywanie pliku źródłowego 27
- Kotlin REPL 29
- Dla ciekawskich: Dlaczego warto używać właśnie IntelliJ? 30
- Dla ciekawskich: Pisanie kodu przeznaczonego na JVM 31
- Wyzwanie: Arytmetyka REPL 32
2. Zmienne, stałe i typy 33
- Typy 33
- Deklarowanie zmiennych 34
- Wbudowane typy języka Kotlin 36
- Zmienne tylko do odczytu 37
- Wnioskowanie typów 40
- Stałe czasu kompilacji 41
- Oglądanie kodów bajtowych 42
- Dla ciekawskich: Podstawowe typy danych Javy w Kotlinie 45
- Wyzwanie: hasSteed 46
- Wyzwanie: Szynk Hipolit'a 46
- Wyzwanie: Magiczne lustro 46
3. Instrukcje warunkowe 47
- Instrukcje if/else 47
- Dodawanie kolejnych warunków 50
- Zagnieżdżone instrukcje if/else 52
- Bardziej eleganckie wyrażenia warunkowe 53
- Zakresy 59
- Wyrażenia when 60
- Szablony łańcuchowe 62
- Wyzwanie: Eksperymenty z zakresami 64
- Wyzwanie: Rozbudowa aury 64
- Wyzwanie: Konfigurowalny format statusu 65
4. Funkcje 67
- Wyodrębnianie kodu do funkcji 67
- Anatomia funkcji 69
- Nagłówek funkcji 70
- Ciało funkcji 72
- Zasięg funkcji 73
- Wywoływanie funkcji 74
- Refaktoryzacja funkcji 75
- Pisanie własnych funkcji 76
- Argumenty domyślne 78
- Funkcje jednowyrażeniowe 79
- Funkcje typu Unit 80
- Nazwane argumenty funkcji 81
- Dla ciekawskich: Typ Nothing 82
- Dla ciekawskich: Funkcje plikowe w Javie 83
- Dla ciekawskich: Przeciążanie funkcji 84
- Dla ciekawskich: Nazwy funkcji w odwrotnych apostrofach 85
- Wyzwanie: Funkcje jednowyrażeniowe 87
- Wyzwanie: Poziom upojenia magicznego 87
- Wyzwanie: Status upojenia magicznego 87
5. Funkcje anonimowe i typ funkcyjny 89
- Funkcje anonimowe 89
- Typ funkcyjny 91
- Niejawne instrukcje return 92
- Argumenty funkcyjne 92
- Słowo kluczowe it 93
- Akceptowanie wielu argumentów 94
- Wsparcie dla wnioskowania typów 95
- Definiowanie funkcji akceptujących inne funkcje 96
- Składnia skrócona 97
- Wpisywanie funkcji 98
- Referencje funkcji 99
- Typ funkcyjny jako typ wyniku 100
- Dla ciekawskich: Funkcje lambda w Kotlinie są domknięciami 102
- Dla ciekawskich: Funkcje lambda a anonimowe klasy wewnętrzne 102
6. Bezpieczeństwo wartości pustych i wyjątki 105
- Akceptowanie wartości pustych 105
- Jawny typ null w Kotlinie 107
- W czasie kompilacji czy w czasie wykonywania? 108
- Bezpieczeństwo wartości pustych 109
- Opcja pierwsza: bezpieczny operator wywołania 110
- Opcja druga: operator podwójnego wykrzyknika 111
- Opcja trzecia: użycie if do sprawdzania, czy wartość jest równa null 112
- Wyjątki 115
- Zgłaszanie wyjątków 116
- Niestandardowe wyjątki 117
- Obsługa wyjątków 118
- Warunki wstępne 120
- Null: do czego się przydaje? 122
- Dla ciekawskich: Wyjątki sprawdzane i niesprawdzane 123
- Dla ciekawskich: Jak wymuszana jest możliwość stosowania wartości null? 123
7. Łańcuchy 125
- Pobieranie fragmentów łańcuchów 125
- Funkcja substring 125
- Funkcja split 127
- Operacje na łańcuchach 129
- Łańcuchy są niezmienne 131
- Porównywanie łańcuchów 131
- Dla ciekawskich: Unicode 133
- Dla ciekawskich: Przeglądanie znaków w łańcuchu 133
- Wyzwanie: Usprawnianie smoczej mowy 134
8. Liczby 135
- Typy liczbowe 135
- Liczby całkowite 136
- Liczby dziesiętne 138
- Konwersja łańcuchów na typy liczbowe 138
- Konwersja typu Int na Double 139
- Formatowanie wartości typu Double 141
- Konwertowanie wartości typu Double na Int 142
- Dla ciekawskich: Operacje bitowe 143
- Wyzwanie: Pozostałe kwaterki 144
- Wyzwanie: Obsługa ujemnego stanu sakiewki 144
- Wyzwanie: Smoczykojn 145
9. Funkcje standardowe 147
- Funkcja apply 147
- Funkcja let 148
- Funkcja run 149
- Funkcja with 150
- Funkcja also 151
- Funkcja takeIf 151
- Funkcja takeUnless 152
- Stosowanie funkcji standardowych 152
10. Listy i zbiory 155
- Listy 155
- Dostęp do elementów listy 157
- Zmienianie zawartości listy 159
- Iteracja 163
- Wczytywanie pliku do listy 167
- Destrukturyzacja 169
- Zbiory 169
- Tworzenie zbiorów 169
- Dodawanie elementów do zbioru 171
- Pętle while 173
- Wyrażenie break 175
- Konwersje kolekcji 175
- Dla ciekawskich: Typy tablicowe 176
- Dla ciekawskich: Tylko do odczytu a niezmienny 177
- Wyzwanie: Formatowanie menu gospody 178
- Wyzwanie: Zaawansowane formatowanie menu 179
11. Mapy 181
- Tworzenie map 181
- Dostęp do wartości mapy 183
- Dodawanie elementów do map 183
- Modyfikowanie wartości mapy 186
- Wyzwanie: Wykidajło 190
12. Definiowanie klas 191
- Definiowanie klasy 191
- Tworzenie instancji 191
- Funkcje klasowe 192
- Widoczność i hermetyzacja 194
- Właściwości klas 195
- Akcesory get i set i ich właściwości 197
- Widoczność właściwości 200
- Właściwości obliczane 200
- Refaktoryzacja kodu projektu NyetHack 201
- Stosowanie pakietów 209
- Dla ciekawskich: Bliższe spojrzenie na właściwości var i val 210
- Dla ciekawskich: Zapobieganie występowaniu wyścigu 213
- Dla ciekawskich: prywatny w pakiecie 214
13. Inicjalizacja 217
- Konstruktory 218
- Konstruktory podstawowe 218
- Definiowanie właściwości w konstruktorze podstawowym 219
- Konstruktory dodatkowe 220
- Argumenty domyślne 221
- Argumenty nazwane 222
- Blok inicjalizatora 223
- Inicjalizacja właściwości 224
- Kolejność inicjalizacji 227
- Odraczanie inicjalizacji 228
- Inicjalizacja opóźniona 228
- Inicjalizacja leniwa 229
- Dla ciekawskich: Kruczki inicjalizacji 231
- Wyzwanie: Zagadka Excalibura 233
14. Dziedziczenie 235
- Definiowanie klasy Room 235
- Tworzenie klas pochodnych 236
- Sprawdzanie typów 242
- Hierarchia typów w języku Kotlin 244
- Rzutowanie typów 245
- Inteligentne rzutowanie 246
- Dla ciekawskich: Klasa Any 247
15. Obiekty 249
- Słowo kluczowe object 249
- Deklaracje obiektów 250
- Wyrażenie obiektowe 255
- Obiekty uzupełniające 255
- Klasy zagnieżdżone 256
- Klasy danych 259
- Funkcja toString 260
- Funkcja equals 261
- Funkcja copy 261
- Deklaracje destrukturyzujące 261
- Klasy wyliczeniowe 263
- Przeciążanie operatorów 264
- Eksplorowanie świata NyetHack 266
- Dla ciekawskich: Definiowanie porównań strukturalnych 269
- Dla ciekawskich: Algebraiczne typy danych 271
- Wyzwanie: Polecenie "Wyjdź" 273
- Wyzwanie: Implementacja mapy świata 274
- Wyzwanie: Dzwonimy 274
16. Interfejsy i klasy abstrakcyjne 275
- Definiowanie interfejsów 275
- Implementacja interfejsu 276
- Domyślne implementacje 279
- Klasy abstrakcyjne 279
- Walka w świecie NyetHack 282
17. Typy sparametryzowane 287
- Definiowanie typów sparametryzowanych 287
- Funkcje sparametryzowane 289
- Wiele parametrów typów sparametryzowanych 290
- Ograniczenia typów sparametryzowanych 291
- vararg i get 293
- in i out 295
- Dla ciekawskich: Słowo kluczowe reified 299
18. Rozszerzenia 303
- Definiowanie funkcji rozszerzenia 303
- Definiowanie rozszerzenia dla klasy bazowej 304
- Sparametryzowane funkcje rozszerzeń 305
- Właściwości rozszerzające 307
- Rozszerzenia dla typów akceptujących wartości puste 308
- Funkcje rozszerzeń - za kulisami 309
- Wyodrębnianie kodu do rozszerzeń 310
- Definiowanie plików rozszerzeń 311
- Zmiana nazwy rozszerzenia 313
- Rozszerzenia w standardowej bibliotece Kotlina 314
- Dla ciekawskich: Literały funkcyjne z odbiorcami 315
- Wyzwanie: Funkcja rozszerzenia toDragonSpeak 316
- Wyzwanie: Funkcja rozszerzenia frame 316
19. Podstawy programowania funkcyjnego 319
- Kategorie funkcji 319
- Przekształcenia 319
- Filtry 321
- Złączenia 323
- Dlaczego programowanie funkcyjne? 324
- Sekwencje 325
- Dla ciekawskich: Profilowanie 326
- Dla ciekawskich: Arrow.kt 327
- Wyzwanie: Odwracanie wartości w mapie 328
- Wyzwanie: Zastosowanie programowania funkcyjnego w pliku Tavern.kt 328
- Wyzwanie: Ruchome okno 329
20. Współdziałanie z Javą 331
- Współdziałanie z klasami Javy 331
- Współdziałanie a stosowanie wartości pustych 332
- Odwzorowywanie typów 335
- Akcesory get, set i współdziałanie 337
- Więcej niż tylko klasy 339
- Wyjątki a współdziałanie 347
- Typy funkcyjne w Javie 350
21. Tworzenie w Kotlinie pierwszej aplikacji na Androida 353
- Android Studio 353
- Konfiguracja Gradle 356
- Organizacja projektu 359
- Definiowanie interfejsu użytkownika 359
- Uruchamianie aplikacji w emulatorze 362
- Generowanie postaci 363
- Klasa aktywności 365
- Podłączanie widoków 366
- Syntetyczne właściwości rozszerzeń Kotlina dla Androida 368
- Tworzenie obiektu nasłuchującego kliknięć 370
- Zapisany stan instancji 371
- Odczyt zapisanego stanu instancji 374
- Refaktoryzacja do postaci rozszerzeń 374
- Dla ciekawskich: Biblioteki Kotlin KTX i Anko 377
22. Wprowadzenie do Kotlin Coroutines 379
- Parsowanie danych postaci 379
- Pobieranie rzeczywistych danych 381
- Główny wątek aplikacji na Androida 384
- Włączanie koprocedur 385
- Tworzenie koprocedur przy użyciu funkcji async 385
- Funkcje launch a async i await 387
- Funkcje zawieszające 387
- Wyzwanie: Rzeczywiste dane 388
- Wyzwanie: Minimalna siła 388
23. Posłowie 389
- Co dalej? 389
- Bezwstydna reklama 389
- Dziękujemy! 390
A. Więcej wyzwań 393
- Korzystanie z Exercism 393
Skorowidz 401
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5537-8 |
Rozmiar pliku: | 4,1 MB |