Redazione
a- a+

Interfacce cosa sono e come si usano

Imparare ad usare le interfacce in PHP5. Codici ed esempi.

Un’interfaccia consente di specificare che un oggetto è in grado di svolgere una certa funzione, ma non necessariamente spiega come l’oggetto opera. Non è possibile definire attributi ma si definiscono una serie di metodi che le classi dovranno implementare. Un’interfaccia si dichiara con la keyword interface. Le classi che implementano l’interfaccia devono aggiungere

implements <NomeInterfaccia>

nella dichiarazione della classe.

interface Storable {function getContentsAsText();} class Document implements Storable {public function getContentsAsText() {return "Ciao Mondo";}} class Indexer {public function readAndIndex(Storable $s) {$textData = $s->getContentsAsText();echo $textData;}} $p = new Document(); $i = new Indexer();$i->readAndIndex($p);

Nell’esempio Document ed Indexer sono due classi indipendenti. La classe Indexer è stata progettata per indicizzare i contenuti di qualsiasi testo. Utilizzando l’interfaccia Storable non facciamo altro che dichiarare un metodo getContentsAsText() della classe Document. Dato che la classe Indexer è impiegata solo con $textData, possiamo chiamare il metodo getContentsAsText() sull’oggetto di Document. In questo modo ogni classe che implementa il metodo getContentsAsText() può ottenere l’indicizzazione.

Per le interfacce è possibile usare anche l’ereditarietà multipla.È possibile quindi costruire una classe che implementa più interfacce: è sufficiente inserire i nomi di tutte le interfacce separate da una virgola. Ecco l’esempio, supponendo che esista un’interfaccia chiamata AltraInterfche dichiara il metodo altraFunzione().

<?php // Definizione della classe Cerchio class Cerchio implements Forma, AltraInterf { public function disegna(){ // ... disegna il cerchio ... } public function colore($colore){ // ... imposta il colore ... } public function altraFunzione(){ // ... codice della funzione dichiarata in AltraInterf } } ?> 

Da quello che abbiamo fin qui detto risulta che un’interfaccia è un particolare tipo di classe astratta, ma differisce da essa per alcune caratteristiche che qui puntualizziamo.

Differenze tra classi astratte ed interfacce

Cassi astratte

  • Una classe astratta può provvedere ad alcune funzioni e lasciare il resto alle classi derivate.
  • La classe derivata può o non può sovrascrivere le funzioni definite nella classe base.
  • La classe figlia estesa da una classe astratta dovrebbe essere in relazione logica.

Interfacce

  • Un’interfaccia non può contenere alcuna funzionalità. Contiene solo definizioni di metodi.
  • Le classi derivate devono provvedere al codice per tutti i metodi definiti nell’interfaccia.
  • Classi completamente differenti e non in relazione logica possono essere raggruppate insieme tramite un’interfaccia.



Ti potrebbe interessare anche

commenta la notizia