Condividi tramite


Introduzione agli oggetti in Visual Basic

Aggiornamento: novembre 2007

Un oggetto è una struttura contenente dati e metodi che possono essere utilizzati per modificare i dati. Quasi ogni azione eseguita in Visual Basic è associata a oggetti. Di seguito sono riportati alcuni termini e concetti di base, utili per comprendere la programmazione orientata ad oggetti.

Classi e oggetti

Le parole "classe" e "oggetto" sono di uso tanto frequente nella programmazione orientata a oggetti che è facile confonderle. In generale, una classe è una rappresentazione astratta di qualcosa, mentre un oggetto è un esempio utilizzabile di ciò che la classe rappresenta. Fanno eccezione a questa regola i membri delle classi condivise, che sono utilizzabili sia nelle istanze di classe che nelle variabili oggetto dichiarate come tipo della classe.

Campi, proprietà, metodi ed eventi

Le classi sono costituite da campi, proprietà, metodi ed eventi. I campi e le proprietà rappresentano le informazioni contenute in un oggetto. I campi sono simili a variabili in quanto possono essere letti o impostati direttamente. Se, ad esempio, esiste un oggetto denominato "Vettura", si potrà memorizzarne il colore in un campo denominato "Colore".

Le proprietà vengono recuperate e impostate come i campi, ma sono implementate dalle routine Get e Set della proprietà che garantiscono un maggiore controllo sulle modalità di impostazione e restituzione dei valori. Il livello dei riferimenti indiretti tra il valore archiviato e le routine nelle quali viene utilizzato questo valore è un'ulteriore garanzia di isolamento dei dati e consente di convalidare i valori prima che essi vengano assegnati o recuperati.

I metodi rappresentano le azioni che possono essere richieste a un oggetto. A un oggetto "Vettura", ad esempio, potrebbero essere associati i metodi "Avvio", "Guida" e "Stop". I metodi vengono definiti aggiungendo alla classe routine che possono essere di tipo Sub o funzioni.

Gli eventi sono notifiche che un oggetto riceve da o trasmette ad altri oggetti o applicazioni. Gli eventi consentono agli oggetti di eseguire un'azione quando si verifica un'occorrenza specifica. Un esempio di evento per la classe "Vettura" potrebbe essere "Revisione_Motore". Poiché Microsoft Windows è un sistema operativo controllato da eventi, gli eventi possono provenire da altri oggetti, applicazioni o input dell'utente, come il clic del mouse o la pressione di tasti.

Incapsulamento, ereditarietà e polimorfismo

Campi, proprietà, metodi ed eventi rappresentano solo una metà dell'equazione costituita dalla programmazione orientata ad oggetti. Ai fini di una reale programmazione orientata ad oggetti è necessario che gli oggetti supportino tre qualità: incapsulamento, ereditarietà e polimorfismo.

L'incapsulamento indica che un gruppo di proprietà, metodi e altri membri correlati vengono considerati come una singola unità o un singolo oggetto. Mediante gli oggetti è possibile controllare la modalità di modifica delle proprietà e di esecuzione dei metodi. Ad esempio, un oggetto può convalidare i valori prima di consentire le modifiche delle proprietà. L'incapsulamento facilita inoltre eventuali modifiche in un secondo tempo dell'implementazione, consentendo di nascondere informazioni dettagliate relative all'implementazione degli oggetti, una tecnica definita non visualizzazione dei dati.

L'ereditarietà indica la capacità di creare nuove classi sulla base di una classe esistente. La nuova classe eredita tutte le proprietà, i metodi e gli eventi della classe base e può essere personalizzata con ulteriori proprietà e metodi. È possibile, ad esempio, creare una nuova classe denominata "Camion" basata sulla classe "Vettura". Nella classe "Camion" verrà ereditata la proprietà "Colore" dalla classe "Vettura" e potranno essere aggiunte ulteriori proprietà, come ad esempio "QuattroRuoteMotrici".

Il polimorfismo indica la capacità di utilizzare più classi in modo intercambiabile, anche se in ognuna di esse le stesse proprietà o gli stessi metodi sono implementati in modi diversi. Il polimorfismo è importante per la programmazione orientata a oggetti perché consente di utilizzare elementi con gli stessi nomi, indipendentemente dal tipo di oggetto in uso al momento. Data una classe base "Vettura", ad esempio, il polimorfismo consente al programmatore di definire diversi metodi "Avvio" per un numero qualsiasi di classi derivate. Il metodo "Avvio" di una classe derivata denominata "VetturaDiesel" può essere completamente diverso dal metodo con lo stesso nome definito nella classe base. Altre routine o altri metodi possono utilizzare il metodo "Avvio" delle classi derivate nello stesso modo, indipendentemente dal tipo di oggetto "Vettura" in uso al momento.

Overload, override e shadowing

Overload, override e shadowing sono concetti simili che possono essere facilmente confusi. Sebbene tutte e tre le tecniche consentano di creare membri con lo stesso nome, esistono alcune importanti differenze.

  • I membri sottoposti a overload vengono utilizzati per fornire versioni diverse di una proprietà o di un metodo con lo stesso nome, ma che accettano un numero diverso di parametri o parametri con tipi di dati diversi.

  • Le proprietà e i metodi sottoposti a override consentono di sostituire una proprietà o un metodo ereditato che non è appropriato in una classe derivata. È necessario che i membri sottoposti a override accettino lo stesso tipo di dati e numero di argomenti. Le classi derivate ereditano i membri sottoposti a override.

  • I membri nascosti vengono utilizzati per sostituire localmente un membro con un ambito più ampio. Un tipo qualsiasi può nascondere un qualsiasi altro tipo. È possibile, ad esempio, dichiarare una proprietà che nasconde un metodo ereditato con lo stesso nome. I membri nascosti non possono essere ereditati.

Vedere anche

Concetti

Classi: progetti iniziali degli oggetti

Proprietà in overload e metodi

Override di proprietà e metodi

Shadowing in Visual Basic

Altre risorse

Oggetti in Visual Basic

Creazione e utilizzo di oggetti

Ereditarietà in Visual Basic