Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Meervoudige Overerving | Overzicht van Overerving
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
Meervoudige Overerving

Meervoudige overerving stelt een afgeleide klasse in staat om van meerdere basisklassen te erven. Dit betekent dat een enkele afgeleide klasse toegang kan hebben tot de leden (gegevens en functies) van meerdere basisklassen, waardoor hun attributen en gedrag effectief worden gecombineerd.

Horizontale meervoudige overerving

Bij dit type meervoudige overerving erft een klasse eigenschappen en methoden van meerdere superklassen op hetzelfde niveau in de overervingshiërarchie. Beschouw classes: Shape en Color, elk met verschillende eigenschappen en methoden. De Shape definieert de vorm van een object en de Color definieert de kleur ervan.

Shape.h

Shape.h

Color.h

Color.h

copy
1234567
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };

Laten we nu een subklasse maken genaamd ColoredShape die eigenschappen en methoden erft van zowel de klassen Shape als Color.

ColoredShape.h

ColoredShape.h

copy
123456789
#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };

Verticale overerving

Bij diepte-overerving erft een class eigenschappen en methoden van zijn directe ouder en diens voorouders, waardoor een overervingsketen ontstaat. Neem bijvoorbeeld de class Vehicle, die als basis kan dienen voor overerving door Car, Truck en anderen. In ons voorbeeld gebruiken we de Car om het concept te illustreren.

Vehicle.h

Vehicle.h

Car.h

Car.h

copy
12345
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };

Om verticale overerving te bereiken, moet je een hiërarchie opzetten waarbij de ene class erft van een andere, en vervolgens een volgende klasse erft van de eerste, enzovoort. We kunnen een ElectricCar maken die alle eigenschappen en functionaliteiten erft van de Car, die op zijn beurt erft van de Vehicle, waarmee een complexe meervoudige overervingsstructuur wordt gecreëerd.

ElectricCar.h

ElectricCar.h

copy
123456
#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };

Waarom Meervoudige Overerving Nodig Is

Meervoudige overerving biedt flexibiliteit en hergebruik van code in situaties waarin een class gedrag of kenmerken van meer dan één ouder-class moet vertonen. Hier zijn enkele scenario's waarin meervoudige overerving voordelig is:

  • Reële rollen: een vliegende vogel kan eigenschappen combineren van zowel de Flying als de Bird class, waarmee beide vaardigheden worden weergegeven. De Flying class kan ook van toepassing zijn op vliegtuigen of andere vliegende objecten.

  • Code hergebruik: meervoudige overerving maakt het mogelijk voor een class om eigenschappen van verschillende basisklassen te hergebruiken zonder duplicatie.

  • Gerichte interfaces: stimuleert het combineren van kleine, specifieke interfaces in plaats van één grote, algemene interface te gebruiken.

Note
Opmerking

Splits een complex object op in eenvoudigere objecten en gebruik meervoudige overerving om flexibele en onderhoudbare software te creëren.

question mark

Welke van de volgende uitspraken over horizontale overerving is correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3

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
Meervoudige Overerving

Meervoudige overerving stelt een afgeleide klasse in staat om van meerdere basisklassen te erven. Dit betekent dat een enkele afgeleide klasse toegang kan hebben tot de leden (gegevens en functies) van meerdere basisklassen, waardoor hun attributen en gedrag effectief worden gecombineerd.

Horizontale meervoudige overerving

Bij dit type meervoudige overerving erft een klasse eigenschappen en methoden van meerdere superklassen op hetzelfde niveau in de overervingshiërarchie. Beschouw classes: Shape en Color, elk met verschillende eigenschappen en methoden. De Shape definieert de vorm van een object en de Color definieert de kleur ervan.

Shape.h

Shape.h

Color.h

Color.h

copy
1234567
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };

Laten we nu een subklasse maken genaamd ColoredShape die eigenschappen en methoden erft van zowel de klassen Shape als Color.

ColoredShape.h

ColoredShape.h

copy
123456789
#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };

Verticale overerving

Bij diepte-overerving erft een class eigenschappen en methoden van zijn directe ouder en diens voorouders, waardoor een overervingsketen ontstaat. Neem bijvoorbeeld de class Vehicle, die als basis kan dienen voor overerving door Car, Truck en anderen. In ons voorbeeld gebruiken we de Car om het concept te illustreren.

Vehicle.h

Vehicle.h

Car.h

Car.h

copy
12345
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };

Om verticale overerving te bereiken, moet je een hiërarchie opzetten waarbij de ene class erft van een andere, en vervolgens een volgende klasse erft van de eerste, enzovoort. We kunnen een ElectricCar maken die alle eigenschappen en functionaliteiten erft van de Car, die op zijn beurt erft van de Vehicle, waarmee een complexe meervoudige overervingsstructuur wordt gecreëerd.

ElectricCar.h

ElectricCar.h

copy
123456
#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };

Waarom Meervoudige Overerving Nodig Is

Meervoudige overerving biedt flexibiliteit en hergebruik van code in situaties waarin een class gedrag of kenmerken van meer dan één ouder-class moet vertonen. Hier zijn enkele scenario's waarin meervoudige overerving voordelig is:

  • Reële rollen: een vliegende vogel kan eigenschappen combineren van zowel de Flying als de Bird class, waarmee beide vaardigheden worden weergegeven. De Flying class kan ook van toepassing zijn op vliegtuigen of andere vliegende objecten.

  • Code hergebruik: meervoudige overerving maakt het mogelijk voor een class om eigenschappen van verschillende basisklassen te hergebruiken zonder duplicatie.

  • Gerichte interfaces: stimuleert het combineren van kleine, specifieke interfaces in plaats van één grote, algemene interface te gebruiken.

Note
Opmerking

Splits een complex object op in eenvoudigere objecten en gebruik meervoudige overerving om flexibele en onderhoudbare software te creëren.

question mark

Welke van de volgende uitspraken over horizontale overerving is correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3
some-alt