Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Introductie tot Polymorfisme | Overzicht van Polymorfisme
C++ OOP
course content

Cursusinhoud

C++ OOP

C++ OOP

1. Fundamenten van OOP in C++
2. Constructors en Destructors
3. Overzicht van Encapsulatie
4. Overzicht van Overerving
5. Overzicht van Polymorfisme

book
Introductie tot Polymorfisme

Note
Definitie

Polymorfisme is een fundamenteel concept. Afgeleid van het Grieks, wat "veelvormigheid" betekent, maakt het mogelijk dat objecten van verschillende classes behandeld worden als een object van een gemeenschappelijke superklasse. Het belangrijkste aspect is het vermogen van verschillende entiteiten om op hun eigen manier te reageren op hetzelfde bericht of dezelfde methode-aanroep.

Typen polymorfisme

Er zijn twee hoofdtypen polymorfisme: compile-tijd (statisch) en runtime (dynamisch). Inzicht in hoe en wanneer elk type te gebruiken is essentieel voor het schrijven van flexibele, efficiënte code.

  • Compile-tijd polymorfisme: vindt plaats via functie- of operator-overloading, waarbij de uit te voeren methode tijdens het compileren wordt bepaald.

  • Runtime polymorfisme: maakt gebruik van virtuele functies, waardoor afgeleide klassen basisklasse-methoden kunnen overschrijven, waarbij de juiste methode tijdens de uitvoering wordt gekozen.

Toepassing en noodzaak van polymorfisme

Een uitstekende manier om polymorfisme te begrijpen is via een analogie uit de echte wereld. Denk aan een grafische gebruikersinterface met een knop. Deze knop kan zich verschillend gedragen afhankelijk van de context—het kan functioneren als een uploadknop, een resetknop of een annuleerknop.

Elke knop voert een specifieke actie uit wanneer erop wordt geklikt, maar ze functioneren allemaal in wezen als knoppen. Bekijk de theoretische implementatie van dit concept.

UploadButton.h

UploadButton.h

ResetButton.h

ResetButton.h

CancelButton.h

CancelButton.h

copy
1234
class UploadButton : public Button { public: void onClick() { std::cout << "Upload" << std::endl; } };

Aangezien alle knoppen dezelfde onClick()-methode delen met verschillende implementaties, gaan we dieper in op dit onderwerp. Wat als we een functie nodig hebben die een object van een van de knop-classes als parameter accepteert?

main.cpp

main.cpp

copy
1234567891011
void user_clicked_upload_button(const UploadButton& btn) { btn.onClick(); } void user_clicked_reset_button(const ResetButton& btn) { btn.onClick(); } void user_clicked_cancel_button(const CancelButton& btn) { btn.onClick(); }

Zoals je kunt zien kan het handmatig aanmaken van afzonderlijke functies voor elke knop complexiteit veroorzaken, vooral bij aanpassingen, omdat elke functie individueel moet worden aangepast als er problemen optreden. Ook zijn in de hoofdfunctie extra controles nodig om te bepalen welke functie moet worden aangeroepen. Polymorfisme biedt een eenvoudige oplossing voor deze problemen.

question mark

Wat is de letterlijke betekenis van de term polymorfisme?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

course content

Cursusinhoud

C++ OOP

C++ OOP

1. Fundamenten van OOP in C++
2. Constructors en Destructors
3. Overzicht van Encapsulatie
4. Overzicht van Overerving
5. Overzicht van Polymorfisme

book
Introductie tot Polymorfisme

Note
Definitie

Polymorfisme is een fundamenteel concept. Afgeleid van het Grieks, wat "veelvormigheid" betekent, maakt het mogelijk dat objecten van verschillende classes behandeld worden als een object van een gemeenschappelijke superklasse. Het belangrijkste aspect is het vermogen van verschillende entiteiten om op hun eigen manier te reageren op hetzelfde bericht of dezelfde methode-aanroep.

Typen polymorfisme

Er zijn twee hoofdtypen polymorfisme: compile-tijd (statisch) en runtime (dynamisch). Inzicht in hoe en wanneer elk type te gebruiken is essentieel voor het schrijven van flexibele, efficiënte code.

  • Compile-tijd polymorfisme: vindt plaats via functie- of operator-overloading, waarbij de uit te voeren methode tijdens het compileren wordt bepaald.

  • Runtime polymorfisme: maakt gebruik van virtuele functies, waardoor afgeleide klassen basisklasse-methoden kunnen overschrijven, waarbij de juiste methode tijdens de uitvoering wordt gekozen.

Toepassing en noodzaak van polymorfisme

Een uitstekende manier om polymorfisme te begrijpen is via een analogie uit de echte wereld. Denk aan een grafische gebruikersinterface met een knop. Deze knop kan zich verschillend gedragen afhankelijk van de context—het kan functioneren als een uploadknop, een resetknop of een annuleerknop.

Elke knop voert een specifieke actie uit wanneer erop wordt geklikt, maar ze functioneren allemaal in wezen als knoppen. Bekijk de theoretische implementatie van dit concept.

UploadButton.h

UploadButton.h

ResetButton.h

ResetButton.h

CancelButton.h

CancelButton.h

copy
1234
class UploadButton : public Button { public: void onClick() { std::cout << "Upload" << std::endl; } };

Aangezien alle knoppen dezelfde onClick()-methode delen met verschillende implementaties, gaan we dieper in op dit onderwerp. Wat als we een functie nodig hebben die een object van een van de knop-classes als parameter accepteert?

main.cpp

main.cpp

copy
1234567891011
void user_clicked_upload_button(const UploadButton& btn) { btn.onClick(); } void user_clicked_reset_button(const ResetButton& btn) { btn.onClick(); } void user_clicked_cancel_button(const CancelButton& btn) { btn.onClick(); }

Zoals je kunt zien kan het handmatig aanmaken van afzonderlijke functies voor elke knop complexiteit veroorzaken, vooral bij aanpassingen, omdat elke functie individueel moet worden aangepast als er problemen optreden. Ook zijn in de hoofdfunctie extra controles nodig om te bepalen welke functie moet worden aangeroepen. Polymorfisme biedt een eenvoudige oplossing voor deze problemen.

question mark

Wat is de letterlijke betekenis van de term polymorfisme?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1
some-alt