PHP/Programmazione/OOP: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 44:
 
 
<br><br>
 
Per accedere all'attributo dall'interno della classe si usa <code>this</code>, per accedervi dall'esterno: "il nome dell'oggetto <code>-></code> e il nome del metodo":
 
 
 
<br><br>
Per accedere all'attributo dall'interno della classe si usa <code>this</code>, per accedervi dall'esterno il nome dell'oggetto <code>-></code> e il nome del metodo:
<source lang=php>
class prova{
Line 63 ⟶ 59:
</source>
 
Come si vede la funzione stampa accede alla variabile privata a tramite la keyword this e <code>-></code>, si noti il <code>$</code> la keyword this diventa variabile e prende il $ che non lava applicato al nome della variabile privata!<br>
Per accedere al metodo stampa() usiamo: "il nome oggetto -> e il nome metodo". Potremmo accedere anche ad una variabile della classe nello stesso modo (vedi ultima riga):
<source lang=php>
class prova{
Line 86 ⟶ 82:
 
se invece vogliamo ottenere la variabile privata, il metodo get_var() accede per noi alla variabile privata e ne restituisce il valore, che verrà salvato nella variabile $variabile_privata.
 
 
 
Line 111 ⟶ 106:
}
 
$fushi=new melamele();
$fushi->visualizza(); //scriverà questa è una mela
 
$williams= new perapere();
$williams->visualizza();//scriverà questa è una pera
 
Line 122 ⟶ 117:
<br>
Come si vede il metodo <code>visualizza()</code> è sovrascritto dalle varie sottoclassi: pere e mele.<br>
Bisogna fare particolare attenzione con gli indicatori di visibilità, income quantovedremo unafra poco.
 
 
 
===Incapsulamento===
 
===Polimorfismo===
Nell'esempio sopra abbiamo una chiara dimostrazione di polimorfismo, il metodo <code>visualizza()</code> è chiamato più volte ma ogni volta da un risultato differente a seconda che l'oggetto appartenga ad una od un'altra classe. Se richiamo visualizza() con fushi che è un oggetto della classe mele, ecco che visualizzerà "questa è una mela", mentre se lo richiamo con williams. visualizzerà "questa è una pera", il polimorfismo è quindi la capacità di uno stesso metodo di eseguire compiti differenti in base alla classe dell'oggetto di appartenenza, infatti il metodo richiamato è sempre visualizza() ma si comporterà in modo diverso a seconda della classe dell'oggetto.
 
 
 
 
=== Lavorare con gli attributiVisibilità ===
Abbiamo detto che un attributo non è altro che una variabile della classe; bisogna tuttavia fare attenzione all'ambito dell'attributo, ovvero alla visibilità che ha l'attributo dall'esterno.<br>
'''public''' rende l'attributo o il metodo visibile e utilizzabile anche dall'esterno della classe <br>
Line 224 ⟶ 216:
 
Il metodo normalmente agisce sugli attributi della classe; normalmente questo è fatto per esempio dal costruttore.
 
===Incapsulamento===
 
[[Categoria:PHP|Programmazione orientata agli oggetti]]