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

C'è 1 commento
Pier Paolo
Condividi le tue opinioni su questo articolo!