Details zum E-Book

Java dla zupełnie początkujących. Owoce programowania. Wydanie VII

Java dla zupełnie początkujących. Owoce programowania. Wydanie VII

Tony Gaddis

E-book

Od struktur sterujących po obiekty

Java jest rozbudowanym, elastycznym i wszechstronnym, a przy tym dojrzałym językiem programowania. Pozwala na tworzenie kodu dla prawie wszystkich rodzajów komputerów, również tych sterujących pracą najbardziej wyspecjalizowanych urządzeń. Można go używać do pisania dużych systemów, małych programów, aplikacji mobilnych i aplikacji WWW. Jest znakomitym wyborem dla osób, które postanowiły związać swoją przyszłość zawodową z którąś z wielu gałęzi informatyki. Aby optymalnie wykorzystać potencjał drzemiący w Javie, koniecznie trzeba zadbać o solidne podstawy - zarówno w teorii, jak i w praktyce kodowania.

Oto zaktualizowane i uzupełnione wydanie cenionego podręcznika dla studentów. Książka została pomyślana w taki sposób, aby maksymalnie ułatwić naukę Javy krok po kroku i pozwolić na możliwie szybkie rozpoczęcie samodzielnego kodowania. Znalazło się tu wprowadzenie do wiedzy o sprzęcie, oprogramowaniu, wykonywaniu programów i kompilacji kodu. Dzięki temu nawet zupełnie początkujące osoby zaczną płynnie posługiwać się typami danych, zmiennymi czy instrukcjami sterującymi. Bardzo starannie omówiono takie tematy jak klasy, obiekty i dziedziczenie. Nie zabrakło wprowadzenia do pracy z bazami danych, plikami czy też podstaw budowy graficznego interfejsu użytkownika za pomocą nowej biblioteki JavaFX.

W tej książce między innymi:

  • solidne podstawy programowania i wprowadzenie do Javy
  • operacje wejścia-wyjścia, przetwarzanie tekstu oraz obsługa wyjątków
  • rekurencja i jej zastosowanie w rozwiązywaniu problemów
  • praca z animacjami, dźwiękiem i wideo
  • wykorzystanie interfejsu JDBC do pisania aplikacji bazodanowych

Java: zdobądź solidne podstawy i programuj jak mistrz!

 

Przedmowa 21

 

Rozdział 1. Wprowadzenie do komputerów i Javy 31

  • 1.1. Wprowadzenie 31
  • 1.2. Po co programować? 31
  • 1.3. Systemy komputerowe: sprzęt i oprogramowanie 33
    • Sprzęt 33
    • Oprogramowanie 36
  • 1.4. Języki programowania 37
    • Czym jest program? 37
    • Historia języka Java 38
  • 1.5. Z czego składa się program? 40
    • Elementy języka 40
    • Wiersze i instrukcje 42
    • Zmienne 42
    • Kompilator i maszyna wirtualna Javy 43
    • Wersje oprogramowania Java 45
    • Kompilowanie i uruchamianie programów w Javie 46
  • 1.6. Proces programowania 48
    • Inżynieria oprogramowania 50
  • 1.7. Programowanie obiektowe 51
  • Pytania kontrolne i ćwiczenia 53
  • Zadania programistyczne 57

Rozdział 2. Podstawy Javy 59

  • 2.1. Części programu w Javie 59
  • 2.2. Metody print i println oraz interfejs API Javy 65
  • 2.3. Zmienne i literały 70
    • Wyświetlanie wielu elementów za pomocą operatora + 72
    • Zachowaj ostrożność przy cudzysłowach 73
    • Jeszcze o literałach 73
    • Identyfikatory 74
    • Nazwy klas 76
  • 2.4. Proste typy danych 76
    • Całkowitoliczbowe typy danych 78
    • Typy zmiennoprzecinkowe 79
    • Typ danych boolean 82
    • Typ danych char 82
    • Inicjowanie zmiennych i przypisywanie do nich wartości 84
    • Zmienne w danym momencie przechowują tylko jedną wartość 85
  • 2.5. Operatory arytmetyczne 86
    • Dzielenie całkowitoliczbowe 89
    • Pierwszeństwo operatorów 89
    • Grupowanie z użyciem nawiasów 91
    • Klasa Math 94
  • 2.6. Złożone operatory przypisania 95
  • 2.7. Konwersja prostych typów danych na inne takie typy 97
    • Operacja na różnych typach całkowitoliczbowych 99
    • Inne wyrażenia matematyczne z różnymi typami 100
  • 2.8. Tworzenie nazwanych stałych za pomocą słowa kluczowego final 101
  • 2.9. Klasa String 103
    • Obiekty są tworzone na podstawie klas 103
    • Klasa String 104
    • Zmienne typów prostych i zmienne będące instancją klasy 104
    • Tworzenie obiektu typu String 105
  • 2.10. Zasięg 108
  • 2.11. Komentarze 110
  • 2.12. Styl programowania 114
  • 2.13. Wczytywanie danych wejściowych z klawiatury 116
    • Wczytywanie znaków 120
    • Łączenie wywołań metody nextLine z wywołaniami innych metod klasy Scanner 120
  • 2.14. Okna dialogowe 123
    • Wyświetlanie okien dialogowych 124
    • Wyświetlanie okien dialogowych na dane wejściowe 124
    • Przykładowy program 125
    • Przekształcanie tekstowych danych wejściowych na liczby 126
  • 2.15. Typowe błędy, których należy unikać 129
  • Pytania kontrolne i ćwiczenia 131
  • Zadania programistyczne 137

Rozdział 3. Struktury decyzyjne 143

  • 3.1. Instrukcja if 143
    • Używanie operatorów relacji do tworzenia warunków 145
    • Łączenie wszystkich informacji 147
    • Style programowania a instrukcja if 149
    • Uważaj na średniki 149
    • Warunkowe wykonywanie wielu instrukcji 150
    • Flagi 150
    • Porównywanie znaków 151
  • 3.2. Instrukcja if-else 152
  • 3.3. Zagnieżdżone instrukcje if 154
  • 3.4. Instrukcja if-else-if 160
  • 3.5. Operatory logiczne 165
    • Pierwszeństwo operatorów logicznych 170
    • Sprawdzanie przynależności liczb do przedziałów za pomocą operatorów logicznych 171
  • 3.6. Porównywanie obiektów typu String 172
    • Ignorowanie wielkości znaków przy porównywaniu łańcuchów 176
  • 3.7. Jeszcze o deklarowaniu i zasięgu zmiennych 178
  • 3.8. Operator warunkowy (opcjonalny) 179
  • 3.9. Instrukcja switch 180
  • 3.10. Wyświetlanie sformatowanych danych wyjściowych za pomocą instrukcji System.out.printf i String.format 189
    • Składnia specyfikatorów formatowania 192
    • Precyzja 193
    • Określanie minimalnej szerokości pola 194
    • Opcje 196
    • Formatowanie argumentów w postaci łańcuchów znaków 199
    • Metoda String.format 200
  • 3.11. Typowe błędy, których należy unikać 203
  • Pytania kontrolne i ćwiczenia 204
  • Zadania programistyczne 210

Rozdział 4. Pętle i pliki 217

  • 4.1. Operatory inkrementacji i dekrementacji 217
    • Różnice między trybami przyrostkowym i przedrostkowym 219
  • 4.2. Pętla while 221
    • Pętla while jest testowana na początku 223
    • Pętle nieskończone 224
    • Nie zapominaj o umieszczaniu bloku instrukcji w nawiasie klamrowym 225
    • Styl programowania i pętla while 225
  • 4.3. Stosowanie pętli while do sprawdzania poprawności danych wejściowych 227
  • 4.4. Pętla do-while 231
  • 4.5. Pętla for 233
    • Pętla for jest pętlą ze sprawdzaniem wstępnym 237
    • Unikaj modyfikowania zmiennej sterującej w ciele pętli for 237
    • Inne formy wyrażenia aktualizującego 237
    • Deklarowanie zmiennej w wyrażeniu inicjującym pętli for 237
    • Tworzenie pętli for sterowanych przez użytkownika 238
    • Używanie wielu instrukcji w wyrażeniach inicjującym i aktualizującym 239
  • 4.6. Suma bieżąca i wartość wartownika 242
    • Stosowanie wartownika 245
  • 4.7. Pętle zagnieżdżone 247
  • 4.8. Instrukcje break i continue (opcjonalne) 254
  • 4.9. Wybieranie rodzaju pętli 255
  • 4.10. Wprowadzenie do zapisu i odczytu plików 255
    • Stosowanie klasy PrintWriter do zapisu danych w pliku 256
    • Dołączanie danych do pliku 262
    • Określanie lokalizacji pliku 263
    • Odczyt danych z pliku 263
    • Odczyt wierszy pliku za pomocą metody nextLine 264
    • Dodawanie klauzuli throws do nagłówka metody 266
    • Sprawdzanie, czy plik istnieje 270
  • 4.11. Generowanie liczb losowych za pomocą klasy Random 273
  • 4.12. Typowe błędy, których należy unikać 279
  • Pytania kontrolne i ćwiczenia 280
  • Zadania programistyczne 287

Rozdział 5. Metody 295

  • 5.1. Wprowadzenie do metod 295
    • Metody void i metody zwracające wartość 297
    • Definiowanie metody void 297
    • Wywoływanie metody 299
    • Warstwowe wywołania metod 302
    • Używanie komentarzy javadoc do metod 303
  • 5.2. Przekazywanie argumentów do metod 304
    • Zgodność typów danych argumentów i parametrów 307
    • Zasięg parametrów 307
    • Przekazywanie wielu argumentów 307
    • Argumenty są przekazywane przez wartość 309
    • Przekazywanie metodom referencji do obiektów 310
    • Używanie znacznika @param w komentarzach javadoc 313
  • 5.3. Jeszcze o zmiennych lokalnych 315
    • Czas życia zmiennych lokalnych 316
    • Inicjowanie zmiennych lokalnych za pomocą parametrów 316
  • 5.4. Zwracanie wartości przez metody 317
    • Definiowanie metody zwracającej wartość 318
    • Wywoływanie metody zwracającej wartość 319
    • Używanie znacznika @return w komentarzach javadoc 320
    • Zwracanie wartości logicznych 323
    • Zwracanie referencji do obiektu 324
  • 5.5. Rozwiązywanie problemów za pomocą metod 325
    • Wywoływanie metod zgłaszających wyjątki 328
  • 5.6. Typowe błędy, których należy unikać 329
  • Pytania kontrolne i ćwiczenia 330
  • Zadania programistyczne 334

Rozdział 6. Pierwszy kontakt z klasami 343

  • 6.1. Obiekty i klasy 343
    • Klasy: to z nich biorą się obiekty 344
    • Klasy w interfejsie API Javy 345
    • Zmienne typów prostych a obiekty 347
  • 6.2. Pisanie prostej klasy krok po kroku 350
    • Akcesory i mutatory 363
    • Znaczenie ukrywania danych 363
    • Unikanie nieaktualnych danych 363
    • Podawanie specyfikatorów dostępu na diagramach UML 364
    • Zapis typów danych i parametrów na diagramach UML 364
    • Układ składowych klasy 365
  • 6.3. Pola i metody instancji 366
  • 6.4. Konstruktory 370
    • Zapisywanie konstruktorów na diagramach UML 372
    • Niezainicjowane lokalne zmienne referencyjne 372
    • Konstruktor domyślny 373
    • Pisanie własnego konstruktora bezargumentowego 374
    • Konstruktor klasy String 374
  • 6.5. Przekazywanie obiektów jako argumentów 382
  • 6.6. Przeciążanie metod i konstruktorów 393
    • Klasa BankAccount 395
    • Przeciążone metody zwiększają użyteczność klas 400
  • 6.7. Zasięg pól instancji 400
    • Przesłanianie 401
  • 6.8. Pakiety i instrukcje import 402
    • Szczegółowe i ogólne instrukcje import 402
    • Pakiet java.lang 403
    • Inne pakiety z interfejsu API 403
  • 6.9. Projektowanie obiektowe: określanie klas i ich zadań 403
    • Określanie klas 404
    • Określanie zadań klas 408
    • To dopiero początek 411
  • 6.10. Typowe błędy, których należy unikać 411
  • Pytania kontrolne i ćwiczenia 412
  • Zadania programistyczne 417

Rozdział 7. Tablice i klasa ArrayList 427

  • 7.1. Wprowadzenie do tablic 427
    • Dostęp do elementów tablicy 429
    • Zapisywanie i wyświetlanie zawartości tablicy 430
    • Java sprawdza zakres tablicy 433
    • Uważaj na pomyłki o jeden element 434
    • Inicjowanie tablicy 434
    • Różne sposoby deklarowania tablic 435
  • 7.2. Przetwarzanie elementów tablic 437
    • Długość tablicy 439
    • Pętla for dla kolekcji 439
    • Umożliwianie użytkownikom określania wielkości tablicy 441
    • Przypisywanie nowych tablic do tablicowych zmiennych referencyjnych 442
    • Kopiowanie tablic 443
  • 7.3. Przekazywanie tablic jako argumentów metod 445
  • 7.4. Wybrane przydatne algorytmy i operacje tablicowe 448
    • Sumowanie wartości w tablicy liczb 449
    • Obliczanie średniej wartości z tablicy liczb 449
    • Wyszukiwanie największej i najmniejszej wartości w tablicy liczb 450
    • Klasa SalesData 451
    • Częściowo zapełnione tablice 458
    • Praca z tablicami i plikami 459
  • 7.5. Zwracanie tablic przez metody 460
  • 7.6. Tablice typu String 461
    • Wywoływanie metod typu String za pomocą elementów tablicy 464
  • 7.7. Tablice obiektów 464
  • 7.8. Algorytm wyszukiwania sekwencyjnego 467
  • 7.9. Tablice dwuwymiarowe 469
    • Inicjowanie tablicy dwuwymiarowej 473
    • Pole length w tablicy dwuwymiarowej 474
    • Wyświetlanie wszystkich elementów tablicy dwuwymiarowej 475
    • Sumowanie wszystkich elementów tablicy dwuwymiarowej 476
    • Sumowanie wartości wierszy tablicy dwuwymiarowej 477
    • Sumowanie kolumn tablicy dwuwymiarowej 477
    • Przekazywanie tablic dwuwymiarowych do metod 478
    • Tablice z wierszami o różnej długości 479
  • 7.10. Tablice o co najmniej trzech wymiarach 480
  • 7.11. Algorytm sortowania przez wybieranie i wyszukiwania binarnego 481
    • Algorytm sortowania przez wybieranie 481
    • Algorytm wyszukiwania binarnego 484
  • 7.12. Argumenty podawane w wierszu poleceń i listy argumentów o zmiennej długości 486
    • Argumenty w wierszu poleceń 487
    • Listy argumentów o zmiennej długości 488
  • 7.13. Klasa ArrayList 490
    • Tworzenie i używanie obiektów typu ArrayList 491
    • Używanie pętli for dla kolekcji do obiektów typu ArrayList 492
    • Metoda toString klasy ArrayList 493
    • Usuwanie elementów z obiektu typu ArrayList 494
    • Wstawianie elementu 495
    • Zastępowanie elementu 496
    • Pojemność 496
    • Zapisywanie własnych obiektów w obiektach typu ArrayList 497
  • 7.14. Typowe błędy, których należy unikać 498
  • Pytania kontrolne i ćwiczenia 499
  • Zadania programistyczne 504

Rozdział 8. Jeszcze o klasach i obiektach 513

  • 8.1. Statyczne składowe klasy 513
    • Krótkie omówienie pól i metod instancji 513
    • Składowe statyczne 514
    • Pola statyczne 514
    • Metody statyczne 516
  • 8.2. Przekazywanie obiektów jako argumentów metod 519
  • 8.3. Zwracanie obiektów przez metody 522
  • 8.4. Metoda toString 524
  • 8.5. Pisanie metody equals 528
  • 8.6. Metody kopiujące obiekty 530
    • Konstruktory kopiujące 532
  • 8.7. Agregowanie 533
    • Agregacja na diagramach UML 539
    • Problemy z bezpieczeństwem dotyczące klas agregujących 539
    • Unikaj stosowania referencji null 542
  • 8.8. Zmienna referencyjna this 545
    • Używanie słowa kluczowego this do zapobiegania przesłanianiu 545
    • Używanie słowa kluczowego this do wywoływania przeciążonego konstruktora w innym konstruktorze 546
  • 8.9. Typy wyliczeniowe 547
    • Typy wyliczeniowe są wyspecjalizowanymi klasami 548
    • Używanie typu wyliczeniowego w instrukcji switch 553
  • 8.10. Przywracanie pamięci 555
    • Metoda finalize 556
  • 8.11. Koncentracja na projektowaniu obiektowym - współdziałanie klas 557
    • Opisywanie współdziałania klas za pomocą kart CRC 559
  • 8.12. Typowe błędy, których należy unikać 561
  • Pytania kontrolne i ćwiczenia 561
  • Zadania programistyczne 566

Rozdział 9. Przetwarzanie tekstu i klasy nakładkowe 573

  • 9.1. Wprowadzenie do klas nakładkowych 573
  • 9.2. Sprawdzanie i konwersja znaków za pomocą klasy Character 574
    • Zmiana wielkości znaków 579
  • 9.3. Inne metody klasy String 581
    • Wyszukiwanie podłańcuchów 581
    • Pobieranie podłańcuchów 587
    • Metody zwracające zmodyfikowany obiekt typu String 590
    • Statyczne metody valueOf 592
  • 9.4. Klasa StringBuilder 594
    • Konstruktory klasy StringBuilder 595
    • Inne metody klasy StringBuilder 596
    • Metoda toString 599
  • 9.5. Rozdzielanie łańcuchów znaków 604
  • 9.6. Klasy nakładkowe dla liczbowych typów danych 608
    • Statyczne metody toString 608
    • Metody toBinaryString, toHexString i toOctalString 608
    • Stałe MIN_VALUE i MAX_VALUE 609
    • Automatyczna konwersja na klasę i na typ prosty 609
  • 9.7. Rozwiązywanie problemów - klasa TestScoreReader 611
  • 9.8. Typowe błędy, których należy unikać 614
  • Pytania kontrolne i ćwiczenia 615
  • Zadania programistyczne 619

Rozdział 10. Dziedziczenie 627

  • 10.1. Czym jest dziedziczenie? 627
    • Uogólnianie i specjalizacja 627
    • Dziedziczenie to relacja "jest czymś" 628
    • Dziedziczenie na diagramach UML 635
    • Konstruktor klasy bazowej 635
    • Dziedziczenie nie działa w drugą stronę 637
  • 10.2. Wywoływanie konstruktora klasy bazowej 638
    • Co się dzieje, gdy klasa bazowa nie ma konstruktora domyślnego ani bezargumentowego? 644
    • Streszczenie zagadnień związanych z konstruktorami w kontekście dziedziczenia 644
  • 10.3. Przesłanianie metod klasy bazowej 646
    • Przeciążanie a przesłanianie 650
    • Zapobieganie przesłanianiu metody 653
  • 10.4. Składowe chronione 653
    • Dostęp na poziomie pakietu 658
  • 10.5. Łańcuchy dziedziczenia 659
    • Hierarchie klas 663
  • 10.6. Klasa Object 665
  • 10.7. Polimorfizm 667
    • Polimorfizm i wiązanie dynamiczne 668
    • Relacja "jest czymś" nie działa w drugą stronę 670
    • Operator instanceof 670
  • 10.8. Klasy i metody abstrakcyjne 671
    • Klasy abstrakcyjne na diagramach UML 677
  • 10.9. Interfejsy 677
    • Interfejs jest kontraktem 679
    • Pola w interfejsach 682
    • Implementowanie wielu interfejsów 683
    • Interfejsy na diagramach UML 683
    • Metody domyślne 683
    • Polimorfizm i interfejsy 685
  • 10.10. Anonimowe klasy wewnętrzne 690
  • 10.11. Interfejsy funkcyjne i wyrażenia lambda 693
  • 10.12. Typowe błędy, których należy unikać 697
  • Pytania kontrolne i ćwiczenia 698
  • Zadania programistyczne 705

Rozdział 11. Wyjątki i zaawansowane plikowe operacje wejścia-wyjścia 711

  • 11.1. Obsługa wyjątków 711
    • Klasy wyjątków 712
    • Obsługa wyjątków 713
    • Pobieranie domyślnego komunikatu o błędzie 717
    • Polimorficzne referencje do wyjątków 719
    • Używanie wielu klauzul catch do obsługi wielu wyjątków 719
    • Klauzula finally 726
    • Ślad stosu 727
    • Obsługa wielu wyjątków za pomocą jednej klauzuli catch 729
    • Co się dzieje, gdy wyjątek nie zostaje przechwycony? 731
    • Wyjątki kontrolowane i niekontrolowane 731
  • 11.2. Zgłaszanie wyjątków 733
    • Tworzenie własnych klas wyjątków 736
    • Używanie znacznika @exception w komentarzach javadoc 738
  • 11.3. Zagadnienia zaawansowane: pliki binarne, pliki z dostępem swobodnym i serializowanie obiektów 739
    • Pliki binarne 739
    • Pliki o dostępie swobodnym 745
    • Serializowanie obiektów 751
    • Serializowanie obiektów zagregowanych 754
  • 11.4. Typowe błędy, których należy unikać 755
  • Pytania kontrolne i ćwiczenia 756
  • Zadania programistyczne 761

Rozdział 12. JavaFX: programowanie interfejsu GUI i podstawowe kontrolki 765

  • 12.1. Graficzne interfejsy użytkownika 765
    • Programy z interfejsem GUI sterowanym zdarzeniami 766
  • 12.2. Wprowadzenie do biblioteki JavaFX 768
    • Kontrolki 768
    • Płótno i sceny 769
    • Klasa Application 770
  • 12.3. Tworzenie scen 772
    • Tworzenie kontrolek 773
    • Tworzenie kontenerów 773
    • Tworzenie obiektów typu Scene 774
    • Dodawanie obiektu typu Scene do płótna 775
    • Określanie wielkości sceny 777
    • Wyrównywanie kontrolek w kontenerze HBox 777
  • 12.4. Wyświetlanie grafiki 779
    • Wczytywanie grafiki z internetu 782
    • Określanie wielkości grafiki 782
    • Zachowywanie proporcji obrazu 783
    • Modyfikowanie obrazu powiązanego z obiektem typu ImageView 783
  • 12.5. Jeszcze o kontenerach HBox, VBox i GridPane 784
    • Kontener typu HBox 784
    • Kontener typu VBox 789
    • Kontener typu GridPane 791
    • Używanie wielu kontenerów na jednym ekranie 797
  • 12.6. Przyciski i zdarzenia 798
    • Obsługa zdarzeń 800
    • Pisanie obiektów obsługi zdarzeń 801
    • Rejestrowanie obiektu obsługi zdarzeń 801
  • 12.7. Wczytywanie danych za pomocą kontrolki typu TextField 805
  • 12.8. Używanie anonimowych klas wewnętrznych i wyrażeń lambda do obsługi zdarzeń 809
    • Używanie anonimowych klas wewnętrznych do tworzenia obiektów obsługi zdarzeń 809
    • Używanie wyrażeń lambda do tworzenia obiektów obsługi zdarzeń 811
  • 12.9. Kontener typu BorderPane 814
  • 12.10. Interfejs ObservableList 817
  • 12.11. Typowe błędy, których należy unikać 819
  • Pytania kontrolne i ćwiczenia 819
  • Zadania programistyczne 823

Rozdział 13. JavaFX: zaawansowane kontrolki 829

  • 13.1. Dodawanie stylów aplikacji opartych na bibliotece JavaFX za pomocą arkuszy CSS 829
    • Nazwy selektorów typów 830
    • Właściwości w stylach 831
    • Stosowanie arkuszy stylów do aplikacji opartych na bibliotece JavaFX 833
    • Stosowanie stylów do węzła korzenia 836
    • Podawanie kilku selektorów w jednej definicji stylu 838
    • Praca z kolorami 838
    • Tworzenie niestandardowej klasy stylu 840
    • Selektory identyfikatorów 842
    • Wewnątrzwierszowe reguły stylów 842
  • 13.2. Kontrolki typu RadioButton 844
    • Sprawdzanie w kodzie, czy dana kontrolka typu RadioButton jest zaznaczona 845
    • Zaznaczanie kontrolki typu RadioButton w kodzie 845
    • Reagowanie na kliknięcie kontrolki typu RadioButton 850
  • 13.3. Kontrolki typu CheckBox 853
    • Sprawdzanie w kodzie, czy kontrolka typu CheckBox jest zaznaczona 854
    • Zaznaczanie kontrolki typu CheckBox za pomocą kodu 854
    • Reagowanie na kliknięcie kontrolki typu CheckBox 857
  • 13.4. Kontrolki typu ListView 858
    • Pobieranie zaznaczonego elementu 859
    • Pobieranie indeksu zaznaczonego elementu 861
    • Reagowanie na zaznaczenie elementu za pomocą obiektu obsługi zdarzeń 862
    • Dodawanie elementów a ustawianie elementów 864
    • Inicjowanie kontrolki typu ListView za pomocą tablicy lub obiektu typu ArrayList 864
    • Tryby zaznaczania elementów 866
    • Pobieranie wielu zaznaczonych elementów 867
    • Używanie elementów z listy typu ObservableList 869
    • Przekształcanie listy typu ObservableList na tablicę 870
    • Używanie kodu do zaznaczania elementu w kontrolce typu ListView 871
    • Układ kontrolki typu ListView 871
    • Tworzenie kontrolek typu ListView z elementami typów innych niż String 872
  • 13.5. Kontrolki typu ComboBox 877
    • Pobieranie zaznaczonego elementu 879
    • Reagowanie na zaznaczenie elementu w kontrolce typu ComboBox 880
    • Kontrolki typu ComboBox umożliwiające modyfikacje 881
  • 13.6. Kontrolki typu Slider 882
  • 13.7. Kontrolki typu TextArea 888
  • 13.8. Menu 890
    • Przypisywanie klawiszy skrótu do opcji menu 897
  • 13.9. Klasa FileChooser 899
    • Wyświetlanie okna dialogowego typu FileChooser 899
  • 13.10. Używanie danych wyjściowych w konsoli do debugowania aplikacji z interfejsem GUI 901
  • 13.11. Typowe błędy, których należy unikać 904
  • Pytania kontrolne i ćwiczenia 904
  • Zadania programistyczne 909

Rozdział 14. JavaFX: grafika, efekty i multimedia 913

  • 14.1. Rysowanie kształtów 913
    • Układ współrzędnych ekranu 913
    • Klasa Shape i jej podklasy 914
    • Klasa Line 915
    • Zmienianie koloru pędzla 917
    • Klasa Circle 918
    • Klasa Rectangle 921
    • Klasa Ellipse 924
    • Klasa Arc 928
    • Klasa Polygon 931
    • Klasa Polyline 934
    • Klasa Text 936
    • Obracanie węzłów 938
    • Skalowanie węzłów 940
  • 14.2. Animacje 942
    • Klasa TranslateTransition 943
    • Klasa RotateTransition 946
    • Klasa ScaleTransition 950
    • Klasa StrokeTransition 953
    • Klasa FillTransition 954
    • Klasa FadeTransition 955
    • Sterowanie animacją 956
    • Wybieranie mechanizmu interpolacji 958
  • 14.3. Efekty 959
    • Klasa DropShadow 960
    • Klasa InnerShadow 961
    • Klasa ColorAdjust 963
    • Klasy BoxBlur, GaussianBlur i MotionBlur 964
    • Klasa SepiaTone 967
    • Klasa Glow 967
    • Klasa Reflection 967
    • Łączenie efektów 968
  • 14.4. Odtwarzanie plików dźwiękowych 970
    • Rejestrowanie obiektu obsługi zdarzenia EndOfMedia 972
  • 14.5. Odtwarzanie filmów 975
  • 14.6. Obsługa zdarzeń związanych z klawiszami 980
    • Stosowanie anonimowej klasy wewnętrznej do rejestrowania obiektu obsługi zdarzeń dla sceny 981
    • Używanie wyrażeń lambda do rejestrowania obiektów obsługi zdarzeń dla sceny 981
  • 14.7. Obsługa zdarzeń związanych z myszą 986
  • 14.8. Typowe błędy, których należy unikać 991
  • Pytania kontrolne i ćwiczenia 992
  • Zadania programistyczne 995

Rozdział 15. Rekurencja 999

  • 15.1. Wprowadzenie do rekurencji 999
  • 15.2. Rozwiązywanie problemów za pomocą rekurencji 1002
    • Rekurencja bezpośrednia i pośrednia 1006
  • 15.3. Przykładowe metody rekurencyjne 1006
    • Sumowanie przedziału elementów tablicy za pomocą rekurencji 1006
    • Rysowanie koncentrycznych kół 1008
    • Ciąg Fibonacciego 1010
    • Znajdowanie największego wspólnego dzielnika 1011
  • 15.4. Rekurencyjne wyszukiwanie binarne 1012
  • 15.5. Wieże Hanoi 1015
  • 15.6. Typowe błędy, których należy unikać 1019
  • Pytania kontrolne i ćwiczenia 1020
  • Zadania programistyczne 1023

Rozdział 16. Bazy danych 1025

  • 16.1. Wprowadzenie do systemów zarządzania bazami danych 1025
    • JDBC 1027
    • SQL 1027
    • Używanie systemu DBMS 1028
    • Java DB i Apache Derby 1028
    • Tworzenie bazy danych CoffeeDB 1028
    • Nawiązywanie połączenia z bazą CoffeeDB 1029
    • Łączenie się z bazą chronioną hasłem 1031
  • 16.2. Tabele, wiersze i kolumny 1032
    • Typy danych kolumn 1033
    • Klucze główne 1034
  • 16.3. Wprowadzenie do instrukcji SQL SELECT 1035
    • Przekazywanie instrukcji SQL-owych do systemu DBMS 1036
    • Określanie kryteriów wyszukiwania za pomocą klauzuli WHERE 1045
    • Sortowanie wyników zapytania SELECT 1051
    • Funkcje matematyczne 1052
  • 16.4. Wstawianie wierszy 1055
    • Wstawianie wierszy za pomocą technologii JDBC 1057
  • 16.5. Aktualizowanie i usuwanie istniejących wierszy 1058
    • Aktualizowanie wierszy za pomocą technologii JDBC 1059
    • Usuwanie wierszy za pomocą instrukcji DELETE 1063
    • Usuwanie wierszy za pomocą technologii JDBC 1063
  • 16.6. Tworzenie i usuwanie tabel 1066
    • Usuwanie tabel za pomocą instrukcji DROP TABLE 1069
  • 16.7. Tworzenie nowej bazy danych za pomocą technologii JDBC 1069
  • 16.8. Przewijalne zbiory wyników 1071
  • 16.9. Metadane zbioru wyników 1073
  • 16.10. Dane relacyjne 1078
    • Złączanie danych z wielu tabel 1081
    • System wprowadzania zamówień 1082
  • 16.11. Zaawansowane zagadnienia 1092
    • Transakcje 1092
    • Procedury składowane 1094
  • 16.12. Typowe błędy, których należy unikać 1094
  • Pytania kontrolne i ćwiczenia 1095
  • Zadania programistyczne 1100

Dodatek A. Odpowiedzi do punktów kontrolnych 1103

Dodatek B. Odpowiedzi na nieparzyste pytania kontrolne 1131

Skorowidz 1159

  • Titel: Java dla zupełnie początkujących. Owoce programowania. Wydanie VII
  • Autor: Tony Gaddis
  • Originaler Titel: Starting Out with Java: From Control Structures through Objects (7th Edition)
  • Übersetzung: Tomasz Walczak
  • ISBN: 978-83-283-4830-1, 9788328348301
  • Veröffentlichungsdatum: 2019-08-06
  • Format: E-book
  • Artikelkennung: javzp2
  • Verleger: Helion