PhpZone
a- a+

Estendere una classe

Ora dopo aver scritto la nostra bella Classe "Utente" decidiamo di espandere le sue potenzialità, 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, decisamente più interessante la seconda! Vediamo come fare :

Creiamo una nuova classe con il nome NewUtente e inseriamo altre banali funzioni di inserimento/estrazione di dati dall'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 abbiamo inserito la parola chiave "extends" quindi abbiamo definito nuove variabili locali, e le varie funzioni che si occupano della loro gestione, infine abbiamo messo una funzione che stampa le informazioni.Come avrete notato tutte le funzioni della precedente classe sono state inglobate a quella della nuova classe, possiamo quindi richiamare qualsiasi funzione o variabile globale della classe. A patto che nella nuova classe non si crei una funzione con un nome già 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è la funzione stampaStr viene ridefinita nella seconda classe.
Naturalmente si puo' estendere solo una classe alla volta :-).
Da questi brevi esempi si evidenzia instantaneamente, la facilità di lettura del codice! Ora tramite poche righe possiamo stampare una tabella per ogni nuovo utente che vogliamo creare, si potrebbe attaccarlo ad un database e fare fare le query in automatico.Qui l'unico limite è la fantasia.

Altra particolarità si ha quando si crea una funzione con lo stesso nome della classe. In questo caso la funzione vienechiamata 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 benissimo quindi di utilizzare questa proprietà
per settare dei parametri iniziali, o far partire una serie di funzioni interne alla classe.

Naturalmente una volta creato un oggetto lo possiamo duplicare, creando un nuovo oggetto con le stesse caratteristiche (non si crea quindi come referenza dal primo).
La sintassi è banalissima:

$oggetto2 = $oggetto;

Vi sono altri concetti più avanzati sulle classi quali il polymorphismo e la serializzazione. Ma credo siano argomenti troppo pesanti per quelli che iniziano a programmare (Forse in qualche Tutorial più in là ?).

L'utilizzo delle classi è sicuramente il metodo più funzionale per la produzione di codice flessibbile, potente e facile da gestire.Una volta scritta una classe essa può essere riutilizzata in qualsiasi momento ed estesa con una facilità enorme. Come tutto, per poter realmente acquisire L'OOP non serve alto che pratica, pratica e ancora pratica.

 

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Lorenzo
Hai qualche domanda da fare?