Newsgroup: it.comp.lang.visual-basic
Titolo: [?] OOP Help

Sto scrivendo un'applicazione che deve leggere dei messaggi di posta
elettronica da un server e salvarli in un database. Fin qui nessun problema.
Mi sarebbe però piaciuto strutturarla secondo i dettami della OOP. Ovvero
avevo pensato di creare una classe messaggio e una classe padre messaggi che
contenesse una collection di messaggio. Il mio problema viene a questo
punto. Dove devo implementare la il codice che dialoga con il database?
Tanto per intenderci: la classe messaggi avrà un metodo add che restituirà
un riferimento ad un oggetto messaggio in modo che si possa fare una cosa
del genere:
dim msg as clsMessaggio
dim msgs as clsMessaggis
set msg=msgs.Add()
msg.data=miaData
ecc.
La mia domanda è questa: dove metto il codice che mi crea un nuovo messaggio
nel database? Nel metodo add della classe messaggi oppure in un qualche
metodo o proprietà della classe messaggio? Inoltre quando io scrivo
un'istruzione del tipo: msg.data=miaData, dovrebbe accadere che la proprietà
data della classe messaggio sia modificata ma anche che il campo Data del
database sul quale sto lavorando sia aggiornato. Allora il codice per
l'aggiornamento del database lo devo mettere nella property let della classe
messagio? Questo però vorrebbe dire una marea di operazioni sul database
(una per ogni volta che cambio un singolo campo) e allora non c'è il rischio
di rallentare eccessivamente il programma?
Ultima domanda: quando devo recuperare un record dal database come faccio?
Avevo pensato di implementare un metodo Refresh nella classe messaggi che mi
restituisse i record che voglio magari attraverso un criterio di selezione.
Il mio dubbio però è questo: se devo recuperare diciamo 500 records verranno
create anche 500 istanze della classe messaggio, ma così la memoria non va a
farsi friggere?
Considerazione: qualcuno mi può spiegare qual'è l'utilità di un modello di
programmazione di questo tipo? Personalmente mi sembra solo di aggiungere un
guscio in più alla struttura dati che già di per sè, solitamente, non è
molto performante. L'unico vantaggio che riesco ad immaginarmi è che se
cambio base dati non devo andare ad aggiornare il codice in tutto il
progetto ma solo nelle mie due classi che si interfacciano al database.
Qualcuno sa dirmene altri (di vantaggi) ?
Grazie a tutti per la pazienza.
Ciao, Rick

Qualcuno sa dirmene altri (di vantaggi) ?
Ti consiglio di dare un'occhiata al libro di Deborah Kurata "Oggetti e VB
5.0" altro non
so che dirti
Ciao
Fabio



    Se ne può aggiungere anche qualche altro, ad esempio:
        - Se cambia il database devi cambiare solo 1 classe. Infatti solo la
classe CMessaggiPersist
           conosce l'esatto nome dei campi mentre le altre mappano i campi
attraverso nomi di proprietà
           e quindi diversi.
        - Implementando le classi attraverso ad esempio DLL, scalare una
applicazione da monoutente
          a multiutente diventa pressocchè semplicissimo.
        - La manutenibilità del codice viene molto migliorata, in quanto se
hai bisogno di implementare nuove
          funzionalità nelle classi devi solo implementare i nuovi
servizi/metodi che offrono.
    In linea di massima, se vuoi un opinione personale, dipende dal progetto
che stai realizzando. Progettare
    secondo i dettami della OOP è duro e complesso ma permette di scrivere
spesso applicazioni client piu'
    snelle e piu' manutenibili.
    Se hai bisogno di chiarimenti scrivimi anche in email.
    Ciao,
    V.DeCristofaro
 
en...@fastcom.it