PHP/Programmazione/OOP: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 44:
 
 
<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>
Line 121 ⟶ 120:
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.
 
=== Visibilità Ambito===
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 173 ⟶ 172:
 
La riga 32 mostra che il metodo ristampa può accedere alla variabile protetta prot, infatti tale variabile è estesa alla classe <code>altro</code>
 
===Classi Astratte===
Le classi astratte definiscono delle linee guida per i metodi che le classi che estendono dovranno seguire. Non definiscono il corpo del metodo, bensì il nome, la visibilità, i parametri, cioè quella che viene definita la signature. Il motivo è semplice, si pensi ad un programma sviluppato da più team, il team A definisce la classe madre ed i team B e C definiscono delle sottoclassi ridefinendo alcuni metodi. Se i due team non hanno una buona intercomunicabilità potrebbero ridefinire a piacere i metodi della superclasse cambiando i parametri o la visibilità dello stesso metodo, per evitare ciò esistono le classi astratte.
Una classe astratta si definisce con <code>abstract</code> '''DAFINIRE'''
 
===Incapsulamento===