Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Introduction to Polymorphism | Polymorfismi
Olio-ohjelmointi Pythonissa

bookIntroduction to Polymorphism

Pyyhkäise näyttääksesi valikon

Note
Määritelmä

Polymorfismi on olio-ohjelmoinnin keskeinen periaate, jonka avulla erityyppisiä olioita voidaan käsitellä samana tyyppinä yhteisen rajapinnan kautta. Tämä tekee koodista joustavampaa sekä helpommin ylläpidettävää ja laajennettavaa.

Ajattele polymorfismia tilanteena, jossa eri oliot vastaavat samaan metodikutsuun, mutta kukin omalla tavallaan. Esimerkiksi kutsuttaessa speak()-metodia eri eläimille saadaan erilaisia tuloksia:

  • Dog palauttaa "Woof!";
  • Cat palauttaa "Meow!";
  • Cow palauttaa "Moo!".

Metodin nimi pysyy samana, mutta jokainen olio tarjoaa oman toteutuksensa.

Note
Huomio

Ilman polymorfismia koodi vaatii erillisiä funktioita ja monimutkaisia ehtolauseita, mikä tekee siitä vaikeammin laajennettavaa ja altistaa toistolle sekä ylläpito-ongelmille.

Python tukee useita polymorfismin muotoja, jotka kaikki mahdollistavat olioiden yhteisen rajapinnan käytön, vaikka niiden käyttäytyminen olisi yksilöllistä.

Duck typing
expand arrow

Mahdollistaa olioiden käytön niiden käyttäytymisen (metodit/attribuutit) perusteella, ei niiden tyypin mukaan.

Metodin ylikirjoitus
expand arrow

Mahdollistaa, että aliluokka voi tarjota oman toteutuksensa peritylle metodille, mahdollistaen erikoistuneen käyttäytymisen.

Operaattorien ylikuormitus
expand arrow

Määrittelee uudelleen, miten operaattorit (+, -, *, jne.) toimivat omien olioiden kanssa, tehden niistä luontevia ja intuitiivisia käyttää.

Abstraktit kantaluokat (ABCluokat)
expand arrow

Määrittelee muodolliset sopimukset, joita aliluokkien on noudatettava, varmistaen johdonmukaisuuden ja rakenteellisen suunnittelun toteutuksissa.

Tarkastellaan tosielämän mediasoitin-esimerkkiä. MediaPlayer-luokan ei tarvitse tietää, käsitteleekö se AudioFile, VideoFile vai ImageFile -olioita. Se kutsuu yksinkertaisesti jokaisen mediaolion play()-metodia, ja jokainen tyyppi huolehtii toistosta omalla sopivalla tavallaan. Juuri tämän polymorfismi mahdollistaa.

question mark

Mikä on polymorfismin päätarkoitus olio-ohjelmoinnissa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 1
some-alt