Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Esimerkki 1. Moniperiytyminen.

CHevonen:

Code Block
class CHevonen
{
public:
    void Aantele() {
        printf("Iii-haa-haa!\n");
    }
};

CLintu:

Code Block
class CLintu
{
public:
    void Lenna() {
        printf("Lintu lentää\n");
    }
};

CPegasus:

Code Block
class CPegasus :
    public CHevonen,
    public CLintu
{
};

main:

Code Block
int main()
{
    CPegasus pegasus;

    pegasus.Aantele();
    pegasus.Lenna();
}

Nyt lentävä hevonen perii sekä hevosen että linnun piirteet. Yksi ongelma moniperiytymisessä tulee vastaan, jos molemmilla perittävillä luokilla on samanniminen metodi. Esimerkiksi Syo()-funktio.


Kuva 1. Esimerkin 1 UML-luokkakaavio.
 

...


Kuva 2. Esimerkin 2 UML-luokkakaavio.

Ratkaisu:

Ongelma voidaan kiertää määrittelemällä kumpaa Syo()-funktioista halutaan käyttää:

...