PhpZone
a- a+

Estendere una classe

Ora dopo aver scritto la nostra bella Classe"Utente" decidiamo di espandere le suepotenzialità, aggiungendo nuove funzioni.
Ci sono due modi per farlo:
- Editare direttamente la Classe "Utente"
- Creare una nuova Classe che espanda la prima
La prima opzione è al quanto banale, decisamentepiù interessante la seconda! Vediamo come fare :

Creiamo una nuova classe con il nome NewUtente e inseriamoaltre banali funzioni di inserimento/estrazione di datidall'oggetto.

 

include ('Utente_class.inc'); //Collego alla classe a cui fa riferimento  class NewUtente extends Utente { //Classe che estende la prima  var $Forza,$Intelligenza,$Destrezza; //Variabili di Classe (DataMember)    function setStr ($IntStr) {  $this->Forza = $IntStr;    }    function setInt ($IntInt) {  $this->Intelligenza = $IntInt;    }    function setDex ($IntDex) {  $this->Destrezza = $IntDex;    }  function getStr (){return $this->Forza;    }    function getInt (){  return $this->Intelligenza;    }    function getDex (){  return $this->Destrezza;    }    function getNewInfo (){ //funzione che stampa una tabelle con tutti i dati    $Intestazione = '    '; $return = $Intestazione.'  

 

Nome Cognome Età Forza Intelligenza Destrezza
'.
      $this->Nome.
        '
'.
      $this->Cognome.
        '
'.
      $this->Eta.
        '
'.
      $this->Forza.
        '
'.
      $this->Intelligenza.
        '
'.
      $this->Destrezza.
        '
 
';     return $return;    }  }  ?>

Ora creiamo l'oggetto e impostiamo le caratteristiche:

include ("NewUtente_class.inc");  $gigi = new NewUtente;  $gigi-> setNome("Luigi");  $gigi-> setDex(100);  $gigi-> setInt(75);  $gigi-> setStr(80);  $gigi-> setEta(19);  $gigi-> setCognome("Mancini"); echo $gigi->getNewInfo();?>

Dunque dopo aver creato la nuova classe NewUtente abbiamoinserito la parola chiave "extends" quindi abbiamodefinito nuove variabili locali, e le varie funzioni che sioccupano della loro gestione, infine abbiamo messo unafunzione che stampa le informazioni.Come avrete notato tuttele funzioni della precedente classe sono state inglobate aquella della nuova classe, possiamo quindi richiamarequalsiasi funzione o variabile globale della classe. A pattoche nella nuova classe non si crei una funzione con un nomegià usato nella prima.
Un' esempio vi chiarirà le idee:

 

Class prima { function stampaStr(){   echo "Prima"; }}Class seconda extends prima { function stampaStr(){   echo "Seconda"  }}$Esempio = new seconda;$esempio-> stampaStr();

 

ci darà in output Seconda, proprio perchè lafunzione stampaStr viene ridefinita nella seconda classe.
Naturalmente si puo' estendere solo una classe allavolta :-).
Da questi brevi esempi si evidenzia instantaneamente, lafacilità di lettura del codice! Ora tramite pocherighe possiamo stampare una tabella per ogni nuovo utente chevogliamo creare, si potrebbe attaccarlo ad un database e farefare le query in automatico.Qui l'unico limite èla fantasia.

Altra particolarità si ha quando si crea una funzionecon lo stesso nome della classe. In questo caso la funzionevienechiamata quando si crea l'oggetto.

Es:

 

Class Prova { function Prova($variabile){   echo $variabile; }}$Obj = new Prova("sono entrato!!");

 

Se facciamo eseguire questo codice ci darà in output"sono entrato!!". Si potrà pensare benissimoquindi di utilizzare questa proprietà
per settare dei parametri iniziali, o far partire una seriedi funzioni interne alla classe.

Naturalmente una volta creato un oggetto lo possiamoduplicare, creando un nuovo oggetto con le stessecaratteristiche (non si crea quindi come referenza dalprimo).
La sintassi è banalissima:

$oggetto2 = $oggetto;

Vi sono altri concetti più avanzati sulle classi qualiil polymorphismo e la serializzazione. Ma credo sianoargomenti troppo pesanti per quelli che iniziano aprogrammare (Forse in qualche Tutorial più inlà ?).

L'utilizzo delle classi è sicuramente il metodopiù funzionale per la produzione di codiceflessibbile, potente e facile da gestire.Una volta scrittauna classe essa può essere riutilizzata in qualsiasimomento ed estesa con una facilità enorme. Come tutto,per poter realmente acquisire L'OOP non serve alto chepratica, pratica e ancora pratica.

 



Ti potrebbe interessare anche

commenta la notizia