Genericiteit: verschil tussen versies

39 bytes verwijderd ,  12 jaar geleden
k
k (Robot-geholpen doorverwijzing: Methode - Link(s) veranderd naar Methodes en technieken in de informatica)
'''Genericiteit''' of '''generics''' is een voorziening voor [[programmeertaal|programmeertalen]] die generiek programmeren toestaat. Dit betekent dat [[algoritme|algoritmes]]s kunnen worden geschreven in een bepaalde [[Syntaxis (informatica)|syntaxis]] waarbij de algoritmes adaptief zijn maar tevens nog door de [[compiler]] geïnstantieerd kunnen worden. Zo kunnen algoritmes ''generiek'' worden geschreven zonder snelheidsverlies. Een [[sorteeralgoritme]] hoeft zich met behulp van generiek programmeren niet bezig te houden met ''wat'' voor datatype het precies sorteert, maar alleen ''hoe'' het dat doet.
 
Generiek programmeren ligt dicht tegen [[meta-programmeren]] aan, een techniek waarbij aan de hand van bepaalde broncode weer nieuwe broncode wordt geprogrammeerd, die daarna wordt gecompileerd. Bij generiek programmeren gaat het echter om een [[syntaxis|syntactische]] en [[semantiek|semantische]] uitbreiding in de [[programmeertaal]] en wordt er niet direct 'nieuwe' broncode gegenereerd.
 
Genericiteit werd rond 1970 onderdeel van een aantal programmeertalen, zoals [[CLU]], [[Ada (programmeertaal)|Ada]]. Later werd de techniek ook onderdeel van veel andere object-geöriëntieerde talen, zoals [[C++]], [[C sharp|C#]], [[Eiffel (programmeertaal)|Eiffel]] en [[Java (programmeertaal)|Java]].
== Voorbeelden van generiek programmeren ==
=== Geparametriseerde klasse ===
Een veelgebruikte toepassing van generiek programmeren is het schrijven van 'container'-[[klasse (informatica)|klassen]], waarin allerlei objecten kunnen worden opgeslagen. Tijdens het schrijven van de container (bijvoorbeeld een lijst) hoeft het ''type'' object dat wordt opgeslagen niet bekend te zijn. Een voorbeeld in [[C++]]:
 
template<typename T> class List {
 
=== Geparametriseerde superklasse ===
Een derde manier van generiek programmeren die vaak wordt toegepast (in [[Java (programmeertaal)|Java]] en [[C++]]) is het parametrizeren van de superklasse. Stel, we hebben een [[Interface (Java)|interface]] ''Comparable'', die een [[Methodes en technieken in de informatica|methode]] ''compare'' definieert:
 
interface Comparable {
9.060

bewerkingen