PRZYK¢£ADOWY ROZDZIA¢£ Java.dz5.pl/ti/Materialy/Helion Java Cwiczenia Zaawansowane-1.pdf 8 Java. ¤â€ wiczenia

  • View
    0

  • Download
    0

Embed Size (px)

Text of PRZYK¢£ADOWY ROZDZIA¢£ Java.dz5.pl/ti/Materialy/Helion Java Cwiczenia...

  • Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl

    PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

    IDZ DOIDZ DO

    ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

    KATALOG KSI¥¯EKKATALOG KSI¥¯EK

    TWÓJ KOSZYKTWÓJ KOSZYK

    CENNIK I INFORMACJECENNIK I INFORMACJE

    ZAMÓW INFORMACJE O NOWOŒCIACH

    ZAMÓW INFORMACJE O NOWOŒCIACH

    ZAMÓW CENNIKZAMÓW CENNIK

    CZYTELNIACZYTELNIA

    FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

    SPIS TREŒCISPIS TREŒCI

    DODAJ DO KOSZYKADODAJ DO KOSZYKA

    KATALOG ONLINEKATALOG ONLINE

    Java. Æwiczenia zaawansowane Autor: Marcin Lis ISBN: 83-7197-947-9 Format: B5, stron: 142

    Æ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:

    Ksi¹¿ka otwiera now¹ seriê wydawnicz¹, której g³ównym zadaniem bêdzie poszerzenie uzyskanych wiadomoœci.

    "

    "

    "

    "

    "

    "

    "

    "

    "

    "

    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

    http://helion.pl http://helion.pl/zamow_katalog.htm http://helion.pl/katalog.htm http://helion.pl/zakupy/add.cgi?id=czjava http://helion.pl/emaile.cgi http://helion.pl/cennik.htm http://helion.pl/online.htm mailto:helion@helion.pl http://helion.pl/ksiazki/czjava.htm

  • 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ę ������, znajdującą się w pakiecie ���� ���. Program korzystający z więcej niż jednego wątku możemy utworzyć na dwa sposoby. Albo wyprowadzimy własną, nową klasę z klasy ������, albo też nasza klasa będzie musiała implementować interfejs ����� �. Zajmijmy się na początku metodą pierwszą. Utworzymy dwie klasy: klasę główną np. ���� i klasę rozszerzającą klasę ������ np. ��������. W klasie �������� należy zdefiniować metodę �����, od której rozpocznie się działanie wątku; w klasie ���� trzeba utworzyć obiekt klasy �������� i wywołać jego metodę �������. Najlepiej wykonać od razu odpowiedni przykład.

    Ćwiczenie 1.1.

    Napisz kod klasy �������� dziedziczącej z klasy ������.

    ������ ����� �� ���� ������� � ���� �

    ������ �� ������ �

    �������� � ������ ���� ����� �

    ��������������������� ����� �� ������� �

  • 8 Java. Ćwiczenia zaawansowane

    Ćwiczenie 1.2.

    Napisz kod klasy ���� tworzący wątek ��������.

    ������ ����� ��� �

    ������ ������ ���� ���������� �� �!"� �

    �� ���� ��� ���� # ��$ �� ������� ��� ������������� ��������������������� ����� ������

    � �

    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 ����). Wystarczy w klasie wyprowadzonej z ������ zdefiniować metodę ���� 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 �������� wyprowadzonej z klasy ������, uruchamiającej dwa przykła- dowe wątki.

    ������ ����� �� ���� ������� � ���� �

    ������ �� ������ �

    �������� � ������ ���� ����� �

    ������������������� ��%������� � ������ ������ ���� ���������� �� �!"� �

    ��$ �� ��������������� ��$ �� ���������������

    � �

  • Rozdział 1. � 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ę ��������� klasy ������. 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 ��������. Teraz mamy trzy wątki — wątek główny, którego wykonanie rozpoczyna się od metody ������, oraz dwa wątki tworzone przez nas w tej metodzie, których wykonywanie rozpoczyna się od metody �����.

    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 ��������, a następnie skorzystać z metody ���������.

    Ćwiczenie 1.4.

    Zmodyfikuj kod z ćwiczenia 1.3 w taki sposób, aby istniała możliwość nadania własnych nazw wątkom.

    ������ ����� �� ���� ������� � ���� �

    ������ �� ���������� ����� �

    �������� ���%����������

    � ������ ���� ����� �

    �����