Sto cercando il nome (i) di un concetto che ho sentito. So che non esiste in molti linguaggi di programmazione, ma penso che esista almeno in C ++.
Fammi provare a spiegare il concetto.
Supponiamo di voler definire una collezione generica in qualche linguaggio di programmazione, e voglio che questa collezione contenga elementi di tipo A
e tipo B
. Nei linguaggi orientati agli oggetti come C # o Java posso farlo in almeno due modi diversi:
- Definisci la raccolta per contenere elementi di tipo
object
. - Crea un tipo (o interfaccia)
C
e modifica il codice in modo cheA
eB
ereditino entrambi (o implementino)C
. Quindi definisci la raccolta per contenere gli elementi di tipoC
.
Entrambi i modi hanno i loro problemi:
- mi consente di inserire tutto nella raccolta anziché solo
A
eB
, che potrebbe non essere quello che voglio. - funziona solo se posso modificare il codice di A e B.
E il concetto che sto cercando consente un terzo approccio:
- definisce un "contenitore di tipi"
T
che contiene siaA
cheB
e può essere usato come un tipo regolare, in modo da poter creare una raccolta diT
.
In questo caso, sarei in grado di inserire A
e B
nella raccolta, ma non mi sarebbe richiesto di modificare il codice di A
e B
.
Lo stesso concetto consente di definire metodi che richiedono un A
o B
come input e li elaborano allo stesso modo. Per esempio. potremmo voler definire un metodo Square
che prende un int
o un float
x
e restituisce x*x
. Con questo concetto, non avremmo bisogno di definire due metodi (uno per int
, uno per float
).