Książka - Java. Programowanie obiektowe
Książka - Java. Programowanie obiektowe
autor: Marek Wierzbicki
Java programowanie obiektowe - strona g��wna Programowanie sterowane zdarzeniami Hermetyzacja Dziedziczenie Polimorfizm Inne publikacje Analiza portfelowa Projektowanie magazynów Stylystycznie blog Moda męska

Programowanie obiektowe to sposób tworzenia programów, który przestał już być modną nowinką. To standard, bez którego nie można sobie wyobrazić powstawania zaawansowanych programów czy pracy zespołowej. Na świecie używa się wielu obiektowych języków programowania. Turbo Pascal (obecnie Delphi) czy C++ to kanony istniejące od ponad 10 lat, często wykorzystywane do tworzenia zaawansowanych aplikacji oraz w szkołach czy uczelniach jako modelowe języki obiektowe. Jednak te najpopularniejsze standardy przestają być wystarczające. Ograniczenia wynikające z ich korzeni uniemożliwiają dalszy rozwój tych języków. A pojawiające się wolne miejsce wypełnia JAVA. Stworzony od podstaw, nowoczesny, bezpieczny, niezależny od typu komputera i systemu operacyjnego, w pełni obiektowy język programowania. W zamyśle miał służyć do obsługi sterowników lodówek, pralek czy magnetowidów. Największą popularność zdobył jako język do tworzenia apletów i serwletów, czyli programów funkcjonujących w strukturach internetu. Występuje też jako język wewnętrzny większości poważnych projektów, działających na wielu różnych platformach (na przykład serwery SQL Oracle czy Sybase intensywnie korzystają z jej możliwości). Obecnie zaczyna też trafiać do telefonów komórkowych, przede wszystkim jako narzędzie do tworzenia gier i innych gadżetów we wszystkomających telefonach komórkowych. Ze względu na swoje wszechstronne możliwości i bezpieczeństwo staje się standardem, którego trudno nie zauważać. Każdy nowoczesny informatyk powinien więc znać JAVĘ i jej obiektowe cechy. Ta książka umożliwi dogłębne poznanie metod programowania obiektowego i spowoduje, że czytelnik będzie mógł stosować tą ideę w sposób najbardziej profesjonalny.

Poniżej znajdziesz więcej informacji o mojej książce: Książka: Wstęp , jej spis treści lub wykaz literatury, która zawiera książka i która inspirowała mnie przy jej pisaniu.

Sama książka jest dostępna w wydawnictwie i księgarni internetowej HELION. Odwiedź też inne księgarnie internetowe - ta nie jest zapewne wyjątiem.

Książka: Recenzje

Recenzja książki w Magazynie INTERNET







Książka: Java. Programowanie obiektowe

Marek Wierzbicki

Wstęp


Programowanie obiektowe powstało, z punktu widzenia komputerowej skali czasu, przed kilkoma pokoleniami. Przestało już być modną nowinką (pojawiającą się wyłącznie w książkach czy księgarniach internetowych) i stało się obowiązkowym standardem wszystkich programistów i projektantów. Jednak mimo to wiele osób ma trudności z pełnym zrozumieniem i wszechstronnym stosowaniem tej metodologii. Zarówno programiści z dużym stażem, jak i zupełnie początkujący ciągle mają problemy z efektywnym wykorzystaniem możliwości oferowanych przez obiektowy model programowania. Wynika to z kilku przyczyn. Pierwsza to wymuszona popularność narzędzi, które nie umożliwiają korzystania z elementów obiektowości. Ciągle rozwijane i konserwowane są programy (kadrowe, księgowe, magazynowe itp.), których tworzenie rozpoczęte było jeszcze w latach osiemdziesiątych. Obciążone to jest koniecznością używania języków popularnych w tamtym okresie (najczęściej jest to CLIPPER), które nie miały ani odrobiny obiektowości. Większość programistów jest tak zaangażowana w projekty proceduralne, że nawet jeśli korzystają z narzędzi obiektowych, robią to bardzo pobieżnie, nie wykorzystując ich możliwości. Druga przesłanka to spora popularność języków nazywanych obiektowymi, lecz mających z prawdziwą obiektowością niewiele wspólnego. Klasycznym przykładem jest Visual Basic czy JavaScript, które oferują tylko szczątkowe cechy programowania obiektowego. Korzystając z takich narzędzi, użytkownik ma niewielkie szanse na poznanie i zrozumienie kwestii obiektowości. Trzeci problem to system nauki. Ciągle w wielu szkołach i na uczelniach do nauki wykorzystuje się bardzo dobry, lecz proceduralny Turbo Pascal. W księgarniach ciągle są dostępne książki do nauki tego języka pokazujące, jak tworzyć programy w starym poczciwym DOS-ie, mimo tego że producent zarówno jego, jak i Turbo Pascala dawno zaprzestał wspierania tych technologii. Te i inne niewymienione przyczyny powodują, że wiele osób nie wie, jak w pełni wykorzystać zalety programowania obiektowego. Mam nadzieję, że dzięki tej książce wejście w nowy, obiektowy świat tworzenia programów stanie się łatwiejsze.

Na świecie używa się wielu obiektowych języków programowania. Delphi czy C++ nieraz już posłużyły do stworzenia profesjonalnych i rozbudowanych aplikacji. Jednak te najpopularniejsze standardy przestają być wystarczające. Ograniczenia wynikające z ich proceduralnych korzeni uniemożliwiają ich dalszy rozwój. Pojawiające się wolne miejsce wypełnia Java - stworzony od podstaw, nowoczesny, bezpieczny, niezależny od typu komputera i systemu operacyjnego, w pełni obiektowy język programowania. Posiada wiele zalet, które gwarantują zajęcie czołowego miejsca zarówno w procesie nauczania, jak i tworzenia rzeczywistych programów. Z punktu widzenia dystrybutora i odbiorcy oprogramowania główną zaletą jest możliwość całkowitego przenoszenia programów między różnymi komputerami i systemami operacyjnymi. Cecha ta, dostępna dla standardowego ANSI C na poziomie kodu źródłowego, w Javie dotyczy programów wykonywalnych. Oznacza to, że raz skompilowany program pracuje poprawnie na wszystkich maszynach (nie trzeba tworzyć różnych wersji wynikowych dla każdego typu komputera). Do najważniejszych zalet widocznych w czasie tworzenia oprogramowania należy bardzo silna obiektowość i efektywne zabezpieczenia przed popełnianiem błędów w czasie pisania i uruchamiania kodu. Dzięki tym cechom Java doskonale nadaje się do wykorzystywania zarówno jako język do nauki, jak i do szybkiego i bezpiecznego tworzenia użytecznych i profesjonalnych aplikacji.

Książka, którą masz w ręce, stanowi wprowadzenie w świat programowania obiektowego w Javie. Mimo niezbyt wielkiej objętości zawiera cechy, które spowodują, że stanie się przydatna zarówno dla początkujących, jak i zaawansowanych programistów i projektantów. Osoby rozpoczynające przygodę z Javą znajdą tu wszystkie informacje potrzebne do zrozumienia nawet najbardziej skomplikowanych mechanizmów obiektowości w tym języku. Dla osób z większym doświadczeniem ta część książki będzie doskonałym kompendium wiedzy, do którego będzie można wielokrotnie wracać. Dla bardzo zaawansowanych programistów w tej książce też znajdzie się wiele ciekawych fragmentów. Programowanie sterowane zdarzeniami czy wielowątkowość to naturalne cechy aplikacji obiektowych. Rozdziały te omawiają jednak nie tylko sposób realizacji tych modeli programowania. Dodatkowo pokazują wiele przykładów tworzenia szybkiego i efektywnego (zarówno pod względem szybkości, jak i wielkości) kodu wynikowego. Cóż z tego, że w teorii niektóre konstrukcje są bardzo proste do implementacji, jeśli pracują efektywnie tylko na najszybszych komputerach. W praktyce program powinien być prosty do napisania, łatwy do zanalizowania i uruchomienia oraz szybki podczas pracy, nawet na niezbyt nowoczesnym sprzęcie. Wszystkie te cechy są możliwe do osiągnięcia, choć nie w banalny sposób. Książka ta ma umożliwić Ci poznanie również tych aspektów tworzenia programów.

Książka przeplatana jest przykładami, które ułatwią praktyczne poznanie elementów programowania obiektowego omawianych w teorii. Dodatkowo wiele konstrukcji popartych jest przykładami ich zastosowania w realnych aplikacjach. Mimo tego, że wprowadzam dużo przykładów, wymagam od Ciebie aktywnej współpracy. Nie jest to książka, którą można czytać, tylko przyjmując podaną tam wiedzę. Do pełnego jej zrozumienia niezbędne jest samodzielne testowanie działania pokazanych przeze mnie konstrukcji. Najlepiej w czasie czytania przeprowadzać wszystkie doświadczenia, które opisuję, oraz sprawdzać warianty rozwiązań niepodanych przeze mnie. Na szczęście wszystkie przykłady są na tyle krótkie (rzadko kiedy przekraczają kilkanaście wierszy), że nie ma potrzeby umieszczania ich w postaci elektronicznej. Powiem więcej, brak wersji elektronicznej przykładów pozwoli na szybsze ich opanowanie, ponieważ już w trakcie ich tworzenia można rozważać inną postać klas niż te zaproponowane w książce. Tak więc brak sugestii typu "Spróbuj rozwiązać pokazany przeze mnie przykład w inny (konkretny) sposób" powoduje większą otwartość i daje nadzieję na szersze poznanie i zrozumienie tematu.

Większość przykładów i problemów zaprezentowanych w mojej książce została stworzona i przetestowana w ramach rzeczywistych aplikacji. Niektóre fragmenty powstały jako przykłady mające ułatwić początkującym programistom pracującym w moim zespole zrozumienie trudniejszych problemów. Jeden rozdział i podrozdział powstały jako rozwinięcie artykułów opublikowanych kilka lat temu w "PCkurierze". Mam nadzieję, że moje ponaddziesięcioletnie doświadczenie zarówno w tworzeniu aplikacji obiektowych, jak i upowszechnianiu tego sposobu programowania zaowocuje łatwością czytania tej książki i skutecznością w korzystaniu z jej zawartości.

Książka: Java. Programowanie obiektowe

Marek Wierzbicki

Spis treści

Rozdział 1. Wprowadzenie (11)

  • 1.1. Ogólne cechy programowania obiektowego (12)
    • 1.1.1. Hermetyzacja (13)
    • 1.1.2. Dziedziczenie cech (14)
    • 1.1.3. Dziedziczenie metod i polimorfizm (16)
    • 1.1.4. Nowa jakość działania (17)
  • 1.2. Cechy szczególne obiektowości Javy (18)
    • 1.2.1. Obiekty w Javie (21)
    • 1.2.2. Deklaracje dostępności (22)
    • 1.2.3. Klasy wewnętrzne i zewnętrzne (22)
    • 1.2.4. Klasy abstrakcyjne (23)
    • 1.2.5. Interfejsy (24)
    • 1.2.6. Implementacje (25)
    • 1.2.7. Klasy finalne (25)
    • 1.2.8. Metody i klasy statyczne (26)
    • 1.2.9. Klasy anonimowe (27)
    • 1.2.10. Obiekty refleksyjne (28)
    • 1.2.11. Zdalne wykonywanie metod (28)
    • 1.2.12. Pakiety (29)
    • 1.2.13. Zarządzanie pamięcią (30)
    • 1.2.14. Konwersja typów (30)
  • 1.3. Podsumowanie (31)

Rozdział 2. Klasy i obiekty w Javie (33)

  • 2.1. Klasy (33)
  • 2.2. Obiekty (55)
    • 2.2.1. Rozważania o adresie (55)
    • 2.2.2. Jawne użycie obiektów (56)
    • 2.2.3. Kopiowanie obiektów (58)
    • 2.2.4. Niejawne używanie obiektów (59)
    • 2.2.5. Typ zmiennej i obiektu. Operator instanceof (60)
    • 2.2.6. Efekty polimorfizmu (62)
  • 2.3. Klasy wewnętrzne i lokalne (63)
  • 2.4. Interfejsy (73)
    • 2.4.1. Definicja interfejsu (74)
    • 2.4.2. Implementacje (74)
    • 2.4.3. Zastosowanie interfejsów (76)
    • 2.4.4. Stałe symboliczne (77)
    • 2.4.5. Trochę kodu w interfejsie (79)
    • 2.4.6. Dziedziczenie interfejsów (81)
    • 2.4.7. Egzemplarz interfejsu (83)
  • 2.5. Klasy anonimowe (84)
  • 2.6. Obiekty refleksyjne (89)
    • 2.6.1. Obiekt tworzony refleksyjnie (89)
    • 2.6.2. Ogólne rozpoznawanie klasy (91)
    • 2.6.3. Przykład użycia refleksji (92)
    • 2.6.4. Związek refleksji z obiektowością (94)
  • 2.7. Metody (95)
    • 2.7.1. Zwracanie wartości przez metodę (95)
    • 2.7.2. Przekazywanie parametrów przez wartość (96)
    • 2.7.3. Zmiana wartości parametru (97)
    • 2.7.4. Metody ze zmienną liczbą parametrów (99)
    • 2.7.5. Zakres nazw zmiennych (100)
  • 2.8. Pakiety (101)
    • 2.8.1. Tworzenie pakietów (101)
    • 2.8.2. Używanie pakietów (103)
    • 2.8.3. Lista pakietów (104)
  • 2.9. Modyfikatory (105)
    • 2.9.1. Modyfikatory dostępu (106)
    • 2.9.2. Pokrywanie modyfikatorów dostępu (107)
    • 2.9.3. Metody i pola statyczne (109)
    • 2.9.4. Pola finalne (111)
    • 2.9.5. Metody i klasy finalne (112)
    • 2.9.6. Pola podlegające zmianie (113)
    • 2.9.7. Metody synchronizowane (113)
    • 2.9.8. Pola ulotne (114)
    • 2.9.9. Metody rodzime (114)
  • 2.10. Podsumowanie (115)

Rozdział 3. Aplet jako obiekt na stronie HTML (117)

  • 3.1. Program na stronie internetowej (118)
    • 3.1.1. Aplet jako program (118)
    • 3.1.2. Osadzenie obiektu na stronie (119)
    • 3.1.3. Wersja Javy w przeglądarce (122)
  • 3.2. Predefiniowane składowe apletu (123)
    • 3.2.1. Inicjacja apletu (124)
    • 3.2.2. Wstrzymanie i wznowienie pracy (125)
    • 3.2.3. Zamykanie okna przeglądarki (125)
    • 3.2.4. Wygląd i jego odświeżanie (126)
  • 3.3. Komunikacja ze światem zewnętrznym (130)
    • 3.3.1. Wyprowadzanie informacji tekstowych (130)
    • 3.3.2. Okienko dialogowe (132)
    • 3.3.3. Pobieranie parametrów z pliku HTML (135)
    • 3.3.4. Pobieranie i odtwarzanie plików z serwera (136)
    • 3.3.5. Komunikacja między apletami (137)
    • 3.3.6. Pobieranie informacji z linii adresu (140)
  • 3.4. Aplet a JavaScript (142)
    • 3.4.1. Wywołanie funkcji JavaScript z apletu (143)
    • 3.4.2. Bezpośrednie użycie JavaScriptu (145)
    • 3.4.3. Obsługa rejestru przeglądarki (146)
    • 3.4.4. Wywołanie Javy z JavaScriptu (148)
  • 3.5. Aplet jako samodzielna aplikacja (150)
  • 3.6. Ograniczenia w apletach (151)
  • 3.7. Podsumowanie (152)

Rozdział 4. Programowanie sterowane zdarzeniami (153)

  • 4.1. Zarys nowej idei (154)
  • 4.2. Klasyczna obsługa zdarzeń (155)
    • 4.2.1. Usuwanie klas anonimowych (158)
    • 4.2.2. Obsługa zdarzeń poza klasą (161)
  • 4.3. Współdzielenie obiektów nasłuchujących (163)
  • 4.4. Zdarzenia standardowe (165)
    • 4.4.1. Zdarzenie action (166)
    • 4.4.2. Zdarzenie item (169)
    • 4.4.3. Zdarzenie adjustment (170)
    • 4.4.4. Zdarzenie text (171)
    • 4.4.5. Zdarzenia window (171)
    • 4.4.6. Zdarzenia component (172)
    • 4.4.7. Zdarzenia mouse (173)
    • 4.4.8. Zdarzenia mouseMotion (174)
    • 4.4.9. Zdarzenia key (176)
    • 4.4.10. Zdarzenia focus (178)
    • 4.4.11. Zdarzenia container (180)
    • 4.4.12. Usuwanie obiektów nasłuchujących (180)
    • 4.4.13. Powiązanie obiektów ze zdarzeniami (181)
  • 4.5. Zdarzenia z parametrem (183)
    • 4.5.1 Identyfikacja miejsca pochodzenia komunikatu (183)
    • 4.5.2. Wyniesienie własnych parametrów poza klasę (186)
  • 4.6. Łańcuchy zdarzeń (188)
  • 4.7. Listener kontra Adapter (189)
  • 4.8. Obsługa w klasie pochodnej (190)
    • 4.8.1. Obsługa zdarzeń w klasie (190)
    • 4.8.2. Obiekt z wewnętrzną obsługą (191)
    • 4.8.3. Rzadko stosowana metoda (192)
    • 4.8.4. Powiązanie klas i zdarzeń (193)
    • 4.8.5. Wady i zalety wewnętrznej obsługi (194)
  • 4.9. Zaszłości w obsłudze zdarzeń (195)
  • 4.10. Podsumowanie (196)

Rozdział 5. Obsługa wyjątków (197)

  • 5.1. Obsługa wyjątków przez program (198)
    • 5.1.1. Wyjątek jako obiekt (198)
    • 5.1.2. Konstrukcja podstawowa try - catch (202)
    • 5.1.3. Przechwytywanie różnych wyjątków (203)
    • 5.1.4. Zagnieżdżanie obsługi wyjątków (204)
    • 5.1.5. Słowo kluczowe finally (206)
    • 5.1.6. Obsługa wyjątków poza metodą (208)
    • 5.1.7. Programowe generowanie wyjątków (210)
    • 5.1.8. Wielokrotna obsługa tego samego wyjątku (210)
  • 5.2. Własne typy wyjątków (212)
  • 5.3. Obsługa wyjątków przez JVM (214)
  • 5.4. Podsumowanie (217)

Rozdział 6. Programowanie wielowątkowe (219)

  • 6.1. Techniczna strona wielowątkowości (220)
  • 6.2. Podstawy realizacji wątków (222)
    • 6.2.1. Obiekty zarządzające wątkami (222)
    • 6.2.2. Obiekty-wątki (223)
  • 6.3. Tworzenie klas wątków (223)
  • 6.4. Zarządzanie wątkami (225)
    • 6.4.1. Uruchomienie i zatrzymanie wątku (225)
    • 6.4.2. Wstrzymanie pracy wątku (226)
    • 6.4.3. Wątki a działalność główna (227)
    • 6.4.4. Zawieszenie pracy wątku (228)
    • 6.4.5. Inteligentne wstrzymanie pracy (229)
    • 6.4.6. Wymuszenie przełączenia wątku (231)
    • 6.4.7. Priorytety wątków (233)
  • 6.5. Synchronizacja wątków (236)
    • 6.5.1. Praca synchroniczna (236)
    • 6.5.2. Przyczyny synchronizacji metod (237)
    • 6.5.3. Metody różnego typu (240)
    • 6.5.4. Synchronizacja metod asynchronicznych (242)
    • 6.5.5. Wzajemna blokada (242)
    • 6.5.6. Przerywanie metod synchronizowanych (244)
  • 6.6. Podsumowanie (246)

Słowo końcowe (247)


Skorowidz (251)

Książka: Java. Programowanie obiektowe

Marek Wierzbicki

Literatura

Wykaz książek i artykułów, z którymi powinno sie zapoznać, aby dogłębnie zrozumieć ideę programowania obiektowego w Javie:
  • Allen W.E., Rubenking N.J, Languages: Initializing Data Fields, "PC magazine", 28 maja 1991;
  • Coad P., Nicola J., Object-Oriented Programming, Pearson Education 1993;
  • Eckel B., Thinking in Java, wydanie 3, Helion 2003;
  • Naughton P., Java. Podręcznik języka programowania, Nakom 1999;
  • Hunt B., Practical Object Oriented Programming. 38 Guidelines for Making OOP Work, "EDN" 6 lipca 1992;
  • Gamma E., Helm R., Johnson R., Vlissides J., Wzorce projektowe, WNT 2005;
  • Graham I., Metody obiektowe w teorii i w praktyce, WNT 2004;
  • Keoght J., Giannini M., OOP Demystified, McGraw-Hill Osborn Media 2004;
  • Lis M., Praktyczny kurs Java, Helion 2004;
  • Myrcha J., Programowanie obiektowe, "PCkurier" 2/1991;
  • Myrcha J., Programowanie obiektowe w jezyku C++, "Enter" 1 - 6/1993;
  • Reynolds-Heartler R.A., Microsoft Visual Basic .NET oraz Microsoft Visual C# .NET w programowaniu obiektowym, RM 2003;
  • Rider J.W., Rubenking N.J., Languages: Transporting Constructors, "PC magazine", 25 czerwca 1991;
  • Schildt H., Java. Kompendium programisty, Helion 2005;
  • Szklanowski M., Niestraszne RMI - zdalne wywoływanie procedur w Javie, "PCkurier" 13/2000;
  • Wierzbicki M., Programowanie obiektowe w Turbo Pascalu 7.0 z wykorzystaniem Turbo Vision, Lupus 1993;
  • Wierzbicki M., Klasy dołączane dynamicznie, "PCkurier" 22/2001;
  • Wierzbicki M., Zrób to sam, "PCkurier" 11/2001.