Python For Kids · Oppitunti

Polymorfismi

Tutustukaa olio-ohjelmoinnin edistyneisiin käsitteisiin.

Oppitunti 5/510 vaihetta

Polymorfismi on ilmainen Python For Kids-oppitunti CoddyKitissä. Tämä on oppitunti 5/5. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python For Kids-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python For Kids-kurssilla on yhteensä 5 oppituntia.

Monimuotoisuus

Tervetuloa takaisin olio-ohjelmoinnin (OOP) oppitunnille! Tänään tutustumme Pythonin monimuotoisuuteen, tehokkaaseen käsitteeseen, jonka ansiosta oliot voivat esiintyä useissa eri muodoissa.

Polymorfismi — kuvitus 1

Mitä monimuotoisuus on?

Monimuotoisuus on OOP:n keskeinen käsite, jonka ansiosta eri luokkien olioita voidaan käsitellä yhteisen yliluokan olioina. Sen avulla sama metodi voi toimia eri tavalla sen kutsuvan olion mukaan.

  • Määritelmä: "Monia muotoja" – eri olioiden kyky vastata samalla metodikutsulle omalla tavallaan.
  • Tarkoitus: Parantaa koodin joustavuutta ja yhteensopivuutta mahdollistamalla olioiden vaihtamisen keskenään.

Tarkastellaan, miten monimuotoisuus toimii Pythonissa!

Monimuotoisuuden toteuttaminen

Monimuotoisuus voidaan saavuttaa Pythonissa ylikirjoittamalla metodeja ja käyttämällä sisäänrakennettuja funktioita, jotka toimivat eri oliotyyppien kanssa.

  • Metodin ylikirjoittaminen: Lapsiluokassa uudelleen määritelty metodi, joka on jo määritelty emoluokassa.
  • Sisäänrakennetut funktiot: Esimerkiksi len()-funktiot, jotka toimivat erilaisten tietotyyppien kanssa.

Tarkastellaan metodin ylikirjoittamista yksityiskohtaisesti.

Metodin ylikirjoittaminen

Metodin ylikirjoittamisen ansiosta lapsiluokka voi tarjota tietyn toteutuksen metodille, joka on jo määritelty sen emoluokassa. Tämä on monimuotoisuuden keskeinen osa.

Esimerkki:

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

Lapsiluokkien luominen ylikirjoitetuilla metodeilla

Luodaan lapsiluokkia, jotka perivät Animal-luokan ja ylikirjoittavat speak-metodin tarjotakseen luokkakohtaisen toiminnan.

Esimerkki:

# 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

Monimuotoisuuden käyttäminen ylikirjoitettujen metodien kanssa

Luodaan nyt lapsiluokkien olioita ja tarkastellaan, miten ne toimivat eri tavoin käyttäessään samaa metodin nimeä.

Esimerkki:

# 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.

Monimuotoisuus sisäänrakennettujen funktioiden kanssa

Monimuotoisuus ei rajoitu käyttäjän määrittämiin luokkiin. Pythonin sisäänrakennetut funktiot, kuten len(), toimivat eri tietotyyppien kanssa ja havainnollistavat monimuotoista toimintaa.

Esimerkki:

# 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

Esimerkkiohjelma: muotojen pinta-alan laskeminen

Luodaan ohjelma, joka laskee eri muotojen pinta-alat monimuotoisuuden avulla. Määrittelemme emoluokan Shape sekä lapsiluokat Circle ja Rectangle, jotka ylikirjoittavat area-metodin.

Koodi:

# 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()

Hienoa työtä!

Olette oppineet, mitä monimuotoisuus tarkoittaa Pythonissa ja miten eri luokkien oliot voivat vastata samalla metodikutsulle omalla tavallaan. Monimuotoisuus parantaa koodin joustavuutta ja skaalautuvuutta, joten koodia on helpompi hallita ja laajentaa. Jatkakaa harjoittelua luomalla lisää luokkia ja metodeja, jotka hyödyntävät monimuotoista toimintaa, jotta ymmärryksenne vahvistuu!

Polymorfismi — kuvitus 10
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
22
Oppitunnit
94

Usein kysytyt kysymykset

Onko oppitunti ”Polymorfismi” ilmainen?

Kyllä – oppitunnin ”Polymorfismi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python For Kids-kurssin, päivitä CoddyKit PROhon. Python For Kids-kurssilla on yhteensä 5 oppituntia.

Mitä opin oppitunnilla ”Polymorfismi”?

Tutustukaa olio-ohjelmoinnin edistyneisiin käsitteisiin. Harjoittelet Python For Kids-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python For Kids-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python For Kids-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 5/5.

Kuinka kauan ”Polymorfismi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python For Kids-oppitunnilla?

Kyllä. Jokainen Python For Kids-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Johdanto olio-ohjelmointiin
  2. Luokkien ja olioiden luominen
  3. Periytyminen
  4. Kapselointi
  5. Polymorfismi
← Takaisin: Python For Kids