• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Le Classi in Vb.net e specificatori d'accesso

TBH

Utente Master
Autore del topic
24 Dicembre 2012
2.134
130
Miglior risposta
0
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

guidajpg.jpg



Una volta creata la Classe apparirà il code
Class [nome]


end Class

'quindi l'identificativo è la keyword Class

guida02.jpg


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:emoji_smiley:
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:emoji_slight_smile:
Classe:
guida03.jpg

Main
guida04.jpg

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
guida05.jpg


Main:
guida06.jpg



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: