Dubbi Classi

giovedì 12 agosto 2004 - 09.06

M3rlin0z Profilo | Newbie

Salve a tutti, un amico mi ha indirizzato su questo forum. Ho iniziato il mio "apprendistato" da pochi mesi (3-4), sto studiando alcuni manuali che mi hanno consigliato (Balena x VB.Net, MacDonald ASP.NET). Devo dire due ottimi manuali, però mi rimane qualche dubbio che forse qualcuno di voi esperti può togliermi.
Le mie domande sono un po' se c'è qualcuno così paziente da potermi "iniziare" gli sarei molto grato.

Creao una Classe, ad es: Employees alla quale passando un valore tipo la Matricola, mi ricerca ad esempio il Reparto di appartenenza, la importo, in una textbox inserisco il codMatricola e infine in una label mi restituisce il reparto.
Fino qui tutto a posto. Avrei potuto creare una funzione che mi facesse lo stesso giro. CHE VANTAGGI HO ad usare una CLASSE, oltre al fatto che il codice è più professionale?

un grazie a tutti per la pazienza.

M3rlin0z

trinity Profilo | Guru

Ma dipende secodno me da te e da come vuoi impstare il tuo progetto, io per esempio utilizzo molto le funzioni, ma le classi ti permettono di fare molte cose come:

Se dai un'occhiata alla keyword Shared in VB.NET, puoi crearti dei membri che sono condivisi da tutte le istanze della classe alle quali accedi
usando NomeClasse.XXX

2 - Una volta creati puoi memorizzarli nell'oggetto Session e lo recupri quando serve (è condiviso ovviamente solo da quella sessione) altrimenti inserirli nel progetto della WindowsApplication

Ciao
Fabio

M3rlin0z Profilo | Newbie

Innanzi tutto grazie per la tua spiegazine, ho altre domande.
Ho "imaprato" ad importare una classe in questo:

Ho un File che si chiama: MiaClasse.vb nel Progetto "TestClass"

Imports NomeProgetto.NomeNameSpace.NomeMiaClasse

dim sTest As New NomeNamespace.ClassUser("ParametroRicerca")
txtBox.text = sTest.Reparto.ToString()

La prima volta che eseguo funziona tutto, poi quanto riapro VB.Net dopo una "meritata" sigaretta, mi sottolinea l'Imports e non mi riconosce più la Classe.

Che cosa Sbaglio?

Ti posto anche il codice della classe

Imports System
etct
etct

Namespace NomeNameSpace

Public Class MiaClasse

Private m_sTest as string = ""



M3rlin0z Profilo | Newbie

Innanzi tutto grazie per la tua spiegazine, ho altre domande.
Ho "imaprato" ad importare una classe in questo:

Ho un File che si chiama: MiaClasse.vb nel Progetto "TestClass"

Imports NomeProgetto.NomeNameSpace.NomeMiaClasse

dim sTest As New NomeNamespace.ClassUser("ParametroRicerca")
txtBox.text = sTest.Reparto.ToString()

La prima volta che eseguo funziona tutto, poi quanto riapro VB.Net dopo una "meritata" sigaretta, mi sottolinea l'Imports e non mi riconosce più la Classe.

Che cosa Sbaglio?

Ti posto anche il codice della classe

Imports System
etct
etct

Namespace NomeNameSpace

Public Class MiaClasse

Private m_sTest_1 as string = ""
Private m_sTest_2 as string = ""

Sub New()
myBase.New()
End Sub

Sub New(byval parametro as string)
m_Test_1 = ""
m_Test_2 = ""

Eseguo una ricerca in un DB e assegno le var_membro i dati appena ricercati.

End Sub

End Class
End NameSpace

Poi la Region con le proprietà di sola lettura.
Ma funziona tutto correttamente la prima volta, poi quando rientro, mi sottolinea, forse sbaglio qualche cosa nell'importazione?

infinitamente grato,

M3rlin0z





trinity Profilo | Guru

Hai provato a fare sulla barra degli strumenti progetto -> aggiungi riferimento e ti importti la classe anche da lì? Per sapere con certezza cosa accade dovrei fare delle prove con la tua classe, importarla anc'io e testare il tutto.

Ciao
Fabio

M3rlin0z Profilo | Newbie

Add Reference--> e poi come la importo? è un file .vb del progetto stesso, non dovrebbe vederla automaticamente?

M3rlin0z

trinity Profilo | Guru

Scusami hai ragione devi aggiungerlo al progetto che stai creando se è una classe e poi la importi in tutte le form che ti servono.

Cmq. dovrei testare sempre il tutto

Ciao
Fabio

M3rlin0z Profilo | Newbie

Alla prossima ti invio il codice .vb, l'errore che mi restituisce è il seguente:

'ClassUser' (che sarebbe il nome della classe) is ambiguous in the namespace 'intranet.UserProfile

Poi ti invio il file VB

M3rlin0z

M3rlin0z Profilo | Newbie

Percheéééééééééééééééééé????? :-(
La prima volta va tutto bene, chiudo e riapro e mi sottolinea l'imports e l'assegnazione alla textbox.

Vi posto il codice della mia classe... soprattutto a te Fabio che me lo avevi chiesto prima.

grazie a tutti, -1 alle ferie, mai il tempo sarà tanto interminabile

M3rlin0z

M3rlin0z Profilo | Newbie

Ho dimenticato il file della Classe

alextyx Profilo | Expert

Ragazzi, sarà l'età ma non ci ho capito quasi nulla!!! :-)
Comunque, la mia esperienza suggerisce che la classe serve principalmente a far pulizia, a meno che nn si intenda ereditarla.
Avevo un sacco di procedurei in un modulo di un progetto, la maggior parte delle qauli erano chianmate da altre procedure dello stesso modulo, per far sì che queste ultime potessero assolvere al loro compito. Incapsulare tutte queste 'sottoprocedure' in classi, ha fatto 'sì che potessi restituire leggibilità al modulo. Lo stesso dicasi all'interno del codice di un Form.....creare una classe può mettervi pulizia. Mantenere le varie sottoprocedure di dimensioni contenute, aiuta il debug e il riutilizzo delle stesse.
Per quanto riguarda l'import mi sembra che tu abbia risolto il problema, ma questo è proprio il punto dove le cose si fanno oscure. Se la classe fa parte del progetto, ovvero è scritta in un modulo del progetto, perchè la importi? Ti basta istanziarla! Forse è dovuto al fatto che 'sembra' tu abbia creato un namespace, cosa che nn ho ancora provato a fare e quindi potrebbe richiedere quanto dici! Comunque, le mie classi basta istanziarle per utilizzarne i membri ( a meno che nn siano 'shared') e nn serve (incredibile, ma sembra proprio sia vero) neppure scrivere una routine di costruttore New, a meno che tu nn abbia davvero da fargli fare qualcosa di serio, come nel caso della creazione di un Form in cui penso proprio che la MyBase.New faccia qualcosa più che apparire sul listato.
Comunque nn ho grande esperienza e forse mi sfugge qualcosa, ma sto utilizzando le classi ormai da qualche mese con una certa soddisfazione, anche se all'inizio ho impiegato diverse orette(3 o 4) solo per scrivere e mettere in funzione la prima (che in effetti era semplicina!)
Spero che la mia esperienza, per quanto limitata, serva a suggerire qualcosa. Resto comunque a disposizione per eventuali chiarimenti e resto anche in attesa di eventuali precisazioni sul 'cosa' nn ho capito (perchè qualcosa DEVE essermi sfuggito). Ciao a tutti! :-)

M3rlin0z Profilo | Newbie

Ho tolto il namespace nella mia classe, il problema rimane.
La prima esecuzione del programma riesce alla perfezione, chiudo VB.NET lo riapro ed ho i soliti problemi. Non riesco a capire il perché?
Può dipendere dal fatto che sto istanziando una classe in una Web Applications?
Se io creo una .dll esterna alla WebApplication non ho nessun problema del genere, riesco ad importarla ed istanziarla.

Aiutooo...

M3rlin0z

alextyx Profilo | Expert

Ohi, ohi, ohi, la mia già abissale ignoranza diventa incommensurabile quando si parla di Web application, dove nn ho ancora messo il naso ('Meglio'...direte voi..'così nn hai fatto danni!' :-) ). Su questo argomento mi trovi completamente impreparato. Ribadisco che sto usando delle classi, che per la loro semplicità potrebbero essere delle strutture (il che potrebbe evitarmi il disturbo di istanziarle), ma con le quali nn ho avuto alcun problema. Se le Web App. hanno uno status differente, io questo nn lo so. Nn mi rimane che rimanere interessatamente e curiosamente in attesa di un intervento più utile del mio. Mi piacerebbe capire cos'è che ti provoca il problema. A prop, potresti provare a creare una classe campione di esemplare semplicità e vedere se anche quella ti dà gli stessi problemi? Poi potresti provarla su una windows application e casomai postare anche un po' di codice. Non vedo molte altre alternative al creare delle cose estremamente semplici ed effettuare delle prove, tanto x vedere se l'errore può essere nella classe o nel modo in cui viene usata. Poi i progetti 'all'osso', sono postabili e condivisibili. Vai...prova un progetto con un Form un pulsante e una classe minima e vedi se ti funziona, poi ne riparliamo!
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