Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Introduktion til Polymorfi | Oversigt Over Polymorfi
C++ OOP
course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Introduktion til Polymorfi

Note
Definition

Polymorfi er et centralt begreb. Ordet stammer fra græsk og betyder "mange former"; det gør det muligt for objekter fra forskellige classes at blive behandlet som et objekt af en fælles superklasse. Det mest væsentlige aspekt er, at forskellige enheder kan reagere på deres egen måde på den samme besked eller metodekald.

Typer af polymorfi

Der findes to hovedtyper af polymorfi: kompileringstid (statisk) og kørselstid (dynamisk). Forståelse af hvordan og hvornår hver type anvendes, er afgørende for at skrive fleksibel og effektiv kode.

  • Kompileringstidspolymorfi: opstår gennem funktion- eller operatoroverbelastning, hvor den metode der skal udføres, bestemmes ved kompilering.

  • Kørselstidspolymorfi: anvender virtuelle funktioner, hvilket gør det muligt for afledte klasser at overskrive basisklassens metoder, hvor den korrekte metode vælges under kørsel.

Anvendelse og behov for polymorfi

En glimrende måde at forstå polymorfi på er gennem en analogi fra den virkelige verden. Overvej en grafisk brugergrænseflade med en knap. Denne knap kan opføre sig forskelligt afhængigt af konteksten—den kan fungere som en upload-knap, en nulstil-knap eller en annuller-knap.

Hver knap udfører en særskilt handling, når den klikkes på, men de fungerer alle grundlæggende som knapper. Se den teoretiske implementering af dette koncept.

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; } };

Da alle knapper deler den samme onClick()-metode med forskellige implementeringer, lad os undersøge dette nærmere. Hvad hvis vi har brug for en funktion, der accepterer et objekt tilhørende en af knap-classes som parameter?

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(); }

Som du kan se, kan manuel oprettelse af separate funktioner for hver knap skabe kompleksitet, især ved ændringer, da hver funktion skal redigeres individuelt, hvis der opstår problemer. Derudover vil der i hovedfunktionen være behov for yderligere kontrol for at afgøre, hvilken funktion der skal kaldes. Polymorfi muliggør en nem løsning på disse problemer.

question mark

Hvad er den bogstavelige betydning af begrebet polymorfi?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Introduktion til Polymorfi

Note
Definition

Polymorfi er et centralt begreb. Ordet stammer fra græsk og betyder "mange former"; det gør det muligt for objekter fra forskellige classes at blive behandlet som et objekt af en fælles superklasse. Det mest væsentlige aspekt er, at forskellige enheder kan reagere på deres egen måde på den samme besked eller metodekald.

Typer af polymorfi

Der findes to hovedtyper af polymorfi: kompileringstid (statisk) og kørselstid (dynamisk). Forståelse af hvordan og hvornår hver type anvendes, er afgørende for at skrive fleksibel og effektiv kode.

  • Kompileringstidspolymorfi: opstår gennem funktion- eller operatoroverbelastning, hvor den metode der skal udføres, bestemmes ved kompilering.

  • Kørselstidspolymorfi: anvender virtuelle funktioner, hvilket gør det muligt for afledte klasser at overskrive basisklassens metoder, hvor den korrekte metode vælges under kørsel.

Anvendelse og behov for polymorfi

En glimrende måde at forstå polymorfi på er gennem en analogi fra den virkelige verden. Overvej en grafisk brugergrænseflade med en knap. Denne knap kan opføre sig forskelligt afhængigt af konteksten—den kan fungere som en upload-knap, en nulstil-knap eller en annuller-knap.

Hver knap udfører en særskilt handling, når den klikkes på, men de fungerer alle grundlæggende som knapper. Se den teoretiske implementering af dette koncept.

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; } };

Da alle knapper deler den samme onClick()-metode med forskellige implementeringer, lad os undersøge dette nærmere. Hvad hvis vi har brug for en funktion, der accepterer et objekt tilhørende en af knap-classes som parameter?

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(); }

Som du kan se, kan manuel oprettelse af separate funktioner for hver knap skabe kompleksitet, især ved ændringer, da hver funktion skal redigeres individuelt, hvis der opstår problemer. Derudover vil der i hovedfunktionen være behov for yderligere kontrol for at afgøre, hvilken funktion der skal kaldes. Polymorfi muliggør en nem løsning på disse problemer.

question mark

Hvad er den bogstavelige betydning af begrebet polymorfi?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 1
some-alt