Methode (objectoriëntatie)

objectoriëntatie

In het objectgeoriënteerd programmeren is methode een synoniem van member-functie. Het is dus een functie die behoort tot een klasse. Alle methodes van een object/klasse samen beschrijven zijn interface en zijn gedrag.

De term 'methode' is oorspronkelijk afkomstig uit de taal Smalltalk, maar is daarna veralgemeend voor al het objectgeoriënteerd programmeren.

Constructor bewerken

  Zie Constructor voor het hoofdartikel over dit onderwerp.

Een bijzondere klasse van methodes is die van de constructoren. Een constructor is een functie die aangeroepen wordt als een object gecreëerd wordt. Deze dient om het object te initialiseren. Door overloading kan een klasse meerdere constructoren hebben.

Een bijzonder soort constructor is de copy-constructor. Deze functie maakt een kopie van het object en geeft deze terug. Doorgaans is dit een zogenaamde diepe kopie. Dat wil zeggen dat alle geaggregeerde objecten meegekopieerd worden.

Overerven van methodes bewerken

Bij overerven van methodes komen plots twee varianten kijken.

  • concrete functie
  • virtuele functie

Het verschil tussen de twee is dat een overgeërfd object in geval van een typeconversie naar zijn ouder (parent) in het geval van een concrete functie de functie van de parent aanroept, en in het geval van de virtuele functie die van het oorspronkelijke object. Voorbeeld in pseudocode:

klasse Ouder
virtual v()
concrete c()
einde Ouder
klasse Kind erftvan Ouder
v() // hoort bij het object, ook na typecast
c() // hoort bij de klasse Kind
einde Kind
functie hoofdprog()
Kind k;
((Ouder)k).v() // dit roept Kind.v() aan, ondanks de typecast
((Ouder)k).c() // dit roept Ouder.c() aan na de typecast
einde hoofdprog

Statische methode bewerken

Een statische methode is een methode die werkt op het niveau van klassen en niet op het niveau van objecten. Een statische methode hoort niet bij een object maar het hoort bij een klasse: deze methode is uit te voeren zonder een instantie van die klasse aan te maken. Een statische methode kan niet verwijzen naar een instantie (met this, me of self) aangezien de methode niet bij een object hoort.

In C++, C# en Java wordt een statische methode aangegeven met het sleutelwoord static en in Visual Basic .NET wordt het aangeduid met shared.

Een voorbeeld van een statische methode in Java:

public class VoorbeeldKlasse {
    public static void statischeMethode()
    {
    }
 
    public void instantieMethode()
    {
    }
}

Deze klasse kan als volgt gebruikt worden:

// aanroep van de statische methode
VoorbeeldKlasse.statischeMethode();
 
// aanroep van de instantiemethode
VoorbeeldKlasse instantie = new VoorbeeldKlasse();
instantie.instantieMethode();