Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00948 013557 11050840 na godz. na dobę w sumie
Java. Podstawy. Wydanie VIII - książka
Java. Podstawy. Wydanie VIII - książka
Autor: , Liczba stron: 888
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-1478-3 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> java - programowanie
Porównaj ceny (książka, ebook (-80%), audiobook).

Zacznij tworzyć niezależne od platformy aplikacje jeszcze dziś!

Język programowania Java został stworzony i jest rozwijany przez firmę Sun Microsystems. Możliwość zastosowania go na różnych platformach została doceniona przez wielu programistów na świecie. Jednak nie jest to jedyna mocna strona Javy. Warto tu wskazać również jej silne ukierunkowanie na obiektowość, obsługę programowania rozproszonego, mechanizm automatycznego oczyszczania pamięci (ang. garbage collection). Dzięki swoim atutom, dobrej dokumentacji i licznych publikacjom Java jest dziś wiodącym rozwiązaniem na rynku języków programowania.

Książka 'Java. Podstawy. Wydanie VIII' została zaktualizowana o wszystkie te elementy, które pojawiły się w wersji szóstej platformy Java Standard Edition. Tom pierwszy -- 'Podstawy' -- zawiera wprowadzenie do języka programowania Java. Autorzy książki przedstawią tu założenia przyjęte przez firmę Sun przy tworzeniu tej platformy. Dowiesz się, jakie prawa rządzą programowaniem obiektowym oraz jak wykorzystać interfejsy i obsługę wyjątków. Dodatkowo będziesz mieć możliwość zapoznania się z elementami projektowania i tworzenia interfejsu użytkownika. W ostatnim rozdziale autorzy omówią wielowątkowość oraz sposób zastosowania tego typu rozwiązań w codziennej pracy programisty języka Java.

Wykorzystaj siłę obiektów. Programowanie obiektowe w języku Java ma przyszłość!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Java. Podstawy. Wydanie VIII Autor: Cay S. Horstmann, Gary Cornell T‡umaczenie: £ukasz Piwko ISBN: 978-83-246-1478-3 Tytu‡ orygina‡u: Core Java(TM), Volume I--Fundamentals (8th Edition) Format: 172x245, stron: 888 Zacznij tworzy(cid:230) niezale¿ne od platformy aplikacje jeszcze dzi(cid:156)! (cid:149) Jakie nowo(cid:156)ci kryj„ siŒ w Java Standard Edition 6? (cid:149) Jak rozpocz„(cid:230) przygodŒ z jŒzykiem Java? (cid:149) Jak wykorzysta(cid:230) wielow„tkowo(cid:156)(cid:230)? JŒzyk programowania Java zosta‡ stworzony i jest rozwijany przez firmŒ Sun Microsystems. Mo¿liwo(cid:156)(cid:230) zastosowania go na r(cid:243)¿nych platformach zosta‡a doceniona przez wielu programist(cid:243)w na (cid:156)wiecie. Jednak nie jest to jedyna mocna strona Javy. Warto tu wskaza(cid:230) r(cid:243)wnie¿ jej silne ukierunkowanie na obiektowo(cid:156)(cid:230), obs‡ugŒ programowania rozproszonego, mechanizm automatycznego oczyszczania pamiŒci (ang. garbage collection). DziŒki swoim atutom, dobrej dokumentacji i licznych publikacjom Java jest dzi(cid:156) wiod„cym rozwi„zaniem na rynku jŒzyk(cid:243)w programowania. Ksi„¿ka (cid:132)Java. Podstawy. Wydanie VIII(cid:148) zosta‡a zaktualizowana o wszystkie te elementy, kt(cid:243)re pojawi‡y siŒ w wersji sz(cid:243)stej platformy Java Standard Edition. Tom pierwszy (cid:151) (cid:132)Podstawy(cid:148) (cid:151) zawiera wprowadzenie do jŒzyka programowania Java. Autorzy ksi„¿ki przedstawi„ tu za‡o¿enia przyjŒte przez firmŒ Sun przy tworzeniu tej platformy. Dowiesz siŒ, jakie prawa rz„dz„ programowaniem obiektowym oraz jak wykorzysta(cid:230) interfejsy i obs‡ugŒ wyj„tk(cid:243)w. Dodatkowo bŒdziesz mie(cid:230) mo¿liwo(cid:156)(cid:230) zapoznania siŒ z elementami projektowania i tworzenia interfejsu u¿ytkownika. W ostatnim rozdziale autorzy om(cid:243)wi„ wielow„tkowo(cid:156)(cid:230) oraz spos(cid:243)b zastosowania tego typu rozwi„zaæ w codziennej pracy programisty jŒzyka Java. (cid:149) Podstawy jŒzyka Java (cid:151) Programowanie obiektowe (cid:151) Interfejsy (cid:151) Spos(cid:243)b u¿ycia klas proxy oraz klas wewnŒtrznych (cid:151) Projektowanie interfejsu u¿ytkownika z wykorzystaniem biblioteki Swing (cid:151) Obs‡uga wyj„tk(cid:243)w (cid:151) Wykrywanie i rozwi„zywanie problem(cid:243)w w kodzie (cid:151) Wielow„tkowo(cid:156)(cid:230) Wykorzystaj si‡Œ obiekt(cid:243)w. Programowanie obiektowe w jŒzyku Java ma przysz‡o(cid:156)(cid:230)! Wydawnictwo Helion ul. Ko(cid:156)ciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl Spis treÊci PodziÂkowania .........................................................................................................................................13 WstÂp ........................................................................................................................................................15 RozdziaÄ 1. WstÂp do Javy ........................................................................................................................21 Java jako platforma programistyczna .............................................................................. 21 Säowa klucze biaäej ksiögi Javy ...................................................................................... 22 Prosty .................................................................................................................... 23 Zorientowany obiektowo .......................................................................................... 23 Sieciowy ................................................................................................................. 24 Niezawodny ............................................................................................................ 24 Bezpieczny ............................................................................................................. 25 NiezaleĔny od architektury ....................................................................................... 26 PrzenoĈny .............................................................................................................. 26 Interpretowany ........................................................................................................ 27 Wysokowydajny ....................................................................................................... 27 Wielowñtkowy ......................................................................................................... 27 Dynamiczny ............................................................................................................ 28 Aplety Javy i internet ..................................................................................................... 28 Krótka historia Javy ...................................................................................................... 30 Gäówne nieporozumienia dotyczñce Javy ......................................................................... 32 RozdziaÄ 2. Érodowisko programistyczne Javy ...................................................................................37 Instalacja oprogramowania Java Development Kit ........................................................... 38 Pobieranie pakietu JDK ........................................................................................... 38 Ustawianie ĈcieĔki dostöpu ...................................................................................... 40 Instalacja bibliotek i dokumentacji ............................................................................ 41 Instalacja przykäadowych programów ......................................................................... 42 Drzewo katalogów Javy ............................................................................................ 43 Wybór Ĉrodowiska programistycznego ............................................................................ 44 UĔywanie narzödzi wiersza poleceþ ................................................................................ 44 Rozwiñzywanie problemów ....................................................................................... 46 4 Java. Podstawy Praca w zintegrowanym Ĉrodowisku programistycznym .................................................... 47 Znajdowanie bäödów kompilacji ................................................................................ 50 Uruchamianie aplikacji graficznej ................................................................................... 51 Tworzenie i uruchamianie apletów ................................................................................. 53 RozdziaÄ 3. Podstawowe elementy jÂzyka Java ....................................................................................59 Prosty program w Javie ................................................................................................. 60 Komentarze ................................................................................................................. 63 Typy danych ................................................................................................................. 64 Typy caäkowite ........................................................................................................ 64 Typy zmiennoprzecinkowe ........................................................................................ 65 Typ char ................................................................................................................. 66 Typ boolean ............................................................................................................ 68 Zmienne ...................................................................................................................... 69 Inicjacja zmiennych ................................................................................................. 70 Staäe ...................................................................................................................... 70 Operatory .................................................................................................................... 71 Operatory inkrementacji i dekrementacji ................................................................... 72 Operatory relacyjne i logiczne ................................................................................... 73 Operatory bitowe ..................................................................................................... 74 Funkcje i staäe matematyczne .................................................................................. 75 Konwersja typów numerycznych ................................................................................ 76 Rzutowanie ............................................................................................................. 77 Nawiasy i priorytety operatorów ................................................................................ 78 Typ wyliczeniowy ..................................................................................................... 79 ãaþcuchy ..................................................................................................................... 79 Podäaþcuchy ........................................................................................................... 79 Konkatenacja ......................................................................................................... 80 ãaþcuchów nie moĔna modyfikowaè .......................................................................... 80 Porównywanie äaþcuchów ......................................................................................... 82 Wspóärzödne kodowe znaków i jednostki kodowe ....................................................... 83 API String ............................................................................................................... 84 Dokumentacja API w internecie ................................................................................ 86 Skäadanie äaþcuchów ............................................................................................... 87 WejĈcie i wyjĈcie .......................................................................................................... 90 Odbieranie danych wejĈciowych ................................................................................ 90 Formatowanie danych wyjĈciowych ........................................................................... 93 Zapis do pliku i odczyt ............................................................................................. 97 Przepäyw sterowania ..................................................................................................... 99 Zasiög blokowy ....................................................................................................... 99 Instrukcje warunkowe ............................................................................................ 100 Pötle .................................................................................................................... 102 Pötle o okreĈlonej liczbie powtórzeþ ....................................................................... 107 Wybór wielokierunkowy — instrukcja switch ............................................................ 110 Instrukcje przerywajñce przepäyw sterowania ........................................................... 112 Wielkie liczby ............................................................................................................. 115 Tablice ...................................................................................................................... 118 Pötla typu for each ................................................................................................ 119 Inicjowanie tablic i tworzenie tablic anonimowych .................................................... 120 Kopiowanie tablicy ................................................................................................ 120 Parametry wiersza poleceþ .................................................................................... 122 Spis treÊci 5 Sortowanie tablicy ................................................................................................. 123 Tablice wielowymiarowe ......................................................................................... 127 Tablice postrzöpione ............................................................................................. 130 RozdziaÄ 4. Obiekty i klasy .....................................................................................................................133 Wstöp do programowania zorientowanego obiektowo .................................................... 134 Klasy ................................................................................................................... 134 Obiekty ................................................................................................................ 136 Identyfikacja klas .................................................................................................. 136 Relacje miödzy klasami ......................................................................................... 137 UĔywanie klas predefiniowanych .................................................................................. 139 Obiekty i zmienne obiektów .................................................................................... 139 Klasa GregorianCalendar ....................................................................................... 142 Metody udostöpniajñce i zmieniajñce wartoĈè elementu ........................................... 144 Definiowanie wäasnych klas ......................................................................................... 150 Klasa Employee .................................................................................................... 151 Stosowanie kilku plików Ēródäowych ........................................................................ 154 Analiza klasy Employee ......................................................................................... 154 Pierwsze kroki w tworzeniu konstruktorów ............................................................... 155 Parametry jawne i niejawne .................................................................................... 156 KorzyĈci z hermetyzacji .......................................................................................... 157 Przywileje klasowe ................................................................................................ 159 Metody prywatne ................................................................................................... 160 Staäe jako pola klasy ............................................................................................. 161 Pola i metody statyczne .............................................................................................. 161 Pola statyczne ...................................................................................................... 161 Staäe statyczne ..................................................................................................... 162 Metody statyczne .................................................................................................. 163 Metody fabrykujñce ............................................................................................... 164 Metoda main ........................................................................................................ 165 Parametry metod ........................................................................................................ 167 Konstruowanie obiektów ............................................................................................. 173 PrzeciñĔanie ......................................................................................................... 173 Inicjacja pól wartoĈciami domyĈlnymi ...................................................................... 174 Konstruktor domyĈlny ............................................................................................ 175 Jawna inicjacja pól ................................................................................................ 175 Nazywanie parametrów .......................................................................................... 176 Wywoäywanie innego konstruktora .......................................................................... 177 Bloki inicjujñce ...................................................................................................... 178 Niszczenie obiektów i metoda finalize ..................................................................... 182 Pakiety ...................................................................................................................... 182 Importowanie klas ................................................................................................. 183 Importy statyczne .................................................................................................. 185 Dodawanie klasy do pakietu .................................................................................. 185 Zasiög pakietów .................................................................................................... 188 ćcieĔka klas .............................................................................................................. 190 Ustawianie ĈcieĔki klas ......................................................................................... 192 Komentarze dokumentacyjne ...................................................................................... 193 Wstawianie komentarzy ......................................................................................... 193 Komentarze do klas .............................................................................................. 194 Komentarze do metod ........................................................................................... 194 6 Java. Podstawy Komentarze do pól ................................................................................................ 195 Komentarze ogólne ............................................................................................... 195 Komentarze do pakietów i ogólne ........................................................................... 197 Generowanie dokumentacji .................................................................................... 197 Porady dotyczñce projektowania klas ........................................................................... 198 RozdziaÄ 5. Dziedziczenie .......................................................................................................................201 Klasy, nadklasy i podklasy .......................................................................................... 202 Hierarchia dziedziczenia ........................................................................................ 208 Polimorfizm .......................................................................................................... 208 Wiñzanie dynamiczne ............................................................................................ 210 Wyäñczanie dziedziczenia — klasy i metody finalne .................................................. 213 Rzutowanie ........................................................................................................... 214 Klasy abstrakcyjne ................................................................................................ 216 Dostöp chroniony .................................................................................................. 221 Klasa bazowa Object .................................................................................................. 222 Metoda equals ..................................................................................................... 223 Porównywanie a dziedziczenie ................................................................................ 224 Metoda hashCode ................................................................................................. 227 Metoda toString .................................................................................................... 229 Generyczne listy tablicowe .......................................................................................... 234 Dostöp do elementów listy tablicowej ..................................................................... 237 ZgodnoĈè pomiödzy typowanymi a surowymi listami tablicowymi ............................... 241 Osäony obiektów i autoboxing ...................................................................................... 242 Metody ze zmiennñ liczbñ parametrów ......................................................................... 245 Klasy wyliczeniowe ..................................................................................................... 246 Refleksja ................................................................................................................... 248 Klasa Class .......................................................................................................... 249 Podstawy przechwytywania wyjñtków ....................................................................... 251 Zastosowanie refleksji w analizie funkcjonalnoĈci klasy ............................................ 253 Refleksja w analizie obiektów w czasie dziaäania programu ....................................... 258 Zastosowanie refleksji w generycznym kodzie tablicowym ......................................... 263 WskaĒniki do metod .............................................................................................. 267 Porady projektowe dotyczñce dziedziczenia ................................................................... 270 RozdziaÄ 6. Interfejsy i klasy wewnÂtrzne ..........................................................................................273 Interfejsy ................................................................................................................... 274 WäasnoĈci interfejsów ............................................................................................ 279 Interfejsy a klasy abstrakcyjne ............................................................................... 280 Klonowanie obiektów .................................................................................................. 281 Interfejsy a sprzöĔenie zwrotne .................................................................................... 287 Klasy wewnötrzne ....................................................................................................... 290 Dostöp do stanu obiektu w klasie wewnötrznej ........................................................ 292 Specjalne reguäy skäadniowe dotyczñce klas wewnötrznych ....................................... 295 Czy klasy wewnötrzne sñ potrzebne i bezpieczne? .................................................... 296 Lokalne klasy wewnötrzne ..................................................................................... 298 Dostöp do zmiennych finalnych z metod zewnötrznych .............................................. 299 Anonimowe klasy wewnötrzne ................................................................................ 301 Statyczne klasy wewnötrzne ................................................................................... 304 Klasy proxy ................................................................................................................ 307 WäasnoĈci klas proxy ............................................................................................. 311 Spis treÊci 7 RozdziaÄ 7. Grafika .................................................................................................................................313 Wprowadzenie do pakietu Swing .................................................................................. 314 Tworzenie ramki ......................................................................................................... 317 Pozycjonowanie ramki ................................................................................................. 320 WäasnoĈci ramek .................................................................................................. 322 OkreĈlanie rozmiaru ramki ..................................................................................... 323 WyĈwietlanie informacji w komponencie ....................................................................... 327 Figury 2W .................................................................................................................. 331 Kolory ....................................................................................................................... 339 Czcionki .................................................................................................................... 343 WyĈwietlanie obrazów ................................................................................................. 351 RozdziaÄ 8. ObsÄuga zdarzeÆ .................................................................................................................355 Podstawy obsäugi zdarzeþ ........................................................................................... 355 Przykäad — obsäuga klikniöcia przycisku .................................................................. 357 Nabywanie biegäoĈci w posäugiwaniu siö klasami wewnötrznymi ................................ 362 Tworzenie säuchaczy zawierajñcych jedno wywoäanie metody ..................................... 365 Przykäad — zmiana stylu ........................................................................................ 366 Klasy adaptacyjne ................................................................................................. 370 Akcje ......................................................................................................................... 374 Zdarzenia generowane przez mysz ............................................................................... 381 Hierarchia zdarzeþ w bibliotece AWT ............................................................................ 388 Zdarzenia semantyczne i niskiego poziomu ............................................................. 390 RozdziaÄ 9. Komponenty Swing interfejsu uÑytkownika .....................................................................393 Swing a wzorzec projektowy Model-View-Controller ........................................................ 394 Wzorce projektowe ................................................................................................ 394 Wzorzec Model-View-Controller ............................................................................... 395 Analiza MVC przycisków Swing ............................................................................... 399 Wprowadzenie do zarzñdzania rozkäadem ..................................................................... 400 Rozkäad brzegowy .................................................................................................. 403 Rozkäad siatkowy .................................................................................................. 405 Wprowadzanie tekstu ................................................................................................. 409 Pola tekstowe ....................................................................................................... 409 Etykiety komponentów ........................................................................................... 411 Pola haseä ............................................................................................................ 413 Obszary tekstowe .................................................................................................. 413 Panele przewijane ................................................................................................. 414 Komponenty umoĔliwiajñce wybór opcji ........................................................................ 417 Pola wyboru .......................................................................................................... 417 Przeäñczniki .......................................................................................................... 420 Obramowanie ....................................................................................................... 424 Listy rozwijalne ..................................................................................................... 428 Suwaki ................................................................................................................. 432 Menu ........................................................................................................................ 438 Tworzenie menu .................................................................................................... 439 Ikony w elementach menu ..................................................................................... 441 Pola wyboru i przeäñczniki jako elementy menu ........................................................ 442 Menu podröczne ................................................................................................... 444 Mnemoniki i akceleratory ....................................................................................... 445 8 Java. Podstawy Aktywowanie i dezaktywowanie elementów menu ..................................................... 448 Paski narzödzi ...................................................................................................... 451 Dymki .................................................................................................................. 453 Zaawansowane techniki zarzñdzania rozkäadem ............................................................ 456 Rozkäad GridBagLayout .......................................................................................... 458 Rozkäad grupowy ................................................................................................... 468 NieuĔywanie Ĕadnego zarzñdcy rozkäadu .................................................................. 478 Niestandardowi zarzñdcy rozkäadu .......................................................................... 479 Kolejka dostöpu .................................................................................................... 483 Okna dialogowe ......................................................................................................... 485 Okna dialogowe opcji ............................................................................................ 485 Tworzenie okien dialogowych .................................................................................. 495 Wymiana danych ................................................................................................... 500 Okna dialogowe wyboru plików ............................................................................... 506 Okna dialogowe wyboru kolorów ............................................................................. 517 RozdziaÄ 10. Przygotowywanie apletów i aplikacji do uÑytku ............................................................525 Pliki JAR .................................................................................................................... 526 Manifest .............................................................................................................. 526 Wykonywalne pliki JAR ........................................................................................... 528 Zasoby ................................................................................................................. 529 Pieczötowanie pakietów ......................................................................................... 532 Java Web Start ........................................................................................................... 533 Sandbox ............................................................................................................... 537 Podpisywanie kodu ............................................................................................... 538 API JNLP .............................................................................................................. 539 Aplety ........................................................................................................................ 548 Prosty aplet .......................................................................................................... 549 Znacznik applet i jego atrybuty ............................................................................... 553 Znacznik object ..................................................................................................... 557 Parametry przekazujñce informacje do apletów ........................................................ 557 Dostöp do obrazów i plików audio .......................................................................... 562 ćrodowisko dziaäania apletu ................................................................................... 563 Zapisywanie preferencji uĔytkownika ............................................................................ 572 Mapy wäasnoĈci .................................................................................................... 572 API Preferences .................................................................................................... 577 RozdziaÄ 11. Wyj¾tki, dzienniki, asercje i debugowanie .......................................................................585 Obsäuga bäödów ......................................................................................................... 586 Klasyfikacja wyjñtków ............................................................................................ 587 Deklarowanie wyjñtków kontrolowanych .................................................................. 589 Zgäaszanie wyjñtków .............................................................................................. 591 Tworzenie klas wyjñtków ........................................................................................ 593 Przechwytywanie wyjñtków ........................................................................................... 594 Przechwytywanie wielu typów wyjñtków .................................................................... 596 Powtórne generowanie wyjñtków i budowanie äaþcuchów wyjñtków ............................ 596 Klauzula finally ..................................................................................................... 597 Analiza danych ze Ĉledzenia stosu .......................................................................... 601 Wskazówki dotyczñce stosowania wyjñtków .................................................................. 604 Spis treÊci 9 Asercje ...................................................................................................................... 607 Wäñczanie i wyäñczanie asercji ................................................................................ 608 Zastosowanie asercji w sprawdzaniu parametrów .................................................... 608 Zastosowanie asercji w dokumentacji zaäoĔeþ ......................................................... 610 Dzienniki ................................................................................................................... 611 Podstawy zapisu do dziennika ................................................................................ 611 Zaawansowane techniki zapisu do dziennika ........................................................... 612 Zmiana konfiguracji menedĔera dzienników ............................................................. 614 Lokalizacja ........................................................................................................... 615 Obiekty typu Handler ............................................................................................. 616 Filtry .................................................................................................................... 620 Formatery ............................................................................................................. 620 Przepis na dziennik ............................................................................................... 620 Wskazówki dotyczñce debugowania ............................................................................. 629 UĔywanie okna konsoli .......................................................................................... 635 ćledzenie zdarzeþ AWT .......................................................................................... 636 Zaprzöganie robota AWT do pracy ........................................................................... 640 Praca z debugerem ..................................................................................................... 645 RozdziaÄ 12. Programowanie uogólnione .............................................................................................649 Dlaczego programowanie uogólnione ........................................................................... 650 Dla kogo programowanie uogólnione ...................................................................... 651 Definicja prostej klasy uogólnionej ............................................................................... 652 Metody uogólnione ..................................................................................................... 654 Ograniczenia zmiennych typowych ................................................................................ 655 Kod uogólniony a maszyna wirtualna ............................................................................ 657 Translacja wyraĔeþ generycznych ............................................................................ 659 Translacja metod uogólnionych .............................................................................. 660 UĔywanie starego kodu .......................................................................................... 662 Ograniczenia i braki .................................................................................................... 663 Nie moĔna podawaè typów prostych jako parametrów typowych ................................ 663 Sprawdzanie typów w czasie dziaäania programu jest moĔliwe tylko dla typów surowych ............................................................................................ 663 Obiektów klasy uogólnionej nie moĔna generowaè ani przechwytywaè ........................ 664 Nie moĔna tworzyè tablic typów uogólnionych .......................................................... 665 Nie wolno tworzyè egzemplarzy zmiennych typowych ................................................. 665 Zmiennych typowych nie moĔna uĔywaè w statycznych kontekstach klas uogólnionych ... 667 UwaĔaj na konflikty, które mogñ powstaè po wymazaniu typów .................................. 667 Zasady dziedziczenia dla typów uogólnionych ................................................................ 668 Typy wieloznaczne ...................................................................................................... 671 Ograniczenia nadtypów typów wieloznacznych .......................................................... 672 Typy wieloznaczne bez ograniczeþ .......................................................................... 674 Chwytanie typu wieloznacznego .............................................................................. 675 Refleksja a typy uogólnione ......................................................................................... 679 Zastosowanie parametrów Class T do dopasowywania typów ................................. 680 Informacje o typach generycznych w maszynie wirtualnej .......................................... 680 10 Java. Podstawy RozdziaÄ 13. Kolekcje .............................................................................................................................687 Interfejsy kolekcyjne ................................................................................................... 687 Oddzielenie warstwy interfejsów od warstwy klas konkretnych ................................... 688 Interfejsy Collection i Iterator ................................................................................. 690 Konkretne klasy kolekcyjne ......................................................................................... 696 Listy powiñzane .................................................................................................... 696 Listy tablicowe ...................................................................................................... 706 Zbiór HashSet ...................................................................................................... 706 Zbiór TreeSet ........................................................................................................ 710 Porównywanie obiektów ......................................................................................... 711 Kolejki Queue i Deque ........................................................................................... 717 Kolejki priorytetowe ............................................................................................... 718 Mapy ................................................................................................................... 719 Specjalne klasy Set i Map ..................................................................................... 724 Architektura kolekcji ................................................................................................... 729 Widoki i obiekty opakowujñce ................................................................................. 733 Operacje zbiorcze .................................................................................................. 739 Konwersja pomiödzy kolekcjami a tablicami ............................................................ 740 Algorytmy ................................................................................................................... 741 Sortowanie i tasowanie ......................................................................................... 742 Wyszukiwanie binarne ........................................................................................... 745 Proste algorytmy ................................................................................................... 746 Pisanie wäasnych algorytmów ................................................................................. 748 Stare kolekcje ............................................................................................................ 749 Klasa Hashtable ................................................................................................... 749 Wyliczenia ............................................................................................................ 750 Mapy wäasnoĈci .................................................................................................... 751 Stosy ................................................................................................................... 751 Zbiory bitów .......................................................................................................... 752 RozdziaÄ 14. Wielow¾tkowoÊÀ ...............................................................................................................757 Czym sñ wñtki ............................................................................................................ 758 Wykonywanie zadaþ w osobnych wñtkach ................................................................ 763 Przerywanie wñtków .................................................................................................... 769 Stany wñtków ............................................................................................................. 771 Wñtki NEW ........................................................................................................... 772 Wñtki RUNNABLE .................................................................................................. 772 Wñtki BLOCKED i WAITING ..................................................................................... 773 Zamykanie wñtków ................................................................................................ 773 WäasnoĈci wñtków ...................................................................................................... 775 Priorytety wñtków .................................................................................................. 775 Wñtki demony ....................................................................................................... 776 Procedury obsäugi nieprzechwyconych wyjñtków ....................................................... 777 Synchronizacja ........................................................................................................... 778 Przykäad sytuacji powodujñcej wyĈcig ...................................................................... 778 WyĈcigi ................................................................................................................ 783 Obiekty klasy Lock ................................................................................................ 784 Warunki ............................................................................................................... 787 Säowo kluczowe synchronized ................................................................................. 792 Bloki synchronizowane .......................................................................................... 796 Monitor ................................................................................................................ 797 Spis treÊci 11 Pola ulotne ........................................................................................................... 798 Zakleszczenia ....................................................................................................... 800 Testowanie blokad i odmierzanie czasu .................................................................. 803 Blokady odczytu-zapisu .......................................................................................... 804 Dlaczego metody stop i suspend sñ odradzane ....................................................... 805 Kolejki blokujñce ........................................................................................................ 808 Kolekcje bezpieczne wñtkowo ...................................................................................... 815 Szybkie mapy, zbiory i kolejki ................................................................................. 815 Tablice kopiowane przy zapisie ............................................................................... 817 Starsze kolekcje bezpieczne wñtkowo ..................................................................... 817 Interfejsy Callable i Future ........................................................................................... 819 Klasa Executors ......................................................................................................... 823 Pule wñtków ......................................................................................................... 824 Planowanie wykonywania ....................................................................................... 828 Kontrolowanie grup zadaþ ...................................................................................... 829 Synchronizatory .......................................................................................................... 830 Semafory ............................................................................................................. 830 Klasa CountDownLatch .......................................................................................... 831 Bariery ................................................................................................................. 832 Klasa Exchanger ................................................................................................... 833 Kolejki synchroniczne ............................................................................................ 833 Przykäad — wstrzymywanie i ponowne uruchamianie animacji ................................... 833 Wñtki a biblioteka Swing ............................................................................................. 839 Uruchamianie czasochäonnych zadaþ ...................................................................... 840 Klasa SwingWorker ............................................................................................... 845 Zasada jednego wñtku .......................................................................................... 851 Dodatek A SÄowa kluczowe Javy ..........................................................................................................853 Skorowidz .............................................................................................................................................855 8 ObsÄuga zdarzeÆ W tym rozdziale: Q Podstawy obsáugi zdarzeĔ Q Akcje Q Zdarzenia generowane przez mysz Q Hierarchia zdarzeĔ AWT Obsáuga zdarzeĔ ma fundamentalne znaczenie w programach z graficznym interfejsem uĪyt- kownika. KaĪdy, kto chce tworzyü interfejsy graficzne w Javie, musi opanowaü obsáugĊ zda- rzeĔ. Niniejszy rozdziaá opisuje model obsáugi zdarzeĔ biblioteki AWT. Do opisywanych zagadnieĔ naleĪą przechwytywanie zdarzeĔ w komponentach interfejsu uĪytkownika i urzą- dzeniach wejĞciowych, a takĪe akcje (ang. actions), czyli bardziej strukturalna metoda przetwarzania zdarzeĔ. Podstawy obsÄugi zdarzeÆ KaĪdy system operacyjny posiadający graficzny interfejs uĪytkownika stale monitoruje za- chodzące w nim zdarzenia, jak naciskanie klawiszy na klawiaturze czy klikniĊcia przyciskiem myszy. Informacje o tych zdarzeniach są przesyáane do uruchomionych programów. NastĊp- nie kaĪdy program podejmuje samodzielną decyzjĊ, w jaki sposób, jeĞli w ogóle, zareagowaü na te zdarzenia. W takich jĊzykach jak Visual Basic relacje pomiĊdzy zdarzeniami a kodem są oczywiste. Programista pisze kod obsáugi kaĪdego interesującego go zdarzenia i umieszcza go w tzw. procedurze obsáugi zdarzeĔ (ang. event procedure). Na przykáad z przyciskiem o nazwie HelpButton w jĊzyku Visual Basic moĪe byü skojarzona procedura obsáugi zdarzeĔ o nazwie HelpButton_Click. Kod niniejszej procedury jest wykonywany w odpowiedzi na kaĪde klikniĊcie niniejszego przycisku. KaĪdy komponent GUI w jĊzyku Visual Basic reaguje na ustalony zestaw zdarzeĔ — nie moĪna zmieniü zdarzeĔ, na które reaguje dany komponent. 356 Java. Podstawy Natomiast programiĞci czystego jĊzyka C zajmujący siĊ zdarzeniami muszą pisaü procedury nieprzerwanie monitorujące kolejkĊ zdarzeĔ w celu sprawdzenia, jakie powiadomienia prze- syáa system operacyjny (z reguáy do tego celu stosuje siĊ pĊtlĊ zawierającą bardzo rozbudowaną instrukcjĊ switch!). Technika ta jest oczywiĞcie bardzo maáo elegancka i sprawia wiele pro- blemów podczas pisania kodu. Jej zaletą jest natomiast to, Īe nie ma Īadnych ograniczeĔ dotyczących zdarzeĔ, na które moĪna reagowaü, w przeciwieĔstwie do innych jĊzyków, np. Visual Basica, które wkáadają bardzo duĪo wysiáku w ukrywanie kolejki zdarzeĔ przed programistą. W Ğrodowisku programistycznym Javy przyjĊto podejĞcie poĞrednie pomiĊdzy jĊzykami Visual Basic a C, jeĞli chodzi o oferowane moĪliwoĞci, a co za tym idzie — takĪe záoĪonoĞü. Poru- szając siĊ w zakresie zdarzeĔ, które obsáuguje biblioteka AWT, programista ma peáną kontrolĊ nad sposobem przesyáania zdarzeĔ ze Ĩródeá zdarzeĔ (ang. event sources), np. przycisków lub pasków przewijania, do sáuchaczy zdarzeĔ (ang. event listener). Na sáuchacza zdarzeĔ moĪna desygnowaü kaĪdy obiekt — w praktyce wybiera siĊ ten obiekt, który z áatwoĞcią moĪe wy- konaü odpowiednie dziaáania w odpowiedzi na zdarzenie. Ten delegacyjny model zdarzeĔ daje znacznie wiĊksze moĪliwoĞci niĪ jĊzyk Visual Basic, w którym sáuchacz jest ustalony z góry. ħródáa zdarzeĔ dysponują metodami, w których moĪna rejestrowaü sáuchaczy zdarzeĔ. Kiedy ma miejsce okreĞlone zdarzenie, Ĩródáo wysyáa powiadomienie o nim do wszystkich obiektów nasáuchujących, które zostaáy dla niego zarejestrowane. Jak moĪna siĊ spodziewaü, informacje o zdarzeniu w jĊzyku obiektowym, takim jak Java, są pakowane w obiekcie zdarzeĔ (ang. event object). W Javie wszystkie obiekty zdarzeĔ naleĪą do klasy java.util.EventObject. OczywiĞcie istnieją teĪ podklasy reprezentujące kaĪdy typ zdarzenia, takie jak ActionEvent czy WindowEvent. RóĪne Ĩródáa zdarzeĔ mogą dostarczaü róĪnego rodzaju zdarzeĔ. Na przykáad przycisk moĪe wysyáaü obiekty ActionEvent, podczas gdy okno wysyáa obiekty WindowEvent. Podsumujmy, co juĪ wiemy na temat obsáugi zdarzeĔ w bibliotece AWT: Q Obiekt nasáuchujący jest egzemplarzem klasy implementującej specjalny interfejs nasáuchu (ang. listener interface). Q ħródáo zdarzeĔ to obiekt, który moĪe rejestrowaü obiekty nasáuchujące i wysyáaü do nich obiekty zdarzeĔ. Q ħródáo zdarzeĔ wysyáa obiekty zdarzeĔ do wszystkich zarejestrowanych sáuchaczy w chwili wystąpienia zdarzenia. Q Informacje zawarte w obiekcie zdarzeĔ są wykorzystywane przez obiekty nasáuchujące przy podejmowaniu decyzji dotyczącej reakcji na zdarzenie. Rysunek 8.1 przedstawia relacje pomiĊdzy klasami obsáugi zdarzeĔ a interfejsami PoniĪej znajduje siĊ przykáadowa definicja sáuchacza: ActionListener listener = . . .; JButton button = new JButton( Ok ); button.addActionListener(listener); RozdziaÄ 8. Q ObsÄuga zdarzeÆ 357 Rysunek 8.1. Relacje pomiödzy Ēródäami zdarzeþ a säuchaczami Od tej pory obiekt listener bĊdzie powiadamiany o kaĪdym zdarzeniu akcji w przycisku. Jak siĊ moĪna domyĞliü, zdarzenie akcji w przypadku przycisku to jego klikniĊcie. Klasa implementująca interfejs ActionListener musi definiowaü metodĊ o nazwie action- Performed, która jako parametr przyjmuje obiekt typu ActionEvent: class MyListener implements ActionListener { . . . public void actionPerformed(ActionEvent event) { // Instrukcje wykonywane w odpowiedzi na klikniĊcie przycisku. . . . } } Kiedy uĪytkownik kliknie przycisk, obiekt typu JButton tworzy obiekt typu ActionEvent i wywoáuje metodĊ listener.actionPerformed(event), przekazując do niej niniejszy obiekt zdarzenia. ħródáo zdarzeĔ, takie jak przycisk, moĪe mieü kilku sáuchaczy. W takim przy- padku klikniĊcie przycisku przez uĪytkownika powoduje wywoáanie metod actionPerformed wszystkich sáuchaczy. Rysunek 8.2 przedstawia relacje pomiĊdzy Ĩródáem zdarzeĔ, sáuchaczem zdarzeĔ a obiek- tem zdarzeĔ. PrzykÄad — obsÄuga klikniÂcia przycisku Aby nabraü biegáoĞci w posáugiwaniu siĊ modelem delegacji zdarzeĔ, przeanalizujemy szcze- góáowo prosty program reagujący na klikniĊcie przycisku. Utworzymy panel zawierający trzy przyciski, których zdarzeĔ bĊdą nasáuchiwaü trzy obiekty nasáuchujące. W tym przypadku za kaĪdym razem, gdy uĪytkownik kliknie jeden z przycisków na panelu, skojarzony z tym przyciskiem obiekt odbierze obiekt typu ActionEvent oznaczający klikniĊcie przycisku. W odpowiedzi obiekt nasáuchujący zmieni kolor táa panelu. Przed przejĞciem do programu, który nasáuchuje klikniĊü przycisków, musimy najpierw za- poznaü siĊ z techniką tworzenia i dodawania przycisków do panelu (wiĊcej informacji na temat elementów GUI znajduje siĊ w rozdziale 9.). 358 Java. Podstawy Rysunek 8.2. Powiadamianie o zdarzeniach Tworzenie przycisku polega na podaniu jego konstruktorowi áaĔcucha okreĞlającego etykietĊ przycisku, ikony lub jednego i drugiego. PoniĪej znajdują siĊ przykáady tworzenia dwóch przycisków: JButton yellowButton = new JButton( Ľóđty ); JButton blueButton = new JButton(new ImageIcon( blue-ball.gif )); Przyciski do panelu dodaje siĊ za pomocą metody add: JButton yellowButton = new JButton( Ľóđty ); JButton blueButton = new JButton( Niebieski ); JButton redButton = new JButton( Czerwony ); buttonPanel.add(yellowButton); buttonPanel.add(blueButton); buttonPanel.add(redButton); Wynik powyĪszych dziaáaĔ przedstawia rysunek 8.3. NastĊpnie konieczne jest dodanie procedur nasáuchujących tych przycisków. Do tego po- trzebne są klasy implementujące interfejs ActionListener, który, jak juĪ wspominaliĞmy, zawiera tylko jedną metodĊ: actionPerformed. Sygnatura niniejszej metody jest nastĊpująca: public void actionPerformed(ActionEvent event) RozdziaÄ 8. Q ObsÄuga zdarzeÆ 359 Rysunek 8.3. Panel z przyciskami Interfejs ActionListener nie ogranicza siö tylko do klikniöè przycisków. Znajduje on zastosowanie w wielu innych sytuacjach, takich jak: Q wybór elementu z pola listy za pomocñ dwukrotnego klikniöcia, Q wybór elementu menu, Q klikniöcie klawisza Enter w polu tekstowym, Q upäyw okreĈlonej iloĈci czasu dla komponentu Timer. Wiöcej szczegóäów na ten temat znajduje siö w niniejszym i kolejnym rozdziale. Sposób uĔycia interfejsu ActionListener jest taki sam we wszystkich sytuacjach: metoda actionPerformed (jedyna w interfejsie ActionListener) przyjmuje obiekt typu ActionEvent jako parametr. Ten obiekt zdarzenia dostarcza informacji o zdarzeniu, które miaäo miejsce. Reakcją na klikniĊcie przycisku ma byü zmiana koloru táa panelu. ĩądany kolor bĊdziemy przechowywaü w klasie nasáuchującej: class ColorAction implements ActionListener { public ColorAction(Color c) { backgroundColor = c; } public void actionPerformed(ActionEvent event) { // Ustawienie koloru táa panelu. . . . } private Color backgroundColor; } NastĊpnie dla kaĪdego koloru tworzymy osobny obiekt i kaĪdy z nich rejestrujemy jako sáuchacza przycisku. ColorAction yellowAction = new ColorAction(Color.YELLOW); ColorAction blueAction = new ColorAction(Color.BLUE); ColorAction redAction = new ColorAction(Color.RED); yellowButton.addActionListener(yellowAction); blueButton.addActionListener(blueAction); redButton.addActionListener(redAction); 360 Java. Podstawy JeĞli uĪytkownik kliknie na przykáad przycisk z napisem Ľóđty, zostanie wywoáana metoda actionPerformed obiektu yellowAction. Pole backgroundColor niniejszego obiektu ma wartoĞü color.YELLOW. Zostaá jeszcze tylko jeden problem do rozwiązania. Obiekt typu ColorAction nie ma dostĊ- pu do zmiennej buttonPanel. MoĪna to rozwiązaü na jeden z dwóch sposobów. MoĪna za- pisaü panel w obiekcie ColorAction i skonstruowaü go w konstruktorze ColorAction. Wygod- niej jednak byáoby, gdyby ColorAction byáa klasą wewnĊtrzną klasy ButtonFrame. DziĊki temu jej metody miaáyby automatycznie dostĊp do zewnĊtrznego panelu (wiĊcej informacji na temat klas wewnĊtrznych znajduje siĊ w rozdziale 6.). Zastosujemy drugą z opisanych metod. PoniĪej przedstawiamy klasĊ ColorAction wewnątrz klasy ButtonFrame: class ButtonPanel extends JFrame { . . . private class ColorAction implements ActionListener { . . . public void actionPerformed(ActionEvent event) { buttonPanel.setBackground(backgroundColor); } private Color backgroundColor; } private JPanel buttonPanel; } Przypatrzmy siĊ uwaĪniej metodzie actionPerformed. Klasa ColorAction nie posiada pola buttonPanel. Ma go natomiast zewnĊtrzna klasa ButtonFrame. Jest to bardzo czĊsto spotykana sytuacja. Obiekty nasáuchu zdarzeĔ czĊsto muszą wykony- waü dziaáania, które mają wpáyw na inne obiekty. KlasĊ nasáuchującą czĊsto moĪna umieĞciü w strategicznym miejscu wewnątrz klasy, której obiekt ma mieü zmieniony stan. Listing 8.1 przedstawia kompletny program. KlikniĊcie jednego z przycisków powoduje zmianĊ koloru táa panelu przez odpowiedniego sáuchacza akcji. Listing 8.1. ButtonTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * @version 1.33 2007-06-12 * @author Cay Horstmann */ public class ButtonTest { RozdziaÄ 8. Q ObsÄuga zdarzeÆ 361 public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { ButtonFrame frame = new ButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } /** * Ramka z panelem zawierającym przyciski. */ class ButtonFrame extends JFrame { public ButtonFrame() { setTitle( ButtonTest ); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // Tworzenie przycisków. JButton yellowButton = new JButton( Ľóđty ); JButton blueButton = new JButton( Niebieski ); JButton redButton = new JButton( Czerwony ); buttonPanel = new JPanel(); // Dodanie przycisków do panelu. buttonPanel.add(yellowButton); buttonPanel.add(blueButton); buttonPanel.add(redButton); // Dodanie panelu do ramki. add(buttonPanel); // Utworzenie akcji przycisków. ColorAction yellowAction = new ColorAction(Color.YELLOW); ColorAction blueAction = new ColorAction(Color.BLUE); ColorAction redAction = new ColorAction(Color.RED); // Powiązanie akcji z przyciskami. yellowButton.addActionListener(yellowAction); blueButton.addActionListener(blueAction); redButton.addActionListener(redAction); } /** * Sáuchacz akcji ustawiający kolor táa panelu. */ private class ColorAction implements ActionListener { 362 Java. Podstawy public ColorAction(Color c) { backgroundColor = c; } public void actionPerformed(ActionEvent event) { buttonPanel.setBackground(backgroundColor); } private Color backgroundColor; } private JPanel buttonPanel; public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; } javax.swing.JButton 1.2 Q JButton(String label) Q JButton(Icon icon) Q JButton(String label, Icon icon) Tworzy przycisk. àaĔcuch etykiety moĪe zawieraü sam tekst lub (od Java SE 1.3) kod HTML, np. html b Ok /b /html . java.awt.Container 1.0 Q Component add(Component c) Dodaje komponent c do kontenera. javax.swing.ImageIcon 1.2 Q ImageIcon(String filename) Tworzy ikonĊ, której obraz jest zapisany w pliku. Nabywanie biegÄoÊci w posÄugiwaniu si klasami wewnÂtrznymi Niektórzy programiĞci nie przepadają za klasami wewnĊtrznymi, poniewaĪ uwaĪają, Īe klasy i obiekty o duĪych rozmiarach spowalniają dziaáanie programu. Przyjrzyjmy siĊ temu twier- dzeniu. Nie potrzebujemy nowej klasy dla kaĪdego elementu interfejsu uĪytkownika. W na- szym programie wszystkie trzy przyciski wspóádzielą jedną klasĊ nasáuchującą. OczywiĞcie kaĪdy z nich posiada osobny obiekt nasáuchujący. Ale obiekty te nie są duĪe. KaĪdy z nich zawiera wartoĞü okreĞlającą kolor i referencjĊ do panelu. A tradycyjne rozwiązanie, z zasto- sowaniem instrukcji if-else, równieĪ odwoáuje siĊ do tych samych obiektów kolorów prze- chowywanych przez sáuchaczy akcji, tylko Īe jako zmienne lokalne, a nie pola obiektów. RozdziaÄ 8. Q ObsÄuga zdarzeÆ 363 PoniĪej przedstawiamy dobry przykáad tego, jak anonimowe klasy wewnĊtrzne mogą upro- Ğciü kod programu. W programie na listingu 8.1 z kaĪdym przyciskiem związane są takie same dziaáania: 1. Utworzenie przycisku z etykietą. 2. Dodanie przycisku do panelu. 3. Utworzenie sáuchacza akcji z odpowiednim kolorem. 4. Dodanie sáuchacza akcji. Napiszemy metodĊ pomocniczą, która b
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Java. Podstawy. Wydanie VIII
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: