web developer Umbria

PHP e OOP: overriding e polimorfismo

Articoli precedenti sullo stesso tema OOP in PHP:

https://umbriawayinfo.wordpress.com/2019/04/07/programmazione-procedurale-oppure-oop-this-is-the-problem/

https://umbriawaypotenzia.wordpress.com/2019/04/07/php-versione-sette-introdotte-nuove-direttive-per-trasformare-il-linguaggio-in-fortemente-tipicizzato/

https://umbriawaysemplifica.wordpress.com/2019/04/08/ambito-di-visibilita-delle-variabili-in-php-public-protected-private/

https://umbriawaytarget.wordpress.com/2019/04/08/php-oop-magic-method-e-costruttori/

https://umbriawayvalorizza.wordpress.com/2019/04/08/warning-ambito-di-visibilita-publica-delle-classi-encapsulation-e-sicurezza-metodi-getter-e-setter/

https://umbriawayvendita.wordpress.com/2019/04/09/php-e-oop-magic-method-__autoload-ereditarieta-pianificazione-iniziale-con-uml/

Quando lo stesso metodo dà due risultati diversi (immaginiamo il prezzo ad esempio della classe prodotto che é diversa dal metodo della classe figlio) si dice che abbiamo una situazione di POLIMORFISMO, ossia quando ho la necessità di personalizzare un parametro diverso rispetto alla classe padre (ad esempio ho un metodo setPrezzo che va ampliato che é presente nela classe PARENT e che posso personalizzare nella classe figlio) ho una sintassi che in PHP mi aiuta ossia la dicitura parent seguita da due punti, per esempio parent::$metodopadre o parent::setPrezzo($prezzo). E importante che il metodo conservi le stesse caratteristiche sul numero degli argomenti e sulla visibilità della classe padre. Nel caso dei membri statici si usa la parola self al posto di parent che fa riferimento come dice lo stesso nome alla classe padre. Quindi quando vediamo i due punti nel codice siamo sicuri che quello che seguirà nello script è un richiamo al metodo originale che verrà ampliato e richiamato e personalizzato nella classe figlio, in modo da valorizzare alcuni attributi che magari ci servono per allargare il campo di applicazione della nostra variabile (ad esempio prezzo di noleggio orario che nella classe originaria padre ha solo un metodo setPrezzo generico). Quindi con il metodo OVERRIDDING non faccio altro che sovrascrivere un metodo della classe padre con la classe figlio, riprendere l’originale senza riscriverla, sempre che la visibilità sia la stessa in entrambi i casi e che il numero degli argomenti implicati siano gli stessi.

Annunci