La programmazione ad oggetti, secondo me, richiede anni di pratica prima che possa essere recepita a pieno. Quella che segue quindi non è una risposta esaustiva alle tue domande.
1. Una volta dichiarata una classe per sfruttarne le funzioni ho la necessità di dover istanziare un nuovo oggetto???
In generale si perché nel modello ad oggetti una funzione (metodo) è la capacità di compiere una azione di un oggetto. Se non c'è l'oggetto chi compie l'azione? Ad esempio, l'azione "log-in" la può compiere solo l'oggetto "utente". Se non c'è l'utente allora chi si sta loggando?
Questo perché una classe "utente" è solo l'astrazione del concetto di utente, ne descrive le caratteristiche e le capacità, ma non è fatta di carne ed ossa come un utente, è solo un'idea.
Es. se dico studente tu pensi ad un concetto astratto di ragazzo che va a scuola. Se invece dico Mario Rossi io penso al mio compagno di banco, in carne ed ossa! Quindi se la classe studente ha la funzione "studia", allora questa funzione ha senso che venga eseguita da Mario Rossi e non dal generico studente (non tutti gli studenti studiano!)
Alla fine dell'anno il generico studente può essere promosso o bocciato, dipende se ha studiato. La variabile $promosso quindi è legata alla funzione "studia". Se l'oggetto "Mario Rossi" ha studiato allora la SUA variabile $promosso varrà TRUE.
Nota come il concetto di classe riesce a mettere insieme dati e funzioni che caratterizzano un concetto astratto. Nota come le funzioni di una classe lavorano con i dati della stessa classe ("studia" influisce su $promosso) Nota anche che se ci sono 2 oggetti studente ("Mario" e "Gigi") allora se "Mario" "studia" non è detto che "Gigi" sia $promosso. Ora ti dovrebbe essere chiaro perché esistono gli oggetti.
le classi quindi non sono una collezione di funzioni, ma sono l'insieme delle caratteristiche (le variabili) e capacità (le funzioni) che un oggetto appartenente alla classe possiede.
La classe quindi non è nulla di concreto, serve solo a descrivere come è fatto un oggetto. E' necessario quindi creare (istanziare) un oggetto per dar vita ad una entità in grado di agire nello script.
E' possibile comunque realizzare classi che rappresentano solo collezioni di funzioni e che non necessitano di essere concretizzate in un oggetto. Le funzioni appartenenti a queste classi devono essere definite STATICHE.
In generale la programmazione web non si presta immediatamente alla programmazione ad oggetti, sopratutto perché ad ogni pagina visitata dall'utente bisogna ricreare tutti gli oggetti (in un programma desktop invece gli oggetti li crei all'avvio e muoiono alla chiusura dell'applicazione)
Comunque la programmazione ad oggetti va eseguita cercando di individuare quali parti dello script possono essere viste come oggetti. Ad esempio l'utente è un oggetto (ha delle caratteristiche ed effettua delle operazioni)
Per ora mi fermo qui...
:bye: