Elenet.net
0 voti
Spiegare il concetto di polimorfismo nella programmazione a oggetti.
quesito posto 18 Maggio 2017 in Classe quarta da Samuele Capizzi Corsista (103 punti)
  

1 Risposta

0 voti

l polimorfismo ad hoc permette di avere delle funzioni di nome identico, con delle funzionalità simili, in classi che non hanno nessun rapporto fra loro (se non ovviamente essere figlie della stessa classe oggetto). 

Il polimorfismo  definisce quindi degli operatori il cui uso sarà diverso secondo il tipo di parametri che gli sono passati. E' così possibile ad esempio sovraccaricare l'operatore + e fargli realizzare delle azioni diverse a seconda se si tratti di un'operazione tra due numeri interi (addizione) o tra due stringhe di caratteri (concatenazione).

Il polimorfismo parametrico, detto genericità, rappresenta la possibilità di definire più funzioni di nome identico ma con parametri diversi (in numero e/o tipo). Il polimorfismo parametrico rende quindi possibile la scelta automatica del metodo corretto da adottare secondo il tipo di dato definito. 

Così, si possono ad esempio definire più metodi omonimi che effettuano una somma di valori: 

Il metodo int addition (int, int) darà come risultato la somma di due numeri interi; 

Il metodo float addition (float, float) darà come risultato la somma di due flottanti; 

Il metodo char addition(char, char) potrà definire la somma di due caratteri scelti dall'autore, ecc. 

Viene chiamata firma il numero e il tipo (statico) di argomenti di una funzione. È quindi la firma di un metodo a determinarne il funzionamento.

In PHP questo vale solamente in termini di numero e nome dei parametri e non per il tipo (essendo il linguaggio non fortemente tipato)

Il polimorfismo ereditario

La possibilità di ridefinire un metodo in classi ereditiere di una classe di base viene detta specializzazione. E' quindi possibile denominare il metodo di un oggetto senza preoccuparsi del suo tipo intrinseco: si tratta del polimorfismo ereditario. Questo permette di estrarre dei dettagli delle classi specializzate da una famiglia di oggetto, nascondendole in un'interfaccia comune (che è la classe di base). 

risposta inviata 19 Maggio 2017 da Gianni Messina Esperto (736 punti)

Domande correlate

+3 voti
0 risposte
quesito posto 30 Marzo 2023 in Informatica da RiccardoPrestifilipp (22 punti) | 63 visite
+1 voto
0 risposte
0 voti
0 risposte
quesito posto 16 Novembre 2016 in Classe quarta da Gianni Messina Esperto (736 punti) | 286 visite
778 domande
1,565 risposte
639 commenti
1,445 utenti