Introduzione
A partire dalla versione 5 di PHP è stato introdotto il supporto agli oggetti (in verità era disponibile già dalla versione 3, ma era molto semplificato; nella versione 5 il modello ad oggetti è stato completamente riprogettato). La programmazione orientata agli oggetti (Object Oriented Programming - OOP) è un paradigma di programmazione che ha come principio fondamentale la suddivisione del problema in una serie di sottosistemi correlati tra loro detti oggetti che contengono sia i dati sia il codice che li manipola.
La definizione del modello di un oggetto avviene tramite un modello logico detto classe che definisce due entità fondamentali:
La programmazione orientata agli oggetti presenta alcuni meccanismi fondamentali:
Concetti
1. Incapsulamento
L'incapsulamento è la proprietà che permette di raggruppare i dati e le operazioni che possono essere effettuate allo scopo di proteggerli da utilizzi non conformi. Le buone norme della programmazione object oriented prevedono che dall'esterno debba essere visibile solo ciò che è strettamente necessario, il resto va mantenuto nascosto e vi si può accedere solamente dall'interno dell'oggetto stesso
In questo caso gli attributi $modello e $motore di Auto non sono accessibili dall'esterno; si può usare il metodo getModello() per ottenere il modello dell'auto (si nasconde dell'informazione e si adottano apposite interfacce per accedervi - in inglese si utilizza spesso il termine information hiding per questa pratica)
2. Polimorfismo
Consiste nella possibilità di creare interfacce e metodi che possono essere applicate ad istanze di classi diverse; è poi l'ambiente a runtime a decidere quale metodo o interfaccia applicare all'oggetto. Questo concetto si collega anche all'ereditarietà.
Non soffermiamoci su cosa significhi la parola chiave abstract; vediamo due classi Auto e Camion che entrambe sono "figlie" (estendono, specializzano) di Veicolo. Immaginiamo di non sapere a priori quando vale la variabile $isauto (per esempio può essere determinata da un input utente). Tuttavia, dal momento che $v sarà sempre un'istanza di una classe figlia di Veicolo che per forza deve implementare il metodo cosasono(), a runtime non si verificheranno errori perchè verrà eseguito il metodo relativo all'oggetto istanziato.
3. Ereditarietà
Il modello ad oggetti generalemente porta all'implementazione di una gerarchia di classi. L'ereditarietà rappresenta il meccanismo per il quale una sottoclasse acquisisce attributi o metodi appartenenti alla superclasse.
Vediamo anche qui che Auto è una classe figlia di Veicolo. Da Veicolo eredita i metodi e gli attributi public o protected: di conseguenza vengono ereditati l'attributo $nruote e il metodo ruote().
A partire dalla versione 5 di PHP è stato introdotto il supporto agli oggetti (in verità era disponibile già dalla versione 3, ma era molto semplificato; nella versione 5 il modello ad oggetti è stato completamente riprogettato). La programmazione orientata agli oggetti (Object Oriented Programming - OOP) è un paradigma di programmazione che ha come principio fondamentale la suddivisione del problema in una serie di sottosistemi correlati tra loro detti oggetti che contengono sia i dati sia il codice che li manipola.
La definizione del modello di un oggetto avviene tramite un modello logico detto classe che definisce due entità fondamentali:
- attributi, cioè i dati riguardanti un oggetto
- metodi, cioè le procedure che possono essere eseguite all'interno di un oggetto e che in particolare operano sugli attributi
La programmazione orientata agli oggetti presenta alcuni meccanismi fondamentali:
- Incapsulamento
- Polimorfismo
- Ereditarietà
Concetti
1. Incapsulamento
L'incapsulamento è la proprietà che permette di raggruppare i dati e le operazioni che possono essere effettuate allo scopo di proteggerli da utilizzi non conformi. Le buone norme della programmazione object oriented prevedono che dall'esterno debba essere visibile solo ciò che è strettamente necessario, il resto va mantenuto nascosto e vi si può accedere solamente dall'interno dell'oggetto stesso
Wikipedia ha detto:Se gestito opportunamente, l'incapsulamento permette di vedere l'oggetto come una black-box, cioè una "scatola nera" di cui, attraverso l'interfaccia, è noto cosa fa, ma non come lo fa
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
2. Polimorfismo
Consiste nella possibilità di creare interfacce e metodi che possono essere applicate ad istanze di classi diverse; è poi l'ambiente a runtime a decidere quale metodo o interfaccia applicare all'oggetto. Questo concetto si collega anche all'ereditarietà.
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
3. Ereditarietà
Il modello ad oggetti generalemente porta all'implementazione di una gerarchia di classi. L'ereditarietà rappresenta il meccanismo per il quale una sottoclasse acquisisce attributi o metodi appartenenti alla superclasse.
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Ultima modifica: