0Pricing
Python For Kids · Lekcja

Polimorfizm

Poznaj zaawansowane koncepcje programowania obiektowego.

Polimorfizm to bezpłatna lekcja Python For Kids na CoddyKit. To lekcja 5 z 5. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python For Kids, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python For Kids zawiera 5 lekcji w sumie.

Polimorfizm

Witamy ponownie na lekcji programowania obiektowego (OOP)! Dzisiaj poznają Państwo polimorfizm w języku Python — zaawansowane pojęcie, które pozwala obiektom przyjmować różne postacie.

Polimorfizm — ilustracja 1

Czym jest polimorfizm?

Polimorfizm to podstawowe pojęcie w programowaniu obiektowym, które pozwala traktować obiekty różnych klas jako obiekty wspólnej klasy nadrzędnej. Umożliwia on różne działanie tej samej metody w zależności od obiektu, który ją wywołuje.

  • Definicja: „Wiele postaci” — zdolność różnych obiektów do unikalnego reagowania na to samo wywołanie metody.
  • Cel: Zwiększenie elastyczności i integracji kodu dzięki możliwości wzajemnego zastępowania obiektów.

Sprawdźmy, jak działa polimorfizm w języku Python!

Implementowanie polimorfizmu

Polimorfizm można osiągnąć w języku Python poprzez przesłanianie metod oraz korzystanie z wbudowanych funkcji, które działają z różnymi typami obiektów.

  • Przesłanianie metod: Ponowne definiowanie w klasie potomnej metody, która została już zdefiniowana w klasie nadrzędnej.
  • Wbudowane funkcje: Funkcje takie jak len(), które działają z różnymi typami danych.

Przyjrzyjmy się dokładniej przesłanianiu metod.

Przesłanianie metod

Przesłanianie metod pozwala klasie potomnej dostarczyć konkretną implementację metody, która została już zdefiniowana w klasie nadrzędnej. Jest to kluczowy element polimorfizmu.

Przykład:

# Defines the Animal parent class with a speak method
class Animal:
    def speak(self):
        print("The animal makes a sound.")  # Generic speak method

Tworzenie klas potomnych z przesłoniętymi metodami

Utwórzmy klasy potomne dziedziczące po Animal i przesłaniające metodę speak, aby zapewnić konkretne zachowania.

Przykład:

# Defines the Dog child class inheriting from Animal
class Dog(Animal):
    def speak(self):
        print("The dog barks.")  # Overridden speak method

# Defines the Cat child class inheriting from Animal
class Cat(Animal):
    def speak(self):
        print("The cat meows.")  # Overridden speak method

Używanie polimorfizmu z przesłoniętymi metodami

Teraz utwórzmy obiekty klas potomnych i sprawdźmy, jak za pomocą tej samej nazwy metody wykazują one różne zachowania.

Przykład:

# Creates objects of Dog and Cat classes
dog = Dog()
cat = Cat()

# Calls the speak method on both objects
dog.speak()  # Output: The dog barks.
cat.speak()  # Output: The cat meows.

Polimorfizm z użyciem wbudowanych funkcji

Polimorfizm nie ogranicza się do klas zdefiniowanych przez użytkownika. Wbudowane funkcje języka Python, takie jak len(), działają z różnymi typami danych, demonstrując zachowanie polimorficzne.

Przykład:

# Uses len() with a list
my_list = [1, 2, 3, 4]
print(len(my_list))  # Output: 4

# Uses len() with a string
my_string = "Hello"
print(len(my_string))  # Output: 5

# Uses len() with a dictionary
my_dict = {"a": 1, "b": 2}
print(len(my_dict))  # Output: 2

Przykładowy program: obliczanie pól figur

Utwórzmy program obliczający pola różnych figur za pomocą polimorfizmu. Zdefiniujemy klasę nadrzędną Shape oraz klasy potomne Circle i Rectangle, które przesłaniają metodę area.

Kod:

# Defines the Shape parent class with an area method
class Shape:
    def area(self):
        pass  # Placeholder method

# Defines the Circle child class inheriting from Shape
class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius  # Sets the radius of the circle

    def area(self):
        return 3.14 * self.radius ** 2  # Calculates area of the circle

# Defines the Rectangle child class inheriting from Shape
class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width    # Sets the width of the rectangle
        self.height = height  # Sets the height of the rectangle

    def area(self):
        return self.width * self.height  # Calculates area of the rectangle

# Creates objects of Circle and Rectangle classes
circle = Circle(5)
rectangle = Rectangle(4, 6)

# Calculates and prints areas using polymorphism
print("Circle Area:", circle.area())        # Output: Circle Area: 78.5
print("Rectangle Area:", rectangle.area())  # Output: Rectangle Area: 24
# Defines the Vehicle parent class with a move method
class Vehicle:
    def move(self):
        print("The vehicle moves.")

# Defines the Bicycle child class inheriting from Vehicle
class Bicycle(Vehicle):
    def move(self):
        print("The bicycle pedals forward.")

# Defines the Airplane child class inheriting from Vehicle
class Airplane(Vehicle):
    def move(self):
        print("The airplane flies in the sky.")

# Creates objects of Bicycle and Airplane classes
bike = Bicycle()
plane = Airplane()

# Calls the move method on both objects
bike.move()
plane.move()

Świetna robota!

Nauczył(a) się Pan/Pani, czym jest polimorfizm w języku Python i jak pozwala on obiektom różnych klas unikalnie reagować na te same wywołania metod. Polimorfizm zwiększa elastyczność i skalowalność kodu, ułatwiając jego zarządzanie i rozwijanie. Proszę dalej ćwiczyć, tworząc kolejne klasy i metody wykorzystujące zachowanie polimorficzne, aby pogłębiać swoje zrozumienie!

Polimorfizm — ilustracja 10

Często zadawane pytania

Czy lekcja „Polimorfizm” jest bezpłatna?

Tak — pełny tekst „Polimorfizm” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python For Kids, przejdź na CoddyKit PRO. Kurs Python For Kids zawiera 5 lekcji w sumie.

Co nauczysz się w „Polimorfizm”?

Poznaj zaawansowane koncepcje programowania obiektowego. Ćwiczysz Python For Kids z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python For Kids?

Nie wymagamy żadnego doświadczenia. Python For Kids w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 5 z 5.

Ile czasu zajmuje lekcja „Polimorfizm”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python For Kids?

Tak. Każda lekcja Python For Kids zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wprowadzenie do programowania obiektowego
  2. Tworzenie klas i obiektów
  3. Dziedziczenie
  4. Hermetyzacja
  5. Polimorfizm
← Powrót do Python For Kids