PDA

View Full Version : [OOProgramming] metodi che chiamano metodi di altre classi... ...s'ha da fare?


0rph3n
16-12-2005, 19:28
ciao ragazzi, ho una domandina la cui risposta non so quanto di soggettivo e quanto invece di oggettivo possa avere.
...non so nemmeno quanto bene riuscirò ad esporla questa benedetta domanda, ma proviamoci!
[premettiamo che sto usando vb.net 2005]
allora:
ho sviluppato una classe che gestisce tutto quanto serve alla mia "applicazione" per utilizzare database mySQL e tra i vari metodi ci sono anche quelli per l'immisione di nuovi record nelle varie tabelle che prevedono come parametro l'oggetto contenente i dati da salvare e che quindi sono specifici per ogni oggetto(e sono metodi shared).
Esempio:
Public Class gestioneDB
...
Public Shared Sub salvaMiaClasseDati(byVal istanzaDaSalvare as miaClasseDati)
Dim dbCommand As New MySql.Data.MySqlClient.MySqlCommand
dbCommand.Connection = dbConnection
dbCommand.CommandText = "INSERT INTO persona VALUES(?codPersona, ?nome, ?eta)"
dbCommand.Parameters.Add("?codPersona", istanzaDaSalvare.codPersona)
dbCommand.Parameters.Add("?nome", istanzaDaSalvare.nome)
dbCommand.Parameters.Add("?eta", istanzaDaSalvare.eta)
dbCommand.Prepare()
dbCommand.ExecuteNonQuery()
End Sub
...
End Class
a questo punto vi chiedo:
è meglio che mi crei nelle varie classi dei metodi per il salvataggio dei dati che a loro volta chiamano i metodi della classe per la gestione del database sopracitata?
quindi ad esempio:
Public Class miaClasseDati
...
Public Sub salvaDati(byVal istanza as miaClasseDati)
gestioneDB.salvaMiaClasseDati(istanza)
End Sub
...
End Class
e poi nel codice del programma:
...
dim istanza as miaClasseDati
istanza.salvaDati(istanza)
...
oppure è meglio che chiami questi metodi direttamente nel codice del programma?
quindi ad esempio:
...
dim istanza as miaClasseDati
gestioneDB.salvaMiaClasseDati(istanza)
...
...eh si, vogliate scusarmi per l'arzigogolatezza dell' esposizione, spero comunque riusciate a capire lo stesso e a consigliarmi per il meglio!
sono molto ben accetti anche link e libri su cui studiare più in generale l'argomento OOP!
grazie a tutti,
'iao

fek
16-12-2005, 19:33
La prima opzione, ma non devi anche passare di nuovo l'istanza della classe perche' e' implicita nel metodo che hai chiamato.

0rph3n
17-12-2005, 15:40
ops, si hai ragione non ci avevo proprio pensato :muro:
nel caso qualcuno abbia voglia, mi direbbe i motivi per cui tra le due, va usata la prima opzione?
a me viene in mente solamente la pulizia del codice, ma penso ce ne siano anche altri...
...o no?
grazie

'iao

The3DProgrammer
17-12-2005, 16:14
perchè segue l'open/closed principle.

In questo modo rendi il codice dell'applicazione chiuso alle modifiche. Esempio stupido: Se utilizzando il secondo design, ti rendi conto che devi cambiare il nome di un metodo di gestioneDB, dovrai andare a cambiare il codice dell'applicazione modificando tutte le chiamate a quel particolare metodo. Col primo design questo non succede, basta andare a cambiare il metodo salvaDati() associato.

0rph3n
17-12-2005, 17:32
grazie mille ad entrambi ragazzi!

'iao