InformaticaProgrammazione

Polimorfismo informatico: Cos’è e come funziona

Il polimorfismo è un importante concetto dell’informatica che permette di creare programmi flessibili e dinamici. Un oggetto può assumere diverse forme e comportarsi diversamente in base al contesto grazie al polimorfismo..

Per capire meglio come funziona il polimorfismo, è importante partire dalle basi della programmazione orientata agli oggetti. Ogni oggetto ha una serie di proprietà (attributi) e di comportamenti (metodi) che gli permettono di interagire con gli altri oggetti del sistema.

Il polimorfismo si basa sulla capacità degli oggetti di ereditare le proprietà e i comportamenti delle classi di cui fanno parte e di ridefinirli in modo autonomo. Questo significa che un oggetto può assumere forme diverse a seconda della classe di appartenenza e del contesto in cui viene utilizzato.

Ad esempio, se abbiamo una classe “Animale” e una classe “Cane” che eredita da “Animale”, possiamo definire un metodo “verso” nella classe “Animale” che emette un verso generico. Nel caso della classe “Cane”, possiamo ridefinire il metodo “verso” in modo che emetta un abbaio specifico per i cani.

Il polimorfismo consente anche di creare interfacce comuni tra oggetti di classi diverse, grazie alla definizione di metodi con lo stesso nome ma con comportamenti diversi. Questo rende i programmi più flessibili e modulabili, permettendo di aggiungere nuove funzionalità senza dover riscrivere tutto il codice.

Facciamo un esempio semplice in codice PHP:

interface Forma {
  public function calcolaArea();
}
class Rettangolo implements Forma {
  private $base;
  private $altezza;

  public function __construct($base, $altezza) {
    $this->base = $base;
    $this->altezza = $altezza;
  }

  public function calcolaArea() {
    return $this->base * $this->altezza;
  }
}
class Cerchio implements Forma {
  private $raggio;

  public function __construct($raggio) {
    $this->raggio = $raggio;
  }

  public function calcolaArea() {
    return pi() * pow($this->raggio, 2);
  }
}

$rettangolo = new Rettangolo(5, 10);
$cerchio = new Cerchio(3);

$forme = array($rettangolo, $cerchio);

foreach ($forme as $forma) {
  echo "L'area della forma è: " . $forma->calcolaArea() . "<br>";
}

In questo esempio, abbiamo definito un’interfaccia “Forma” che contiene un metodo “calcolaArea()” da implementare nelle classi che la implementano. Abbiamo poi creato due classi “Rettangolo” e “Cerchio” che implementano l’interfaccia “Forma” e definiscono il metodo “calcolaArea()” in modo diverso a seconda della forma geometrica.

Infine, abbiamo creato due oggetti di tipo “Rettangolo” e “Cerchio” e li abbiamo inseriti in un array. Con il ciclo “foreach“, abbiamo iterato sull’array e richiamato il metodo “calcolaArea()” su ciascun oggetto, ottenendo in output l’area della forma geometrica corrispondente. Questo è un esempio di polimorfismo, in quanto l’array contiene oggetti di classi diverse ma che implementano lo stesso metodo dell’interfaccia.

/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *