OOP w praktyce


1. Tworzenie prostego projektu obiektowego

Tworzenie projektu OOP w Pythonie polega na:

  • Zidentyfikowaniu klas i obiektów – czyli głównych bytów w projekcie.
  • Określeniu atrybutów i metod – co każdy obiekt będzie przechowywał i jakie operacje będzie wykonywał.
  • Podzieleniu projektu na moduły i pakiety – dla czytelności i wielokrotnego użycia kodu.

1.1 Przykład: prosty system biblioteki

  • Klasy: Ksiazka, Czytelnik, Biblioteka
  • Atrybuty i metody:

Korzyści z OOP:

  • Obiekty odwzorowują rzeczywiste byty (Ksiazka, Czytelnik)
  • Łatwe dodawanie funkcjonalności (np. sortowanie książek, filtrowanie)
  • Kod jest czytelny, modularny i łatwy w utrzymaniu

2. Testowanie klas i obiektów

2.1 Testy jednostkowe (unittest)

  • Służą do sprawdzania, czy metody i obiekty działają poprawnie.
  • Testy można pisać dla każdej klasy oddzielnie.

Przykład testu jednostkowego dla klasy Ksiazka:

  • pytest to alternatywa dla unittest, oferująca prostszą składnię i dodatkowe funkcjonalności.

Przykład pytest:

Testowanie jest kluczowe w projektach OOP, aby upewnić się, że zmiany w klasach nie psują działania programu.


3. Dobre praktyki w OOP

3.1 SOLID w Pythonie

SOLID to pięć zasad programowania obiektowego, które zwiększają czytelność, elastyczność i łatwość utrzymania kodu:

S – Single Responsibility Principle (SRP)

Każda klasa powinna mieć jedną odpowiedzialność.

O – Open/Closed Principle (OCP)

Klasy powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.

L – Liskov Substitution Principle (LSP)

Obiekty klas pochodnych powinny być wymienialne z obiektami klasy bazowej bez błędów.

I – Interface Segregation Principle (ISP)

Lepiej mieć wiele specyficznych interfejsów, niż jeden ogólny, który jest niewykorzystywany.

D – Dependency Inversion Principle (DIP)

Moduły wysokiego poziomu nie powinny zależeć od modułów niskiego poziomu, lecz od abstrakcji.


3.2 Czytelność i dokumentacja

  • Nazwy klas, metod i atrybutów powinny być opisowe i spójne.
  • Komentarze i docstringi pomagają w utrzymaniu kodu:
  • PEP8 – stosowanie konwencji kodowania w Pythonie (wcięcia, nazwy, spacing).

4. Podsumowanie

  • Projekty OOP warto dzielić na klasy i moduły, aby kod był czytelny i modularny.
  • Testowanie (unittest, pytest) pozwala upewnić się, że klasy działają poprawnie i bez błędów.
  • Dobre praktyki (SOLID, dokumentacja, czytelność) zwiększają skalowalność i bezpieczeństwo kodu.
  • OOP w praktyce to nie tylko pisanie klas, ale również przemyślane projektowanie całej struktury programu.