Przejdź do treści
Strona główna » Blog » Kurs Python: programowanie obiektowe

Kurs Python: programowanie obiektowe

Czym jest programowanie obiektowe?

Programowanie obiektowe (OOP – object-oriented programming) to paradygmat programowania polegający na odzwierciedleniu elementów świata rzeczywistego (ale i nie tylko) poprzez tzw. obiekty. Zaletami tego paradygmatu jest między innymi duża modułowość, która pozwala na lepszą organizację programu. Dzięki temu, że idea opiera się na konstrukcji świata realnego, to paradygmat ten bardzo dobrze sprawdza się w zastosowaniach związanych z zarządzaniem rzeczywistymi systemami (np. systemy zarządzania magazynami). Aby zrozumieć zasady programowania obiektowego, należy zacząć od pojęcia klasy.

Klasa

Podstawowym pojęciem w programowaniu obiektowym jest klasa, której celem jest opisanie, jak będzie skonstruowany dany obiekt i jak będzie się zachowywał. Klasę możemy sobie wyobrazić jako instrukcję budowy obiektu. Przypuśćmy, że chcemy stworzyć obiekt reprezentujący samochód. Klasa będzie uwzględniać, z jakich elementów samochód się składa (tzw. atrybuty) i jakie czynności można w związku z nim wykonywać (tzw. metody). Klasa opisująca taki obiekt może być stworzona na różne sposoby, może np. różnić się stopniem szczegółowości, w zależności od tego, jakie będzie przeznaczenie programu, który tworzymy. Prosta klasa Samochod może uwzględniać takie elementy jak:

  • Atrybuty:
    • marka
    • model
    • moc silnika
    • prędkość
    • itd.
  • Metody:
    • Uruchom silnik
    • Zatrzymaj silnik
    • Przyspiesz
    • itd.

Obiekt

Atrybuty opisują cechy obiektu i jego stan, z kolei metody opisują działania, które wpływają na atrybuty. Klasę wykorzystujemy do stworzenia obiektu. Na przykład możemy stworzyć obiekt Ford_Focus klasy Samochod:

  • Atrybuty:
    • marka = Ford
    • model = Focus
    • moc silnika = 125
    • prędkość = 0

Stan samochodu Ford_Focus może być później modyfikowany zgodnie z metodami zdefiniowanymi wewnątrz klasy.

Implementacja klasy w Pythonie

Poniższy kod przedstawia klasę, którą powyżej.

Python
class Samochod:
    def __init__(self, marka, model, moc_silnika):
        self.marka = marka
        self.model = model
        self.moc_silnika = moc_silnika
        self.predkosc = 0  # Na początku samochód stoi, więc prędkość wynosi 0
    
    def uruchom_silnik(self):
        print("Silnik został uruchomiony.")

    def zatrzymaj_silnik(self):
        print("Silnik został zatrzymany.")
    
    def przyspiesz(self, wartosc):
        self.predkosc += wartosc
        print(f"Przyspieszono. Aktualna prędkość: {self.predkosc} km/h.")

Przeanalizujmy składnię:

  • class: Słowo kluczowe używane do definiowania nowej klasy.
  • Samochod: Nazwa klasy. Nazwy klas zazwyczaj pisane są z dużej litery, zgodnie z konwencją nazewnictwa w języku Python.
  • def __init__(self, marka, model, moc_silnika) – tzw. konstruktor, który jest automatycznie wywoływany podczas tworzenia nowego obiektu klasy.
  • self: Słowo kluczowe, które odnosi się do obiektu, na którym jest wywoływana metoda. Jest to konwencja w Pythonie, aby wskazywać na bieżący obiekt.
  • marka, model, moc_silnika: Argumenty konstruktora, które są przekazywane podczas tworzenia nowego obiektu klasy Samochod.
Python
# Tworzenie obiektu klasy Samochod
moj_samochod = Samochod("Toyota", "Corolla", 150)

# Uruchamiamy silnik
moj_samochod.uruchom_silnik()

# Przyspieszamy o 30 km/h
moj_samochod.przyspiesz(30)

# Przyspieszamy o kolejne 20 km/h
moj_samochod.przyspiesz(20)

# Zatrzymujemy silnik
moj_samochod.zatrzymaj_silnik()

Wynik:

Silnik został uruchomiony.
Przyspieszono. Aktualna prędkość: 30 km/h.
Przyspieszono. Aktualna prędkość: 50 km/h.