martedì 17 aprile 2012

Concetti di OOP: Cos'è l'Ereditarietà

Tipi differenti di oggetti hanno spesso una parte comune gli uni con gli altri. Le mountain bike, le biciclette da corsa e i tandem, per esempio, condividono le caratteristiche delle biciclette (velocità, cadenza, marcia). In più ognuna ha delle caratteristiche proprie che la rendono differente: il tandem ha due posti e due manubri; la bicicletta da corsa ha il manubrio curvo; qualche mountain bike ha un anello addizionale per la catena, che le conferisce un rapporto di trasmissione più basso.

La programmazione orientata agli oggetti permette alle classi di ereditare stato e comportamento utilizzati da altre classi. In questo esempio, Bicicletta è superclasse di MountainBike, RoadBike e TandemBike. In PHP, a ogni classe è consentito avere una superclasse diretta, e ogni superclasse può avere un numero potenzialmente illimitato di sottoclassi:

Una gerarchia di classi Bicicletta
La sintassi per la creazione di una sottoclasse è semplice. All’inizio della dichiarazione della classe, si utilizza la parola chiave extends, seguita dal nome della classe da cui eredita:

class MountainBike extends Bicicletta{
    // definizione di nuovi campi e metodi
    // di una mountain bike vanno inseriti qui
}

In questo modo MuntainBike ha tutti i campi e metodi come Bicicletta, permettendo al suo codice di porre l’attenzione esclusivamente sulle caratteristiche che la rendono unica. Ciò rende il codice delle sottoclassi semplice da leggere. D’altra parte, bisogna aver cura di documentare correttamente stato e comportamento di ogni superclasse, giacché tale codice non appare nel sorgente delle sottoclassi.