Riutilizzo del codice (consigli)

martedì 06 marzo 2007 - 20.18

micioblublu Profilo | Newbie

Salve a tutti.
Premetto che mi sto avvicinando ora alla programmazione ad oggetti e non ho ancora ben chiari certi concetti.
Leggendo qua a là spesso si parla di riutilizzo del codice.
Molti indicano come corretta la metodologia di utilizzo di classi per tutta la logica del progetto lasciando la gestione dei controlli nel form o nella pagina web.
Arriviamo al dunque.....
Poniamo il caso che io abbia diversi form, non ereditabili perchè troppo distinti fra di loro, ma che utilizzano diverse Function in comune e che in base a certe condizioni devono ritornare i dati nei controlli dei rispettivi form.
Si potrebbe pensare di passare come argomento alla Function il form sotto forma di Object e poi fare il Cast a seconda del form.
Secondo me in questo caso si avrebbe una Function illeggibile. Ed allora qual'è il punto?
Nel ringraziarvi per i suggerimenti vi auguro buona giornata.

alx_81 Profilo | Guru

>Salve a tutti.
Ciao!

>Premetto che mi sto avvicinando ora alla programmazione ad oggetti
>e non ho ancora ben chiari certi concetti.
>Leggendo qua a là spesso si parla di riutilizzo del codice.
>Molti indicano come corretta la metodologia di utilizzo di classi
>per tutta la logica del progetto lasciando la gestione dei controlli
>nel form o nella pagina web.
>Arriviamo al dunque.....
>Poniamo il caso che io abbia diversi form, non ereditabili perchè
>troppo distinti fra di loro, ma che utilizzano diverse Function
>in comune e che in base a certe condizioni devono ritornare i
>dati nei controlli dei rispettivi form.
>Si potrebbe pensare di passare come argomento alla Function il
>form sotto forma di Object e poi fare il Cast a seconda del form.
>Secondo me in questo caso si avrebbe una Function illeggibile.
>Ed allora qual'è il punto?
Che cosa intendi per "in comune"? che fanno la stessa cosa? che hanno gli stessi parametri?
Perchè in alcuni casi è sufficiente lasciare le Form distinte, andando a centralizzare le funzioni sotto un namespace in comune..
Ad esempio puoi impostare un namespace CommonFunctions nel quale puoi creare una classe static (Shared in VBNet) che ha per membri metodi static che sono poi le funzioni che dovrai utilizzare nelle varie form (importando il namespace e chiamandole nella forma NomeClasse.Metodo)..
Non è detto che tutti i form debbano per forza ereditare da un modello. Diciamo che farsi una classe base con proprietà e metodi in comune, comunque ridefinibili tramite ereditarietà, è una buona via da seguire.. Ogni form poi eredita dalla classe base e in questo modo sei sicuro che le caratteristiche standard le hai sempre. Grazie ai vari overload e override, ripeto, hai comunque padronanza di ridefinire parti della classe, nonchè di estenderla come meglio credi..
ciao!
>Nel ringraziarvi per i suggerimenti vi auguro buona giornata.
Grazie ed altrettanto
>

Alx81 =)

http://blogs.dotnethell.it/suxstellino

micioblublu Profilo | Newbie

Ti ringrazio per la risposta
e rispondo alla tua domanda: per comune intendo stessi parametri, stessa logica ma a seconda del form chiamante come parametro od argomento deve rispondere ai controlli di quel form.
Spero di essere stato chiaro.
Ciao

alx_81 Profilo | Guru

>Ti ringrazio per la risposta
>Spero di essere stato chiaro.
Perdonami ma ancora non mi è molto chiaro..

>e rispondo alla tua domanda: per comune intendo stessi parametri,
>stessa logica
ok

>ma a seconda del form chiamante come parametro
>od argomento deve rispondere ai controlli di quel form.
Questa non la capisco.. va in contraddizione con la frase di prima (stessi parametri)..
se mi dici che le funzioni hanno gli stessi parametri, allora quello che cambia è il tipo di ritorno?
cosa intendi per rispondere ai controlli?

Magari fammi un esempio pratico con un paio di form..
Spiegami quello che dovrebbero fare le due funzioni e qual è la necessità di distinguerle..


>Ciao
Ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

micioblublu Profilo | Newbie

Grazie per la tua disponibilità; ecco l'esempio:
poniamo il caso di avere due form che per convenzione chiamerò Form1 e Form2 ed i rispettivi controlli che potrebbero essere delle Textbox od altro.
Form1 quindi ha almeno due controlli che si chiamano rispettivamente Textbox1 e Textbox2
e Form2 altrettano.
Dal momento che i due form sono praticamente uguali, sarebbe più semplice applicare l'ereditarietà del form ma non in questo caso!
TextBox1 deve scatenare un evento di Keypress indiferentemente che provenga dal primo o dal secondo Form.... o da altri form.
Nella logica dell'evento Keypress che sarà uno solo e condiviso tra i due deve:
- verificare che il contenuto sia corretto, e fin qui nulla di strano perchè il test lo posso
fare sul parametro sender.
- referenziare una classe che potrebbe essere una connessione
- impostare il focus sul secondo textbox a seconda che provenga dal primo form o dal secondo form.
- dare al form (e qui ti voglio!!!) il riferimento della classe.

Se il form fosse uno solo e se si potesse applicare l'ereditarietà sarebbe abbastanza banale
fare tutto questo ma in questo caso non so o forse non ci arrivo io.



Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5