La genericità

  • Facciamo un esempio. Vogliamo definire una classe lista, che possa essere usata per raccogliere qualunque tipo di oggetto.
  • Una volta definita la lista, noi vorremo poi creare liste di cani e liste di gatti e liste di qualunque altro oggetto ci venga in mente
  • Vorremo, ad esempio, poter definire una lista <cani> ed una lista <gatti>
  • Il problema è come riferirci all'oggetto della lista?
  • È un problema analogo a quello dei parametri formali e parametri attuali
  • Dovremo in pratica definire la nostra classe riferendoci ad una classe formale che verrà sostituita, quando definiremo l'istanza della classe con una classe attuale
  • Quelle che ho definito come classi formali prendono il nome di prototipi di classe e dovranno essere sostituiti con classi attuali nella definizione di un oggetto
  • Il compilatore sarà in grado fi verificare la coerenza dei tipi (analisi semantica) anche tramite le classi prototipo (o template)
  • Anche la genericità ottenuta tramite i prototipi di classe non è implementata in tutti i linguaggi ad oggetti

© Ing. Stefano Salvi - All rights reserved