Szczegóły ebooka

Myślenie obiektowe w programowaniu. Wydanie V

Myślenie obiektowe w programowaniu. Wydanie V

Matt Weisfeld

Ebook

Burzliwy rozwój obiektowości nastąpił w połowie lat 90. wraz z upowszechnieniem się takich języków jak C++ czy Smalltalk. Obecnie programowanie zorientowane obiektowo wciąż jest jednym z najważniejszych paradygmatów projektowania. Łatwo zauważyć, że większość nowoczesnych języków programowania i technologii sieciowych opiera się na technikach obiektowych. Nieco trudniej jest dostrzec, że mimo szybkiego ewoluowania technik i języków programistycznych podstawowe pojęcia programowania obiektowego pozostają niezmienne i niezależne od jakiejkolwiek platformy. Początkujący programiści powinni więc poświęcić nieco czasu na zapoznanie się z tymi pojęciami i naukę czegoś, co można nazwać "myśleniem obiektowym w programowaniu".

Ta książka jest kolejnym, poprawionym i uzupełnionym wydaniem wyczerpującego wprowadzenia do programowania zorientowanego obiektowo. Jej głównym celem jest przedstawienie podstaw myślenia obiektowego i najważniejszych pojęć w tym zakresie. Wyjaśniono tu, w jaki sposób poprawnie posługiwać się dziedziczeniem i kompozycją, odróżniać agregację od asocjacji oraz zrozumieć różnice między interfejsem a implementacją. Szczególną uwagę zwrócono na technologie, które przetrwały próbę czasu ostatnich 20 lat i stały się rdzeniem koncepcji programowania obiektowego. Opisano też najważniejsze wzorce projektowe, wskazano techniki unikania zależności i zaprezentowano zasady zwane SOLID, których przestrzeganie pozwala tworzyć kod wysokiej jakości, zrozumiały i elastyczny.

Dzięki tej książce:

  • zrozumiesz podstawowe pojęcia obiektowości
  • zaczniesz myśleć abstrakcyjnie podczas projektowania interfejsów
  • nauczysz się budowy i zasad modelowania klas
  • będziesz tworzyć kod, który będzie się nadawał do wielokrotnego wykorzystania
  • zaczniesz unikać zależności i silnych powiązań między klasami
  • przyswoisz sobie i będziesz stosować zasady SOLID

Techniki obiektowe. Zrozum, zanim zaimplementujesz!


O autorze 11

Podziękowania 11

Wstęp 13

Rozdział 1. Podstawowe pojęcia obiektowości 17

  • Podstawowe pojęcia 17
  • Obiekty a stare systemy 18
  • Programowanie obiektowe a proceduralne 19
  • Zamiana podejścia proceduralnego na obiektowe 23
    • Programowanie proceduralne 23
    • Programowanie obiektowe 23
  • Definicja obiektu 24
    • Dane obiektu 24
    • Zachowania obiektu 24
  • Definicja klasy 28
    • Tworzenie obiektów 28
    • Atrybuty 30
    • Metody 30
    • Komunikaty 30
  • Modelowanie klas przy użyciu diagramów UML 31
  • Hermetyzacja i ukrywanie danych 31
    • Interfejsy 31
    • Implementacje 32
    • Realistyczna ilustracja paradygmatu interfejsu i implementacji 33
    • Model paradygmatu interfejs - implementacja 33
  • Dziedziczenie 34
    • Nadklasy i podklasy 35
    • Abstrakcja 36
    • Związek typu "jest" 37
  • Polimorfizm 38
  • Kompozycja 41
    • Abstrakcja 41
    • Związek typu "ma" 41
  • Podsumowanie 41

Rozdział 2. Myślenie w kategoriach obiektowych 43

  • Różnica między interfejsem a implementacją 44
    • Interfejs 46
    • Implementacja 46
    • Przykład implementacji i interfejsu 47
  • Zastosowanie myślenia abstrakcyjnego w projektowaniu interfejsów 51
  • Minimalizowanie interfejsu 52
    • Określanie grupy docelowej 53
    • Zachowania obiektu 54
    • Ograniczenia środowiska 54
    • Identyfikowanie publicznych interfejsów 54
    • Identyfikowanie implementacji 55
  • Podsumowanie 56
  • Źródła 56

Rozdział 3. Inne pojęcia z zakresu obiektowości 57

  • Konstruktory 57
    • Kiedy wywoływany jest konstruktor 58
    • Zawartość konstruktora 58
    • Konstruktor domyślny 58
    • Zastosowanie wielu konstruktorów 59
    • Projektowanie konstruktorów 63
  • Obsługa błędów 63
    • Ignorowanie problemu 64
    • Szukanie błędów i kończenie działania programu 64
    • Szukanie błędów i próba ich naprawienia 64
    • Zgłaszanie wyjątków 65
  • Pojęcie zakresu 67
    • Atrybuty lokalne 67
    • Atrybuty obiektowe 68
    • Atrybuty klasowe 70
  • Przeciążanie operatorów 71
  • Wielokrotne dziedziczenie 72
  • Operacje obiektów 73
  • Podsumowanie 74
  • Źródła 74

Rozdział 4. Anatomia klasy 75

  • Nazwa klasy 75
  • Komentarze 77
  • Atrybuty 77
  • Konstruktory 78
  • Metody dostępowe 80
  • Metody interfejsu publicznego 83
  • Prywatne metody implementacyjne 83
  • Podsumowanie 84
  • Źródła 84

Rozdział 5. Wytyczne dotyczące projektowania klas 85

  • Modelowanie systemów świata rzeczywistego 85
  • Identyfikowanie interfejsów publicznych 86
    • Minimalizacja interfejsu publicznego 86
    • Ukrywanie implementacji 87
  • Projektowanie niezawodnych konstruktorów i destruktorów 88
  • Projektowanie mechanizmu obsługi błędów w klasie 89
    • Pisanie dokumentacji i stosowanie komentarzy 89
    • Tworzenie obiektów nadających się do kooperacji 90
  • Wielokrotne użycie kodu 90
  • Rozszerzalność 91
    • Tworzenie opisowych nazw 91
    • Wyodrębnianie nieprzenośnego kodu 92
    • Umożliwianie kopiowania i porównywania obiektów 92
    • Ograniczanie zakresu 93
  • Konserwacja kodu 94
    • Iteracja 94
    • Testowanie interfejsu 95
  • Wykorzystanie trwałości obiektów 96
    • Serializacja i szeregowanie obiektów 97
  • Podsumowanie 98
  • Źródła 98

Rozdział 6. Projektowanie z wykorzystaniem obiektów 99

  • Wytyczne dotyczące projektowania 99
    • Wykonanie odpowiedniej analizy 103
    • Określanie zakresu planowanych prac 103
    • Gromadzenie wymagań 103
    • Tworzenie prototypu systemu 104
    • Identyfikowanie klas 104
    • Definiowanie wymagań wobec każdej z klas 104
    • Określenie warunków współpracy między klasami 104
    • Tworzenie modelu klas opisującego system 104
    • Tworzenie prototypu interfejsu użytkownika za pomocą kodu 105
  • Obiekty opakowujące 105
    • Kod strukturalny 106
    • Opakowywanie kodu strukturalnego 107
    • Opakowywanie nieprzenośnego kodu 108
    • Opakowywanie istniejących klas 109
  • Podsumowanie 110
  • Źródła 110

Rozdział 7. Dziedziczenie i kompozycja 111

  • Wielokrotne wykorzystywanie obiektów 111
  • Dziedziczenie 112
    • Generalizacja i specjalizacja 115
    • Decyzje projektowe 116
  • Kompozycja 118
    • Reprezentowanie kompozycji na diagramach UML 118
  • Czemu hermetyzacja jest podstawą technologii obiektowej 120
    • Jak dziedziczenie osłabia hermetyzację 121
    • Szczegółowy przykład wykorzystania polimorfizmu 123
    • Odpowiedzialność obiektów 123
    • Klasy abstrakcyjne, metody wirtualne i protokoły 126
  • Podsumowanie 127
  • Źródła 128

Rozdział 8. Wielokrotne wykorzystanie kodu - interfejsy i klasy abstrakcyjne 129

  • Wielokrotne wykorzystanie kodu 129
  • Infrastruktura programistyczna 130
  • Co to jest kontrakt 132
    • Klasy abstrakcyjne 133
    • Interfejsy 135
    • Wnioski 137
    • Dowód kompilatora 139
    • Zawieranie kontraktu 140
    • Punkty dostępowe do systemu 142
  • Przykład biznesu elektronicznego 142
    • Biznes elektroniczny 142
    • Podejście niezakładające wielokrotnego wykorzystania kodu 143
    • Rozwiązanie dla aplikacji biznesu elektronicznego 145
    • Model obiektowy UML 145
  • Podsumowanie 148
  • Źródła 148

Rozdział 9. Tworzenie obiektów i projektowanie obiektowe 149

  • Relacje kompozycji 149
  • Podział procesu budowy na etapy 151
  • Rodzaje kompozycji 153
    • Agregacja 153
    • Asocjacja 153
    • Łączne wykorzystanie asocjacji i agregacji 155
  • Unikanie zależności 155
  • Liczność 156
    • Kilka asocjacji 158
    • Asocjacje opcjonalne 159
  • Praktyczny przykład 160
  • Podsumowanie 161
  • Źródła 161

Rozdział 10. Wzorce projektowe 163

  • Historia wzorców projektowych 164
  • Wzorzec MVC języka Smalltalk 165
  • Rodzaje wzorców projektowych 166
    • Wzorce konstrukcyjne 167
    • Wzorzec Metoda Fabryczna 168
    • Wzorce strukturalne 170
    • Wzorce czynnościowe 172
  • Antywzorce 174
  • Podsumowanie 175
  • Źródła 175

Rozdział 11. Jak uniknąć zależności i silnych powiązań między klasami 177

  • Kompozycja a dziedziczenie i wstrzykiwanie zależności 179
    • 1. Dziedziczenie 179
    • 2. Kompozycja 181
  • Wstrzykiwanie zależności 183
    • Wstrzykiwanie przez konstruktor 185
    • Wstrzykiwanie za pomocą metody ustawiającej 185
  • Podsumowanie 186
  • Źródła 186

Rozdział 12. Zasady SOLID projektowania obiektowego 187

  • Zasady SOLID projektowania obiektowego 188
    • 1. Zasada jednej odpowiedzialności - SRP 188
    • 2. Zasada "otwarty/zamknięty" - OCP 191
    • 3. Zasada podstawiania Liskov - LSP 193
    • 4. Zasada segregacji interfejsów - IPS 195
    • 5. Zasada odwrócenia zależności - DIP 196
  • Podsumowanie 201
  • Źródła 202
  • Tytuł: Myślenie obiektowe w programowaniu. Wydanie V
  • Autor: Matt Weisfeld
  • Tytuł oryginału: The Object-Oriented Thought Process (5th Edition) (Developer's Library)
  • Tłumaczenie: Łukasz Piwko
  • ISBN: 978-83-283-6105-8, 9788328361058
  • Data wydania: 2020-02-25
  • Format: Ebook
  • Identyfikator pozycji: myobp5
  • Wydawca: Helion