Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto esempio programma vb con classi

Buongiorno,
sempre io... mi spiace...
Sempre per la programmazione in VB con le classi, Vi chiedo gentilmente se 
avete a disposizione qualche link con
esempi di programmi con classi abbastanza semplici da poter prendere come 
studio.
 
Al momento non ne trovo molti, molti esempi in tutorial ma codice da 
visualizzare e provare in Visual Studio per ora non ho trovato niente...
 
Grazie a tutti. 
 

Ciao Pisinho,
non capisco pero' cosa cerchi.
Non credo che il pezzo di codice che ti manca sia Class... End Class
Cosa non ti e' chiaro su cosa sia / come funziona una classe
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 8788 (20130911) __________
 
Il messaggio è stato controllato da ESET NOD32 Antivirus.
 
www.nod32.it
 
 
 
 

 sempre io... mi spiace...
 
A me spiace che hai aperto un altro thread per chiedere la stessa cosa 
di ieri...

Forse non hai cercato bene perché googolando un pò ne trovi quanti ne vuoi
 
http://it.letmegooglethatforyou.com/?q=vb.net+classi
 
 
Il primo link che trovi dovrebbe fare al caso tuo altrimenti puoi 
registrarti sul sito 
http://www.visual-basic.it/
 e leggere gli articoli 
di Stefano Castelli
 
 
Come ha già scritto vbMizio, non capisco cosa non ti è chiaro di quello 
che ti è già stato detto...
 
Ciao
Vincenzo
 


 
Capisco,
guardando codice già fatto per come sono fatto io, imparo molto più 
velocemente.
Se ho degli esempi o programmi fatti e funzionanti e mi guardo come hanno 
fatto le classi e come le usano imparo più alla svelta.
 
Vabbe vediamo se trovo qualche programma con codice...
 
Grazie a tutti.
 
 
 
 
 
 
 

Una domanda:
al di la del codice (se gia' programmi, una funzione e' e resta una 
funzione, sia in una classe, sia altrove), sai cosa e' una classe e per cosa 
si usa?
 
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 8790 (20130912) __________



 
Una Classe si, diciamo che mi manca forse perchè usarla e dove...
 
Ti faccio un esempio, devo riscrivere i programmi da Access a VB.
Il programma non è altro che l'inserimento dati (con qualche moltiplicazione 
e o controlli dei dati) in un database,
quindi scrittura lettura e aggiornamento di record su SQL Server.
 
I dati rappresentano delle spedizioni , quindi mittente, destinatario, 
colli, peso, varie voci di fatturazione, date di acquisto e vendita e poco 
più.
 
Chiamiamo il documento BOLLA, dove usare le classi e perchè usarla.
 
Spiegato questo piccolo ma importantissimo dettaglio capirei molto.
 
SOno un autodidatta, ho delle basi di programmazione che mi hanno permesso 
di fare questi gestionali, ma non ho frequentato ne università ne tantomeno
corsi specifici ed è forse per questo che non capisco molte cose. Nei vari 
documenti che ho letto c'è scritto come fare una classe, spiegano 
ereditarietà, polimorfismo etc...
ma mi blocco li, non capisco perchè utilizzarle e come mi potrebbe aiutare 
per il futuro.
Scusatemi se sono così , non abbiate pietà ditemelo subito che devo cambiare 
'lavoro' ma per il momento ho questo...e per quello che ho fatto funziona 
tutto....ma vorrei migliorarmi...
 
Grazie comunque a tutti. 
 

Ciao,
alla tua domanda non è facile rispondere in un post. Presuppone un minimo di conoscenza della OOP, come ti ho scritto nell'altro thread.
Prova a dare un'occhiata a questo:
http://it.wikipedia.org/wiki/Tipo_di_dato
 
 
Le funzioni, i metodi, le proprietà, le hai già usate in VBA. Un linguaggio che ti dà la possibilità di *costruire* classi, significa che puoi definire oggetti personalizzati, partendo da altri. Se vuoi costruire un televisore, avrai l'oggetto display, l'oggetto telecomando, etc. Tutti questi oggetti, *derivano*, tramite *ereditarietà" da altre classi base (atomici). Il telecomando avrà l'oggetto pulsante e così via. Se il tuo telecomando non presenta esattamente le peculiarità di cui necessiti, potrai intervenire sul "modello", cioè la classe e modificarla, aggiungendo/modificando la classe Telecomando.  Quando utilizzerai il tuo oggetto, possiederà tutte le prerogative che vorrai e agirai solo nell'ambito del contesto Telecomando. Lavori sugli oggetti (OOP), quindi ti "sollevi" dal compito di dover sapere come è fatto un telecomando, ma invocherai l'oggetto ed agirai sulle sue peculiarità: proprietà e funzioni (/metodi).
Oltre a quanto scritto sopra, devi studiarti quelle due paginette che descrivono (non nella mia forma brutale e approssimata)la OOP.

Concordo con Fabrizio che la risposta non e' cosi' immediata.
Provo pero' a darti delle indicazioni teoriche e delle indicazioni di 
utilita' pratiche delle classi, cosi' magari ti e' piu' facile.
Anche io, quando studiavo (in un po' tutti i campi) finche' non capivo a 
cosa servisse una cosa e perche', non riuscivo a mettermi in testa nulla.
 
Considera una classe come un "progetto" di qualche cosa, progetto in cui tu 
definisci il comportamento di questa cosa (metodi come Sub o Function), dove 
definisci delle proprieta' ecc. Resta pero' il fatto che questa tua classe 
e' e rimane un progetto. Non e' utile in nessun ambito pratico.
immagina ad un progetto per una auto. Non puoi guidare un progetto, non lo 
metti su strada e non ti ci imboschi con la tua ragazza.
Questo progetto lo devi fare diventare un qualche cosa di vero, cioe' devi 
creare un oggetto da questo progetto, che tradotto in informatichese diventa 
che devi istanziare un oggetto di quella classe.
Una volta istanziato l'ogetto *di tipo" auto, vuol dire che hai 
effettivamente una cosa con quattro ruote, che puoi guidare e andarci dove 
ti pare.
Scusa se sono cosi' didascalico, ma altrimenti rischiamo di non capirci con 
i termini.
 
Prima comodita':
se definisci una classe Auto, puoi (anzi devi) definirne i comportamenti 
solo all'interno di questa classe, il mondo esterno non deve sapere come una 
auto fa qualche cosa, il mondo esterno deve solo sapere che l'auto fa quella 
cosa, poi come lo fa, e' affare solo suo e del suo progettista.
Se ad esempio premendo il pedale dell'acceleratore (Metodo Accelera) la 
macchina aumenta la velocita', un guidatore sa che deve appunto premere il 
pedale (chiamare il Metodo Accelera) per ottenere il risultato, poi se il 
pedale e' collegato con un filo al carbutatore, oppure c'e' un controllo 
elettronico che dice alla centralina di aumentare l'apertura dei corpi 
farfallati, al guidatore non frega nulla.
Lo so, ti sembra poco, specialmente perche' nel tuo caso, il guidatore e il 
progettista dell'auto sono la stessa persona. A breve pero' ti sara' piu' 
chiaro.
 
Seconda enorme comodita':
ti serve una seconda auto.
Basta istanziare un oggetto *di tipo* Auto e, ecco a te, hai una seconda 
auto, che vive di vita propria, che non c'entra niente con l'altra, pur 
avendo lo stesso progetto.
Occhio che questa cosa e' importantissima.
 
Inoltre, essendo un unico progetto, se ad un certo punto ti accorgi che hai 
fatto degli errori nell'implementare il codice per qualche cosa, basta 
correggere l'errore una volta, e tutte le tue istanze di auto avranno 
automaticamente l'errore corretto.
 
Veniamo alla tua bolla...
ogni bolla puo' avere una o molte righe.
Ognuna di queste righe, altro non e' che una differente istanza di una 
classe "Riga".
Una volta che hai definito il comportamento della classe Riga, ti istanzi un 
nuovo oggetto di tipo "Riga", gli assegni le proprieta' ed hai fatto.
Ammetiamo che tu definisca un metodo che serve per cercare l'articolo in 
magazzino in base ad un codice a barre, ti basta chiamare questo metodo per 
caricare tutti i dati che ti servono all'interno dell'oggetto di tipo Riga.
Obietterai che questa cosa la puoi fare anche senza usare la classe Riga, ma 
ad esempio scrivendone la funzione in un modulo a parte; dato pero' che al 
mondo esterno non frega nulla di come un oggetto di tipo Riga si carica i 
propri dati, perche' andare a scrivere queste cose al di fuori? Considera 
anche che da un punto di vista manutentivo, e' molto piu' semplice avere il 
codice concentrato.
 
E' come se, ritornando alle auto, tu avessi il progetto della tua auto su un 
bel foglio sulla scrivania, e poi vai a mettere il progetto della messa in 
moto su un foglio in un'altra stanza.
E se domani decidi di scrivere, oltre che il programma per le bolle, anche 
quello per le fatture?
Riscrivi tutto?
No, riprendi la classe Riga che avevi definito per le bolle, e riutilizzi 
quella.
 
Questi sono solo spunti eh, solo per cercare di farti capire quale utilita' 
puo' avere una classe, ce ne sarebbe da parlare per un bel po'. Posso solo 
assicurarti che quando cominci a ragionare con le classi, ed ad oggetti, ti 
si apre un mondo assoluto.
 
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 8791 (20130912) __________



Grazie mille.
Vedi, mi hai gi� aperto gli occhi e la mente.
Pensavo di fare un'unica classe di tipo Bolla perch� nel mio caso avr� 
sempre una sola riga per ogni bolla.
Evidentemente mi manca molto da imparare su oop soprattutto su come 
individuare le classi da creare.
 
Forse potrei vedere il tutto come un database e le tabelle, le tabelle 
potrebbero essere le classi, i campi gli attributi
 
Sto dicendo una cavolata ?
 
Saluti
 
 
 
 
 

 potrebbero essere le classi, i campi gli attributi
 
no,infatti in C# si usa l'entity data model,dove partendo da un database 
relazionale  ti crea le classi(le tabelle) con le proprietą(le colonne) e 
pure le relazioni( ad esempio la relazione uno a molti  "cliente---> sue 
bolle" ,rappresentata da oggetti collection incapsulati nelle classi)  ,  e 
viveversa ( cioč dalle classi ti crea un database completo) .
Praticamente clicchi su un database e scegli "crea classi" e per ogni 
tabella ti crea la classe (articolo,cliente,bolle etc..) .
 
In 
VB.NET
 mi pare che  Entity Framework non ci sia  perņ...bisogna usare 
software di terze parti ( cosidetti ORM ) . 
 
 


 
Diciamo che non � un'idea sbagliata per iniziare... poi con l'esperienza 
vedrai che il modello non coincide sempre con le tabelle del database.
Se un giorno ti troverai ad usare strumenti ORM come Entity Framework 
(EF) o NHibernate allora vedrai un mapping uno a uno con il DB (non � 
sempre cos� ma mi fermo qui per non mettere altra carne al fuoco).
 
Ti faccio un esempio banale:
 
Namespace PincoPallino.MioProgetto.BusinessObjects
     Public Class Documento
         Public Property Numero As Integer
         Public Property Serie As Integer
         Public Property DataDoc As Integer
 
         Private _Riferimento As String
         Public ReadOnly Property Riferimento() As String
             Get
                 Return String.Format("{0}/{1} del {2:d}", _Numero, 
_Serie, _DataDoc)
             End Get
         End Property
 
         Public Property ClienteFatt As Person
         Public Property ClienteDest As Person
         Public Property Dettaglio As List(Of RigaDoc)
     End Class
 
     Public Class Person
         Public Property Nome As String
         Public Property Cognome As String
 
         Private _Nominativo As String
         Public ReadOnly Property Nominativo() As String
             Get
                 Return String.Format("{0} {1}", _Cognome, _Nome)
             End Get
         End Property
     End Class
 
     Public Class RigaDoc
         Public Property TipoRiga As Integer
         Public Property CodArticolo As String
     ...
     End Class
End Namespace
 
Innanzi tutto ho creato una classe generica documento perch� da questa 
posso poi creare classi derivate come Bolla, Fattura ecc... ed 
estenderla con propriet� e metodi.
Nella mia tabella Documenti non ho un campo Riferimento perch� sarebbe 
un'informazione duplicata visto che altro non � che la concatenazione di 
altri campi ma nella modellazione della classe ho aggiunto questa 
propriet� che pu� essere comodissima per esempio in fase di stampa del 
documento.
Naturalmente queste classi non fanno niente e sono solo contenitori di 
informazioni. Dovresti poi creare una classe che si occupa di recuperare 
e persistere i dati nel DB. Ma questo lo possiamo affrontare in un 
secondo momento.
Comunque se hai voglia e tempo ti consiglio queste lettura:
http://imar.spaanjaars.com/476/n-layered-web-applications-with-aspnet-35-part-1-general-introduction
 
 
anche se � riferita ad 
asp.net
 � un'ottima guida dalla quale partire per 
creare applicazioni n-layered
 
Ciao, Vincenzo
 


 
Entity Framework è un ORM e c'è anche per 
VB.NET
 
 
Ciao, Vincenzo
 

 
....
In 
VB.NET
 mi pare che  Entity Framework non ci sia
....
Certo che c'e' anche in VB!
Da qualche edizione di VS a questa parte, C# e VB hanno le stesse 
funzionalita' (dato che poi il framework e' lo stesso), cambia solo la 
sintassi.
Taaanto tempo fa, c'era qualche cosa che era usabile in C# e non in VB, e 
viceversa.
Ormai, sono due linguaggi paralleli. 
 
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 8793 (20130912) __________


Forse potrei vedere il tutto come un database e le tabelle, le tabelle
potrebbero essere le classi, i campi gli attributi
....
In un certo senso si, ma non limitato a questo.
Intanto anche il database puo' essere un oggetto, che contiene altri oggetti 
di tipo "tabella" dove ogni tabella contiene degli oggetti di tipo "record".
Le classi sono questo e anche altro.
 
 
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 8793 (20130912) __________
 
Il messaggio � stato controllato da ESET NOD32 Antivirus.
 
www.nod32.it