Programmazione ad oggetti

Fino ad adesso non ho mai avuto, nè sentito l'esigenza di abbandonare la programmazione procedurale anche se molti me lo hanno consigliato. Sono ormai un paio di giorni che sono entrato nell'astrazione delle classi dei costruttori ma ne sono rimasto solamente perplesso perchè ho ancora alcuni dubbi... e sono anche sconcertato perchè ancora non ho afferrato l'utilità che se ne avrebbe in alcuni progetti.

I dubbi:

1. Una volta dichiarata una classe per sfruttarne le funzioni ho la necessità di dover istanziare un nuovo ogetto??? Per esempio la classe pear che si occupa di gestire i database come funziona al suo interno??? Da quanto ho letto si dichiarano sono funzioni della classe senza dover giustamente creare un oggetto, o sbaglio??? Ma se è così che necessità c'è di creare una classe, non bastano diverse funzioni???

2. Una funzione di una classe può essere utilizzata in un altra se è presente nella stessa pagina o è necessario estendere la classe???

Le perplessità:

1. Devo realizzare un area protetta con utenti e login a cosa mi potrebbe servire la programmazione ad oggetti??? Ma questo si esetende a tutti gli altri progetti a cui ho pensato...  :o

Scusate ma forse sono io che non ci arrivo...  :idiot:

Ciao  :bye:

inviato 10 anni fa
p3e2
p3e2
1
X 0 X

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:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Sei stato molto chiaro, i miei dubbi forse sorgono perchè sono troppo abituato al metodo procedurale... adesso provo a fare qualcosina con gtk magari entro meglio nel meccanisco!!!  :bye:

risposto 10 anni fa
p3e2
p3e2
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda