Bene , visto che oggi non tengo molto da fare propongo una guida che non ho notato sul forum . spiegare in generale una classe perchè usarle e soprattutto cosa è cambiato dalla programmazione struttura?!? (top-down e buttom-up) . Ripercorriamo brevemente la storia dell "informatica" partiamo dai dal Bell Laboratories AT&T , Dove negli anni '70 , nasce uno dei miglior linguaggi strutturati della storia il : C( questo è per me)!
Per chi non lo sapesse il vb.net , è un linguaggio che si basa sul OOP (Object Oriented Programming) cioè linguaggi che si basano sulle classi e sui 3 principi dell'oop :
Ereditarietà n.b se tengo un pò di tempo illustrerò anche questi 3 principi più dettagliatamente
Piliformismo
Incapsulamento
Non usare le classi in un progetto vb.net è assolutamente sbagliato , se un applicazione console si vorrebbe usare soltanto Module (che è comunque una classe un pò + particolare , perchè è una classe shared , ma nella guida non voglio illustrare che cos'è un membro shared o classe etc...) , non sfrutteresti minimamente le vere potenzialità del vb.net.
Ora passiamo a vedere come si crea una classe:
Project-Add Class e immettere il nome della classe
Una volta creata la Classe apparirà il code
Class [nome]
end Class
'quindi l'identificativo è la keyword Class
Come si nota nel Immagine ci sono degli SPECIFICATORI D'ACCESSO , nel nostro caso Public
Public significa accessibile sia dal progetto sia da altri programma in caso servisse.
Gli altri specificatori d'accesso sono :
Private = membri accessibile solo nella stessa Classe
Protected= membri accessibili solo nella stessa classe , giocano un ruolo importante nel ereditarietà
Friend = Accessibile solo al progetto , quindi nel progetto sarebbe come se fosse Public
se Notate , alle persone che già usano un pò il vb.net , ogni procedura o funzione (identificati , per chi non lo sapesse dalla keyword sub & function)
Quindi deduciamo che : Gli Specificatori d'accesso sono sempre i primi da mettere.
In caso quest'ultimi vengono a mancare , si intenderà public ( eccetto in alcuni casi)
Dim x as integer , inoltre equivale a dire private x as integer ; questo tanto per informazione
Ora che abbiamo fatto questa breve parentesi torniamo alle classi , Le classi al loro interno hanno dei Membri
Iniziamo ad analizzare i membri che ci sono in ogni classe : i metodi (ma và :ahah
Allora iniziamo ad analizzare la classe , calcola semplicemente la percentuale di due numeri , un terzo valore che riceve è di tipo optional
il membro che viene comunicato è di tipo friend quindi leggibile anche dal module , se provate a mettere private , quest'ultima andrà in errore perché non può accedervi.
Un altra cosa da notare è la keyword new che è un costruttore ed istanza la classe ; perché la classe in per sè non un oggetto ma lo diventa soltanto dopo che si usa la keyword new.
Vediamo come creare invece istanze di classe !
Consideriamo un' altro semplice esempio:
Classe
Main:
Bene iniziamo ad analizzare la classe , notiamo che abbiamo importato dei Namespace (i Namespace vanno considerato come una cartella , i file in questo caso sono le classi e quindi i namespace contengono + classi) , c'è da dire che le importazioni sono valide solo per la classe Gethost e non per il module1.
Torniamo alla classe gethost : è composta da una variabile private , un istanza di classe(sub new) e una proprietà di solo lettura
Quando dichiariamo la classe : Dim ip As New Gethost(sito) 'siamo obbligati a passargli un valore per la presenza di argomenti nella classe gethost
Nel Esempio precedente , noi comunque abbiamo istanziato la classe percent , ma non essendoci parametri da passare non segnalava nessun errore ; nella classe percent e come se ci fosse Sub New() : nessun argomento. Cosa non presente in questa classe quindi quando creiamo l'oggetto c'è bisogno di un argomento di tipo string!
Una volta chiamata la classe , passa al blocco d'istruzione presente in gethost ed esegue queste istruzione
Dim host As Net.IPHostEntry = System.Net.Dns.GetHostEntry(sito) ' prende l'host tramite gethostentry(sito) * sito è la variabile che nel main legge e viene
successivamente passata alla classe
Dim ipa As Net.IPAddress = host.AddressList(0) ' ottieni l'indirizzo ip
ip = ipa.ToString 'trasforma il tutto in stringa e lo assegna a ip (variabile globale di tipo private )
Infine la proprietà di tipo Public prende il valore di ip e verrà stampata su console.
Dimenticavo di dire, che La classe, a differenza di una struttura è di tipo reference.
Per chi non lo sapesse il vb.net , è un linguaggio che si basa sul OOP (Object Oriented Programming) cioè linguaggi che si basano sulle classi e sui 3 principi dell'oop :
Ereditarietà n.b se tengo un pò di tempo illustrerò anche questi 3 principi più dettagliatamente
Piliformismo
Incapsulamento
Non usare le classi in un progetto vb.net è assolutamente sbagliato , se un applicazione console si vorrebbe usare soltanto Module (che è comunque una classe un pò + particolare , perchè è una classe shared , ma nella guida non voglio illustrare che cos'è un membro shared o classe etc...) , non sfrutteresti minimamente le vere potenzialità del vb.net.
Ora passiamo a vedere come si crea una classe:
Project-Add Class e immettere il nome della classe
Una volta creata la Classe apparirà il code
Class [nome]
end Class
'quindi l'identificativo è la keyword Class
Come si nota nel Immagine ci sono degli SPECIFICATORI D'ACCESSO , nel nostro caso Public
Public significa accessibile sia dal progetto sia da altri programma in caso servisse.
Gli altri specificatori d'accesso sono :
Private = membri accessibile solo nella stessa Classe
Protected= membri accessibili solo nella stessa classe , giocano un ruolo importante nel ereditarietà
Friend = Accessibile solo al progetto , quindi nel progetto sarebbe come se fosse Public
se Notate , alle persone che già usano un pò il vb.net , ogni procedura o funzione (identificati , per chi non lo sapesse dalla keyword sub & function)
Quindi deduciamo che : Gli Specificatori d'accesso sono sempre i primi da mettere.
In caso quest'ultimi vengono a mancare , si intenderà public ( eccetto in alcuni casi)
Dim x as integer , inoltre equivale a dire private x as integer ; questo tanto per informazione
Ora che abbiamo fatto questa breve parentesi torniamo alle classi , Le classi al loro interno hanno dei Membri
Iniziamo ad analizzare i membri che ci sono in ogni classe : i metodi (ma và :ahah
Classe:
Main
Main
Allora iniziamo ad analizzare la classe , calcola semplicemente la percentuale di due numeri , un terzo valore che riceve è di tipo optional
il membro che viene comunicato è di tipo friend quindi leggibile anche dal module , se provate a mettere private , quest'ultima andrà in errore perché non può accedervi.
Un altra cosa da notare è la keyword new che è un costruttore ed istanza la classe ; perché la classe in per sè non un oggetto ma lo diventa soltanto dopo che si usa la keyword new.
Vediamo come creare invece istanze di classe !
Consideriamo un' altro semplice esempio:
Classe
Main:
Bene iniziamo ad analizzare la classe , notiamo che abbiamo importato dei Namespace (i Namespace vanno considerato come una cartella , i file in questo caso sono le classi e quindi i namespace contengono + classi) , c'è da dire che le importazioni sono valide solo per la classe Gethost e non per il module1.
Torniamo alla classe gethost : è composta da una variabile private , un istanza di classe(sub new) e una proprietà di solo lettura
Quando dichiariamo la classe : Dim ip As New Gethost(sito) 'siamo obbligati a passargli un valore per la presenza di argomenti nella classe gethost
Nel Esempio precedente , noi comunque abbiamo istanziato la classe percent , ma non essendoci parametri da passare non segnalava nessun errore ; nella classe percent e come se ci fosse Sub New() : nessun argomento. Cosa non presente in questa classe quindi quando creiamo l'oggetto c'è bisogno di un argomento di tipo string!
Una volta chiamata la classe , passa al blocco d'istruzione presente in gethost ed esegue queste istruzione
Dim host As Net.IPHostEntry = System.Net.Dns.GetHostEntry(sito) ' prende l'host tramite gethostentry(sito) * sito è la variabile che nel main legge e viene
successivamente passata alla classe
Dim ipa As Net.IPAddress = host.AddressList(0) ' ottieni l'indirizzo ip
ip = ipa.ToString 'trasforma il tutto in stringa e lo assegna a ip (variabile globale di tipo private )
Infine la proprietà di tipo Public prende il valore di ip e verrà stampata su console.
Dimenticavo di dire, che La classe, a differenza di una struttura è di tipo reference.
Ultima modifica: