Java cwiczenia zaawansowane.pdf

(479 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TREŒCI
Java.
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Æwiczenia zaawansowane
Autor: Marcin Lis
ISBN: 83-7197-947-9
Format: B5, stron: 142
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Æwiczenia zaawansowane s¹ kolejnym etapem na drodze doskonalenia informatycznych
umiejêtnoœci. Czytelnicy, którzy poznali poprzedni¹ ksi¹¿k¹ Marcina Lisa „Java.
Æwiczenia praktyczne”, z ca³¹ pewnoœci¹ nie bêd¹ zawiedzeni.
Z niniejszej publikacji dowiemy siê, jak pisaæ programy wielow¹tkowe i jak w Javie
obs³ugiwaæ bazy danych. Napiszemy w³asny, gotowy do praktycznego u¿ycia czat oraz
aplikacjê do wysy³ania SMS-ów. Nauczymy siê te¿ tworzyæ aplikacje sieciowe
z interfejsem graficznym!
Wybrane zagadnienia:
W¹tki i programowanie wspó³bie¿ne w Javie
Synchronizacja w¹tków
Programowanie sieciowe
Czym s¹ gniazda?
Serwer wielow¹tkowy
£¹czenie z baz¹ danych
Dodawanie rekordów
Modyfikacja rekordów w bazie
Obs³uga transakcji i wartoœci null
Aplikacja z interfejsem graficznym
Ksi¹¿ka otwiera now¹ seriê wydawnicz¹, której g³ównym zadaniem bêdzie poszerzenie
uzyskanych wiadomoœci.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
"
"
"
"
"
"
"
"
"
"
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Wstęp...................................................................................................................................................... 5
Rozdział 1. Wątki i programowanie współbie ne w Javie .................................................................... 7
Klasa Thread................................................................................................................. 7
Interfejs Runnable....................................................................................................... 11
Synchronizacja wątków .............................................................................................. 17
Rozdział 2. Programowanie sieciowe..........................................................................................................29
Czym są gniazda? ....................................................................................................... 29
Gniazda w Javie.......................................................................................................... 30
Klient i serwer............................................................................................................. 35
Transmisja danych ...................................................................................................... 39
Serwer wielowątkowy ................................................................................................ 49
Rozdział 3. Aplikacje sieciowe z interfejsem graficznym ................................................................ 63
Prawdziwa aplikacja — czat (chat) w Javie................................................................. 63
Chat Serwer ................................................................................................................ 77
Wyślij SMS................................................................................................................. 88
Idea....................................................................................................................... 92
Rozdział 4. Bazy danych....................................................................................................................................... 97
Łączenie z bazą danych .............................................................................................. 97
Dodawanie rekordów................................................................................................ 106
Modyfikacja rekordów w bazie ................................................................................ 112
Obsługa transakcji i wartości null ............................................................................ 120
Aplikacja z interfejsem graficznym.......................................................................... 126
Wątki w Javie reprezentowane są przez klasę
6JTGCF
, znajdującą się w pakiecie
LCXCNCPI
.
Program korzystający z więcej ni jednego wątku mo emy utworzyć na dwa sposoby.
Albo wyprowadzimy własną, nową klasę z klasy
6JTGCF
, albo te nasza klasa będzie
musiała implementować interfejs
4WPPCDNG
. Zajmijmy się na początku metodą pierwszą.
Utworzymy dwie klasy: klasę główną np.
/CKP
i klasę rozszerzającą klasę
6JTGCF
np.
/[6JTGCF
. W klasie
/[6JTGCF
nale y zdefiniować metodę
TWP
, od której rozpocznie się
działanie wątku; w klasie
/CKP
trzeba utworzyć obiekt klasy
/[6JTGCF
i wywołać jego
metodę
UVCTV
. Najlepiej wykonać od razu odpowiedni przykład.
Ćwiczenie 1.1.
Napisz kod klasy
/[6JTGCF
dziedziczącej z klasy
6JTGCF
.
RWDNKE
ENCUU /[6JTGCF GZVGPFU 6JTGCF
]
RWDNKE /[6JTGCF
]
UWRGT
_
RWDNKE XQKF TWP
]
5[UVGOQWVRTKPVNP 6JTGCF /[6JTGCF
_
_
8
Ćwiczenie 1.2.
Java. Ćwiczenia zaawansowane
Napisz kod klasy
/CKP
tworzący wątek
/[6JTGCF
.
RWDNKE ENCUU /CKP
]
RWDNKE UVCVKE XQKF OCKP 5VTKPI CTIU=?
]
/[6JTGCF O[6JTGCF PGY /[6JTGCF
O[6JTGCFUVCTV
5[UVGOQWVRTKPVNP 6JTGCF /CKP
_
_
Jeśli spojrzymy teraz na rysunek 1.1, przekonamy się, e oba wątki faktycznie zostały
wykonane. Podobny efekt mo emy osiągnąć równie w nieco inny sposób. Nie trzeba
tworzyć oddzielnie klasy uruchomieniowej dla wątku (w naszym przypadku była to klasa
/CKP
). Wystarczy w klasie wyprowadzonej z
6JTGCF
zdefiniować metodę
OCKP
i tam
utworzyć obiekty wątków.
Rysunek 1.1.
Wyraźnie widać,
e oba wątki
zostały wykonane
Ćwiczenie 1.3.
Napisz kod klasy
/[6JTGCF
wyprowadzonej z klasy
6JTGCF
, uruchamiającej dwa przykła-
dowe wątki.
RWDNKE
ENCUU /[6JTGCF GZVGPFU 6JTGCF
]
RWDNKE /[6JTGCF
]
UWRGT
_
RWDNKE XQKF TWP
]
5[UVGOQWVRTKPVNP IGV0COG
_
RWDNKE UVCVKE XQKF OCKP 5VTKPI CTIU=?
]
PGY /[6JTGCF UVCTV
PGY /[6JTGCF UVCTV
_
_
Rozdział 1.
L
Wątki i programowanie współbie ne w Javie
9
Efekt działania kodu z ćwiczenia 1.3 widoczny jest na rysunku 1.2. Na ekranie wyświe-
tlone są nazwy wątków nadane im przez system. Wykorzystaliśmy w tym celu metodę
IGV0COG
klasy
6JTGCF
. Warto zauwa yć, e w tej chwili mamy inną sytuację ni w po-
przednich przykładach. W ćwiczeniach 1.1 i 1.2 występowały dwa wątki, wątek główny
i wątek klasy
/[6JTGCF
. Teraz mamy trzy wątki — wątek główny, którego wykonanie
rozpoczyna się od metody
OCKP
, oraz dwa wątki tworzone przez nas w tej metodzie,
których wykonywanie rozpoczyna się od metody
TWP
.
Rysunek 1.2.
Na ekranie
wyświetlone
zostały systemowe
nazwy wątków
Gdybyśmy chcieli samodzielnie nadać nazwy poszczególnym wątkom, mo emy nazwy te
przekazać jako parametr w konstruktorze klasy
/[6JTGCF
, a następnie skorzystać z metody
UGV0COG
.
Ćwiczenie 1.4.
Zmodyfikuj kod z ćwiczenia 1.3 w taki sposób, aby istniała mo liwość nadania własnych
nazw wątkom.
RWDNKE
ENCUU /[6JTGCF GZVGPFU 6JTGCF
]
RWDNKE /[6JTGCF 5VTKPI PCOG
]
UWRGT
UGV0COG PCOG
_
RWDNKE XQKF TWP
]
5[UVGOQWVRTKPVNP IGV0COG
_
RWDNKE UVCVKE XQKF OCKP 5VTKPI CTIU=?
]
PGY /[6JTGCF 9æVGM UVCTV
PGY /[6JTGCF 9æVGM UVCTV
_
_
Spróbujmy jednak przekonać się, e rzeczywiście nasze wątki wykonują się niezale nie
od siebie. Wystarczy, jeśli dopiszemy pętlę wyświetlającą kilkukrotnie nazwę ka dego
wątku.
Zgłoś jeśli naruszono regulamin