Overerving (informatica)

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door RoboRex (overleg | bijdragen) op 2 mei 2005 om 04:19. (robot Erbij:lt)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.

Overerving is een term die gebruikt wordt bij de methodiek van het object-georiënteerd programmeren. Het betekent dat een klasse variabelen (eigenschappen) en - afhankelijk van de definitie van de programmeertaal voor methodes - functies en procedures erft van een superklasse.

Als superklasse kan bijvoorbeeld "Dier" genomen worden. Een van de eigenschappen van een "Dier" is de vorm; de vorm wordt bepaald door de DNA-code van het dier. Bij het aanmaken van het dier wordt de DNA-code bepaald. De DNA-code kan bepaald worden door het afnemen van bloed, voor het gemak geeft een functie met de naam "bloed" de DNA-code van het dier.

De klasse zou er alsvolgt uit kunnen zien:

   
   klasse Dier {
        constante DNAcode;
   
        constructor Dier(DNA) {DNAcode = DNA} // maakt het dier aan.
        methode bloed():DNAcode // geeft DNA code af d.m.v. bloed
        methode prikkel(Prikkel) // geeft een prikkel aan het dier
   }
   

Dieren reageren ook op prikkels van buiten, dus zou aan deze klasse ook een methode met de naam "prikkel" toegevoegd kunnen worden die een variabele waarde van de klasse binnenkrijgt en verwerkt.

   
   klasse Dier {
        constante DNAcode
   
        constructor Dier(DNA) {DNAcode = DNA} // maakt het dier aan.
        methode bloed():DNAcode // geeft DNA code af d.m.v. bloed
        methode prikkel(Prikkel) // geeft een prikkel aan het dier
   }
   

Door over te erven van de klasse "Dier" worden alle eigenschappen en methodes van die klasse overgenomen. Dit maakt het mogelijk om nieuwe diersoorten te maken die allemaal een DNA-code hebben en prikkels kunnen verwerken. De programmeur kan een nieuwe diersoort een unieke DNA-code geven en het op een andere manier laten reageren op een prikkel dan is voorgeschreven in de superklasse "Dier".

Een voorbeeld van een klasse die erft van "Dier" is een klasse "Zoogdier" die op zichzelf zijn eigenschappen en methodes overerft aan een klasse "Olifant".

   
   klasse Zoogdier (Dier) {
        variabele Geluid = 'zzzz';
        constructor Zoogdier(DNA) { super(DNA) } 
        methode maakGeluid():Geluid { return Geluid } // geeft het geluid van een Zoogdier
   }
   klasse Olifant (Zoogdier) {
        variabele Geluid = 'Muuuh'
        constructor Olifant { super('GCTTGGACCGTCGATGA') }
        methode stamp() // laat een Olifant stampen
   }
   

De "Zoogdier"-klasse neemt alle methodes en eigenschappen van "Dier" over en voegt er eigen methodes en eigenschappen aan toe. De "Olifant" klasse overschrijft alleen de variabele "Geluid", alle andere methodes en toegankelijke eigenschappen voor en van de klasse neemt hij over van zijn superklasse(n). Als het geluid van een "Olifant" wordt opgevraagd wordt dus het geluid 'Muuuh' teruggegeven in plaats van het standaardgeluid 'zzzz'.

Door overerving goed toe te passen is het dus mogelijk om van alle wezens die uiteindelijk eigenschappen erven van de superklasse "Dier" de DNA-code te krijgen en ze een prikkel toe te sturen dit wordt polymorfisme genoemd. Bij klassen die erven van "Zoogdier" kan zelfs het geluid worden opgevraagd.