E-book details

Programowanie zorientowane obiektowo w Pythonie. Tworzenie solidnych i łatwych w utrzymaniu aplikacji i bibliotek. Wydanie IV

Programowanie zorientowane obiektowo w Pythonie. Tworzenie solidnych i łatwych w utrzymaniu aplikacji i bibliotek. Wydanie IV

Steven F. Lott, Dusty Phillips

Ebook

Python zasłużenie cieszy się ogromną popularnością. To język, który może służyć do wielu celów, szczególnie do szybkiego tworzenia niewielkich, wyspecjalizowanych programów. Projektowanie bardziej rozbudowanego, wyrafinowanego oprogramowania też jest możliwe, wymaga jednak zdobycia kilku ważnych umiejętności. Bardzo dobrym pomysłem okazuje się zastosowanie w programowaniu w Pythonie podejścia zorientowanego obiektowo. Tak tworzony kod jest czytelny, solidny, łatwy w rozbudowie i o wiele efektywniejszy w działaniu.

Oto przyjazny przewodnik dla programistów Pythona, wyczerpująco wyjaśniający wiele zagadnień programowania obiektowego, takich jak dziedziczenie, kompozycja, polimorfizm, tworzenie klas i struktur danych. W książce szczegółowo omówiono zagadnienia obsługi wyjątków, testowania kodu i zastosowania technik programowania funkcyjnego. Opisano też dwa potężne zautomatyzowane systemy testowe: unittest i pytest. Zaprezentowano tematykę utrzymania złożonego oprogramowania napisanego w sposób zorientowany obiektowo, a także podano wskazówki odnoszące się do jego rozbudowy. Ważną częścią przewodnika jest omówienie zasad programowania współbieżnego we współczesnym Pythonie. Co ważne, poszczególne zagadnienia zostały zilustrowane diagramami UML, czytelnymi przykładami i studiami przypadków.

W książce między innymi:

  • kiedy korzystać z technik obiektowych
  • implementacja obiektów i mechanizmu dziedziczenia w Pythonie
  • stosowanie wyjątków, a także tworzenie testów jednostkowych i integracyjnych
  • ważniejsze wzorce projektowe i ich implementacja w Pythonie
  • statyczne typowanie dynamicznego kodu
  • programowanie współbieżne przy użyciu asyncio

Chcesz tworzyć solidny kod? Zorientuj się na obiekty!

O autorach

O recenzencie

Wstęp

Rozdział 1. Projektowanie obiektowe

  • Wprowadzenie do obiektowości
  • Obiekty i klasy
  • Określanie atrybutów i zachowań
    • Dane opisują stan obiektu
    • Zachowania są akcjami
  • Ukrywanie szczegółów i tworzenie interfejsów publicznych
  • Kompozycja
  • Dziedziczenie
    • Dziedziczenie zapewnia abstrakcję
    • Wielokrotne dziedziczenie
  • Studium przypadku
    • Wprowadzenie i omówienie problemu
    • Widok kontekstu
    • Widok logiczny
    • Widok procesu
    • Widok programistyczny
    • Widok fizyczny
    • Wnioski
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 2. Obiekty w Pythonie

  • Prezentacja podpowiedzi typów
    • Sprawdzanie typów
  • Tworzenie klas w Pythonie
    • Dodawanie atrybutów
    • Zapewnianie możliwości działania
    • Inicjalizacja obiektów
    • Podpowiedzi typów i wartości domyślne
    • Podawanie wyjaśnień w napisach dokumentujących
  • Moduły i pakiety
    • Organizowanie modułów
    • Organizowanie kodu w moduły
  • Kto ma dostęp do moich danych?
  • Biblioteki innych twórców
  • Studium przypadku
    • Widok logiczny
    • Próbki i ich stan
    • Zmiany stanu próbek
    • Odpowiedzialności klasy
    • Klasa TrainingData
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 3. Kiedy obiekty są do siebie podobne

  • Proste dziedziczenie
    • Rozszerzanie typów wbudowanych
    • Przesłanianie i super
  • Wielokrotne dziedziczenie
    • Problematyczny diament
    • Różne zestawy argumentów
  • Polimorfizm
  • Studium przypadku
    • Widok logiczny
    • Jeszcze jedna odległość
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 4. Oczekując nieoczekiwanego

  • Zgłaszanie wyjątków
    • Zgłaszanie wyjątku
    • Efekty wyjątków
    • Obsługa wyjątków
    • Hierarchia wyjątków
    • Definiowanie własnych wyjątków
    • Wyjątki nie są wyjątkowe
  • Studium przypadku
    • Widok kontekstu
    • Widok przetwarzania
    • Co może pójść źle?
    • Nieprawidłowe zachowanie
    • Tworzenie próbek na podstawie danych z plików CSV
    • Walidacja wartości wyliczeniowych
    • Odczyt plików CSV
    • Nie powtarzaj się
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 5. Kiedy korzystać z programowania obiektowego

  • Traktujmy obiekty jako obiekty
  • Dodawanie zachowań do klas danych przy wykorzystaniu właściwości
    • Wszystko o właściwościach
    • Dekoratory - inny sposób tworzenia właściwości
    • Określanie, kiedy należy używać właściwości
  • Obiekty menedżerów
    • Usuwanie powtórzeń
    • W praktyce
  • Studium przypadku
    • Walidacja danych wejściowych
    • Dzielenie próbek wejściowych
    • Hierarchia klas próbek
    • Wyliczenie purpose
    • Właściwości ustawiające
    • Powtarzające się instrukcje if
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 6. Abstrakcyjne klasy bazowe i przeciążanie operatorów

  • Tworzenie abstrakcyjnej klasy bazowej
    • Abstrakcyjne klasy bazowe kolekcji
    • Abstrakcyjne klasy bazowe i podpowiedzi typów
    • Moduł collections.abc
    • Tworzenie własnych abstrakcyjnych klas bazowych
    • Wyjaśniamy magię
  • Przeciążanie operatorów
  • Rozszerzanie klas wbudowanych
  • Metaklasy
  • Studium przypadku
    • Rozszerzanie klasy listy w celu utworzenia dwóch podlist
    • Podział poprzez tasowanie
    • Dzielenie próbek metodą inkrementalną
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 7. Struktury danych w Pythonie

  • Puste obiekty
  • Kroki i krotki nazwane
    • Krotki nazwane i typing.NamedTuple
  • Klasy danych
  • Słowniki
    • Przypadki stosowania słowników
    • Stosowanie defaultdict
  • Listy
    • Sortowanie list
  • Zbiory
  • Trzy typy kolejek
  • Studium przypadku
    • Model logiczny
    • Niezmienne klasy danych
    • Klasy NamedTuple
    • Wniosek
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 8. Łączenie programowania obiektowego i funkcyjnego

  • Wbudowane funkcje Pythona
    • Funkcja len()
    • Funkcja reversed()
    • Funkcja enumerate()
  • Alternatywa dla przeciążania metod
    • Domyślne wartości parametrów
    • Zmienne listy argumentów
    • Rozpakowywanie argumentów
  • Funkcje są także obiektami
    • Obiekty funkcji i funkcje zwrotne
    • Stosowanie funkcji do modyfikowania klas
    • Obiekty wywoływalne
  • Plikowe operacje wejścia-wyjścia
    • Działanie w kontekście
  • Studium przypadku
    • Ogólna postać sposobu przetwarzania
    • Rozdzielanie danych
    • Ponowne przemyślenie problemu klasyfikacji
    • Funkcja partition()
    • Podział danych w jednym przejściu
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 9. Łańcuchy, serializacja i ścieżki do plików

  • Łańcuchy znaków
    • Operacje na łańcuchach znaków
    • Formatowanie łańcuchów znaków
    • Łańcuchy znaków są zapisywane w Unicode
  • Wyrażenia regularne
    • Dopasowywanie wzorców
    • Parsowanie informacji przy użyciu wyrażeń regularnych
  • Ścieżki dostępu do plików
  • Serializacja obiektów
    • Dostosowywanie działania modułu pickle
    • Serializacja danych w formacie JSON
  • Studium przypadku
    • Konstrukcja formatu CSV
    • Wczytywanie danych CSV w formie słowników
    • Wczytywanie danych CSV w formie listy
    • Serializacja danych JSON
    • Format JSON z danymi rozdzielanymi znakami nowego wiersza
    • Walidacja danych JSON
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 10. Wzorzec Iterator

  • Krótko o wzorcach projektowych
  • Iteratory
    • Protokół iteratorów
  • Listy składane
    • Wyrażenia list składanych
    • Wyrażenia zbiorów i słowników składanych
    • Wyrażenia generatorów
  • Funkcje generatorów
    • Zwracanie elementów z innego iteratora
    • Stosy generatorów
  • Studium przypadku
    • Zarys konstruowania zbiorów
    • Wiele podziałów
    • Testowanie
    • Niezbędny algorytm k-NN
    • Algorytm k-NN korzystający z modułu bisect
    • Algorytm k-NN korzystający z modułu heapq
    • Wniosek
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 11. Często stosowane wzorce projektowe

  • Wzorzec Dekorator
    • Przykład wzorca Dekorator
    • Dekoratory w Pythonie
  • Wzorzec Obserwator
    • Przykład wzorca Obserwator
  • Wzorzec Strategia
    • Przykład wzorca Strategia
    • Wzorzec Strategia w Pythonie
  • Wzorzec Polecenie
    • Przykład wzorca Polecenie
  • Wzorzec Stan
    • Przykład wzorca Stan
    • Stan a Strategia
  • Wzorzec Singleton
    • Implementacja wzorca Singleton
  • Studium przypadku
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 12. Zaawansowane wzorce projektowe

  • Wzorzec Adapter
    • Przykład wzorca Adapter
  • Wzorzec Fasada
    • Przykład wzorca Fasada
  • Wzorzec Piórko
    • Przykład implementacji wzorca Piórko w Pythonie
    • Przechowywanie w buforze wielu komunikatów
    • Optymalizacja pamięci przy użyciu atrybutu __slots__
  • Wzorzec Fabryka abstrakcyjna
    • Przykład wzorca Fabryka abstrakcyjna
    • Fabryki abstrakcyjne w Pythonie
  • Wzorzec Kompozyt
    • Przykład wzorca Kompozyt
  • Wzorzec Metoda szablonowa
    • Przykład wzorca Metoda szablonowa
  • Studium przypadku
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 13. Testowanie oprogramowania obiektowego

  • Po co testować?
    • Programowanie na podstawie testów
    • Cele testowania
    • Wzorce testowania
  • Testowanie przy użyciu frameworka unittest
  • Wykonywanie testów jednostkowych przy użyciu pakietu pytest
    • Funkcje setup i teardown pakietu pytest
    • Przygotowania i porządki przy użyciu konfiguracji początkowych
    • Bardziej wyszukane konfiguracje początkowe
    • Pomijanie testów narzędzia pytest
  • Imitowanie obiektów przy użyciu atrap
    • Dodatkowe techniki korygowania
    • Obiekt sentinel
  • Ile testów wystarczy?
  • Testowanie a programowanie
  • Studium przypadku
    • Testy jednostkowe klas obliczających odległości
    • Testy jednostkowe klasy Hyperparameter
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Rozdział 14. Współbieżność

  • Podstawowe informacje o przetwarzaniu współbieżnym
  • Wątki
    • Wiele problemów związanych z wątkami
  • Wieloprocesowość
    • Pule procesów
    • Kolejki
    • Problemy związane z wieloprocesowością
  • Moduł concurrent.futures
  • Moduł AsyncIO
    • AsyncIO w działaniu
    • Czytanie kodu AsyncIO
    • AsyncIO w rozwiązaniach sieciowych
    • Prezentacja aplikacji zapisującej wpisy w dzienniku
    • Klienty AsyncIO
  • Rozwiązanie problemu ucztujących filozofów
  • Studium przypadku
  • Przypomnij sobie
  • Ćwiczenia
  • Podsumowanie

Skorowidz

  • Title: Programowanie zorientowane obiektowo w Pythonie. Tworzenie solidnych i łatwych w utrzymaniu aplikacji i bibliotek. Wydanie IV
  • Author: Steven F. Lott, Dusty Phillips
  • Original title: Python Object-Oriented Programming: Build robust and maintainable object-oriented Python applications and libraries, 4th Edition
  • Translation: Piotr Rajca
  • ISBN: 978-83-283-8950-2, 9788328389502
  • Date of issue: 2023-04-18
  • Format: Ebook
  • Item ID: przop4
  • Publisher: Helion