Newsgroup: it.comp.www.php
Titolo: Trasformare un gestionale in OOP

Ciao
tempo fa scrissi un gestionale in php per una piccola azienda.
Funziona benissimo anche se scritto in procedurale!!!!   ;)
Scusate se preciso la cosa, ma ultimamente sta nascendo una sorta di 
'razzismo informatico' che ghettizza chi non programma OOP.
Ma veniamo al dunque...
dato che vorrei far parte anche io della grande famiglia dei 
programmatori OOP, mi chiedevo come procedere ed affrontare la 
conversione di questo gestionale in OOP.
Non vi sto' chiedendo un tutorial sulla OOP, ho dei libri ...oltre la
vasta documentazione on line, cio' che vi chiedo è l'approccio 
iniziale/mentale quando si lavora con foglio e penna, producendo 
pseudocodice.
grazie

 pseudocodice.
Comincia ad applicare il pattern MVC per quanto riguarda l'esposizione
dei contenuti e a creare una classe per ciascuna tabella/funzionalità
della tua applicazione, in modo tale che tutte le operazioni sui dati
vengano svolte all'interno della classe.
Questo potrebbe essere l'inizio.
Ciao,
    Fabrizio
---website: 
http://www.negusweb.it

 pseudocodice.
Innanzitutto scordati lo pseudocodice. ;)
Non dovrai piu` ragionare in termini di codice, ma in termini di oggetti.
Devi suddividere la tua applicazione in "cosa viene manipolato" e non in 
"come manipolare qualcosa".
Il salto, inizialmente, e` un po' traumatico, e non saprei spiegarlo 
benissimo. Ci arriverai un po' alla volta provando (e sbagliando).
Per esempio, se hai un gestionale avrai sicuramente questi oggetti:
- il prodotto
- la lista dei prodotti
- la fattura
- la lista delle fatture
- il cliente
- la lista dei clienti
- il fornitore
- la lista dei fornitori
A questo punto non penserai piu` "questa funzione prende un prodotto e lo 
inserisce in una fattura, che memorizza la lista di prodotti in questo 
array", ma "l'oggetto fattura ha una funzione per aggiungerci un prodotto, 
e mantiene internamente una lista di prodotti".
Non penserai piu` "vado nel database a prendere la colonna 'nome' del 
prodotto" ma "prodotto, dimmi il tuo nome!"
Poi, dove l'oggetto "fattura" salvi la lista o l'oggetto "prodotto" vada a 
prendere il suo nome, nel flusso principale non ti interessa. Ti interessa 
solo quando vai a programmare questi due oggetti.
Se nel flusso principale del programma ti trovi a pensare "nell'oggetto 
fattura ho salvato la lista in un array, quindi qui devo accedere con []" 
allora hai sbagliato, non hai astratto abbastanza. Il pensiero giusto e` 
"ho programmato l'oggetto fattura perche` mi torni un Iterable/Countable 
(che puo` essere anche un normale array) di oggetti prodotto, quindi posso 
usare foreach su quello che mi torna".
Ai pattern (tipo l'MVC che cita Negus) potrai arrivarci dopo, visto che 
spesso astraggono un po' di piu` il normale pensiero.
Intanto parti costruendoti i mattoni di base, quei sei oggetti che ti 
dicevo sopra e facci un po' di esperimenti senza interfacce web, ma 
richiamando degli script tipo
<?php
 $prod = new Prodotto();
 $prod->nome = "Pippo";
 $prod->codice = "P001";
 $prod->save();
?>
All'inizio sara` un casino (metterai accesso al database in ogni 
oggetto ;) ma un po' alla volta vedrai che capisci come ragiona e sei in 
grado di astrarre e di spostare le funzionalita` al posto giusto.
Quando hai capito le basi guardati i pattern principali (quelli per le GUI 
e quelli per accesso a database).
Io ho trovato molto illuminante studiare lo Zend Framework, ma attento che 
spesso questi progetti danno per scontato che il programmatore abbia gia` 
capito la teoria dietro, e che quindi sappia come usarli.
Bye.

Alessandro Pellizzari ha scritto:

grazie!

 grazie!
Porca miseria il quote...

Andrea D'Amore ha scritto:

in che senso?


-- 
Fact of life #15: Heads bleed, walls don't.