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:
pytestto alternatywa dlaunittest, 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.