Wat is dynamische binding?

In de informatica is naambinding de associatie van een ID, zoals een functie of variabele naam, naar een deel van code of gegevens. In het meest voorkomende scenario, statische binding, is deze mapping bekend op compilatietijd. Bij dynamische binding is het object toegewezen door een functie niet bekend tijdens de compilatietijd en kan alleen worden bepaald tijdens de uitvoeringstijd. Om deze reden wordt dynamische binding ook late binding genoemd. Hoewel dynamische binding flexibiliteit biedt die niet beschikbaar is met statische binding, houdt het ook meer prestatiekosten in dan statische binding.

dynamische binding is nauw verwant aan polymorfisme, dat deel uitmaakt van objectgeoriënteerde programmering. Polymorfisme maakt het mogelijk om op verschillende manieren op verschillende manieren te worden geïmplementeerd. Als de code niet zodanig is geschreven dat de precieze methode niet kan worden bepaald tijdens het compileren, moet dynamische binding worden gebruikt.

Bijvoorbeeld een "vorm" CLASS heeft misschien een methode genaamd "Getarea", omdat elke vorm een ​​gebied heeft. Een "cirkel" subklasse van "vorm" zou echter "getAra" anders implementeren dan een "vierkante" subklasse. Daarom, als een nieuw object wordt gemaakt van type "vorm", en als code de methode "getArea" op die vorm oproept, zal de compiler niet weten of de vorm uiteindelijk een cirkel of een vierkant zal zijn, en daarom weet het niet welke getarea -methode moet worden aangeroepen. Dit is een voorbeeld van dynamische binding, omdat de juiste getarea -methode alleen tijdens de runtime wordt toegewezen, nadat het programma weet wat voor soort vorm het object is.

Dynamische binding maakt de flexibiliteit mogelijk om abstracte methoden te gebruiken zonder te weten welke specifieke implementatie zal worden gebruikt. In het voorbeeld "vorm" kan de code worden geschreven om dynamische binding te voorkomen door deze logica expliciet te gebruiken: als de vorm een ​​cirkel is, roep dan de GetArea -methode van de cirkel aan; Anders, als de vorm een ​​vierkant is, bel dan de specifieke getarea -methode voorvierkanten. Het voordeel van dynamische binding is dat de code schoner en onderhoudbaarder is dan het alternatief. In het statische bindende voorbeeld is er codeduplicatie en de code moet worden bijgewerkt wanneer een nieuw type vorm wordt toegevoegd.

De nadelen van dynamische binding zijn prestaties en veiligheid. Bij statische binding weet de compiler precies welke code hij moet aanroepen en kan de code optimaliseren om efficiënter uit te voeren. Type veiligheid kan een probleem zijn, omdat in sommige implementaties van dynamische binding een methode kan worden opgeroepen op een object dat de methode niet ondersteunt. De methode "Getarea" kan bijvoorbeeld worden opgeroepen op een object dat geen vorm is en daarom geen methode "getAra" heeft, wat kan leiden tot een runtime-fout. Statische binding zou dit scenario voorkomen door een compilatiefout te verhogen.

ANDERE TALEN