PHP/Programmazione/OOP: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
aggiunte classi astratte |
||
Riga 122:
===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>
* '''protected''' l'attributo o il metodo possono essere visti/usati solo dall'interno della classe o da una sottoclasse <br>
* '''private''' l'attributo o il metodo può essere visto/usato solo all'interno della classe.<br>
Se si usa la dichiarazione deprecata di php<5: <code>var</code>, senza specificare l'ambito dell'attributo, questo avrà come ambito per default '''pubblico'''
<source lang=php>
Riga 174:
===Classi Astratte===
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. Se una classe ha anche solo un metodo astratto è obbligatorio definirla come astratta, se una classe eredita da una classe astratta è obbligatorio ridefinirne tutti i metodi astratti. In PHP non è possibile dichiarare un metodo come astratto e definirlo nella stessa classe come permettono alcuni linguaggi oop.
Una classe
<source lang=php>
class abstract prova{
public $var="ciao";
abstract public function miometodo($var1, $var2);
}
class sotto extends prova{
public function miometodo($var1, $var2){
echo "$var1 $var2";
}
</source>
Bisogna mantenere inalterata la signature e cioè nome namespace parametri, si può cambiare solo la visibilità, restringendola.
===Incapsulamento===
Line 181 ⟶ 195:
===Interfacce===
===Namespaces===
[[Categoria:PHP|Programmazione orientata agli oggetti]]
{{Avanzamento|
|