PHP/Programmazione/OOP: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 44:
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
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
$fushi->visualizza(); //scriverà questa è una mela
$williams= new
$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à
===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.
===
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]]
|