PHP/Programmazione/OOP: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
→‎Classi Astratte: piccola aggiunta
Nessun oggetto della modifica
Riga 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.
 
===Ereditarietà===
Una classe può estenderne un'altra ereditandone così i metodi e gli attributi. La classe estesa si chiama superclasse e la estendente sottoclasse. La sottoclasse può sovrascrivere (overridding, da non confondere con l'[[w:Overloading|overloading]]) i metodi della superclasse definendone di propri, per estendere una classe è sufficiente dopo il nome della classe estendente mettere la parola chiave <code>extends</code> ed il nome della classe da estendere.
 
Riga 117:
Bisogna fare particolare attenzione con gli indicatori di visibilità come vedremo fra poco.
 
===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.
 
===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>
Riga 173:
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.<br>
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.<br>
Riga 192:
Una classe astratta NON può essere istanziata direttamente.
 
===Incapsulamento===
Si definisce incapsulamento la tecnica di rendere invisibile ed inaccessibile parti di codice non necessario per l'utilizzo di una classe, rendendo accessibili e visibili solo alcuni metodi e alcuni attributi. Si ottiene grazie agli indicatori di visibilità e alle interfacce.
 
===Interfacce===
 
===Namespaces===
 
[[Categoria:PHP|Programmazione orientata agli oggetti]]