Il polimorfismo nella programmazione ad oggetti

Il polimorfismo è un altro concetto fondamentale della programmazione ad oggetti (OOP – Object-Oriented Programming) che consente di scrivere codice che può gestire oggetti di diverse classi in modo uniforme, senza la necessità di conoscere il tipo specifico di ogni oggetto.

In pratica, il polimorfismo consente di creare metodi che possono accettare oggetti di classi diverse e di eseguire operazioni specifiche su di essi a seconda del loro tipo effettivo.

Il polimorfismo può essere realizzato utilizzando le interfacce. Un’interfaccia è una collezione di metodi astratti, che specificano i comportamenti che le classi che implementano l’interfaccia devono fornire.

Ad esempio, se consideriamo una classe madre “FiguraGeometrica” e due classi figlie “Cerchio” e “Quadrato”, entrambe con un metodo “calcolaArea”, il metodo può essere chiamato sulle istanze di entrambe le classi, ma verrà eseguito in modo diverso a seconda del tipo di oggetto:

public interface FiguraGeometrica {

public double calcolaArea();

}

public class Cerchio : FiguraGeometrica {

// proprietà e metodi specifici del cerchio

public double calcolaArea() {

// calcola l’area del cerchio

}

}

public class Quadrato : FiguraGeometrica {

// proprietà e metodi specifici del quadrato

public double calcolaArea() {

// calcola l’area del quadrato

}

}

// utilizzo del polimorfismo

FiguraGeometrica f1 = new Cerchio();

FiguraGeometrica f2 = new Quadrato();

double area1 = f1.calcolaArea(); // chiama il metodo calcolaArea del cerchio

double area2 = f2.calcolaArea(); // chiama il metodo calcolaArea del quadrato