Oop object Oriented Programming



Scaricare 37 Kb.
02.06.2018
Dimensione del file37 Kb.


VB.NET Daniele Cimatti gennaio 2008
Non compila, ma trasforma in un linguaggio intermedio, interpretato dal CLR
NON è case sensitive.
I dati sono di 2 tipi
ValueType

NON devono essere istanziati, Non conoscono il concetto di NULL, ma vengono inizializzati.

Sono tipi di dato predefiniti e utilizzati per valore, ma sono sempre classi.

Si può usare il tipo di dati short (che è più standard) o la classe.

C’è anche DataTime
Classi

Object da cui discendono tutte le classi

String stringa di lunghezza fissa immutabile di caratteri UNICODE

quindi NON può avere trasformatori; useremo sempre solo assegnazioni

che generano nuove copie della stringa originale
Dichiarazioni
Dim var As ValueTyoe [= x]
Dim found As Boolean = False

Dim thisCollection As New Collection dichiarazione e istanza (creazione) insieme


For Each thisObject As String In thisCollection

If thisObject = “Hello” Then

found = True

Exit For


End If

Next thisObject
Il ciclo esegue anche l’ultimo valore.

Tutti gli oggetti enumerabli possono essere navigati con For Each


Dim counter As Integre = 0

While counter < 20

counter += 1



End While

Exception handling
Try

[ tryStatements]

[ Exit Try ] NON si usa

[Catch [ exception [ As type ]] [ When expression

]

[ catchStatements ]



[ Exit Try ] NON si usa

[Catch ]



[Finally

[finallyStatements]]



End Try
Ogni metodo può o NON ritornare alcun valore, o ritornare un valore o solleva eccezione.

E’ fondamentale per tracciare gli errori.


Si possono mettere tanti Catch, ma devono essere messi in ordine: prima i più specifici, poi quelli più generici e infine quello più generico di tutti: Exception
Finally è fondamentale per operare sui db per chiudere la connessione.
Esempio:
Sub TryExample()

Dim x As Double = 5

Dim y As Integer = 0

Try


x /= y

Catch ex As Exception

MsgBoz (ex.ToString)

Finally


Beep()

End Try
Si noti:



I metodi che non hanno ritorno si chiamano Sub

la sinteticità dell’istruzione, che significa x = x / y

la classe Exception esiste solo dentro Catch

questo codice cattura TUTTE le eccezioni

siccome questa Sub tratta una Exception, anche il chiamante lo deve fare
Proprietà

Le variabili devono essere incapsulate: come dunque passo i valori? con i metodi.

Ma i metodi diventano tantissimi e complicati (hanno le parentesi): sono state perciò definite le proprietà, che sono metodi che si richiamano in modo semplice (senza parentesi) come se fossero variabili.

Le proprietà hanno al massimo 2 blocchi: Get e Set (read & write)

Sono una scorciatoia per ridurre la scrittura dei metodi.
L’interfaccia è pubblica per definizione.
La classe va definita Public.
Se non si definisce il costruttore, ne viene creato uno di default, che non fa nulla.

In realtà il costruttore alloca memoria e inizializza le variabili.



istruzioni per OOP
Visibilità:

incapsulamento (information hiding): nascondere proprietà e metodi delle classi: 5 modi

parole chiave o modificatori di visibilità. applicabili a classi, proprietà, metodi e variabili

Le variabili devono essere PRIVATE, altrimenti si rompe il contratto di information hiding


PUBLIC max visibilità

PROTECTED visibile alle classi che ereditano dalla classe

permissivo, ma utile per il programmatore: usare con cautela

FRIEND visibilità concessa alle classi dello stesso modulo (tipo DLL)

PROTECTED FRIEND somma dei precedenti

PRIVATE interna alla classe


Relazioni tra classi:

Inherits eredita, quindi specifica la classe base

NotInheritable non ammette ereditarietà (per componenti esterne, tipo COM)

MustInherit la classe DEVE essere ereditata (classe ASTRATTA)


Metodi e proprietà:

Overridable virtuale, può essere ridefinito (NON è il default)

Overrides ridefinizione

Overridable default per public

MustOverride richiede la ridefinizione
Ereditarietà:

Me rappresenta l’istanza corrente: riferisce L‘ISTANZA

si usa per riferire una variabile locale rispetto a una variabile globale

Dim x As Integer

Sub Somma (x As Integer)

x è quella locale

Me.x è quella globale, quindi farò: Me.x = x
MyBase riferisce la classe base: usato nei costruttori delle classi ereditate

per invocare i metodi della classe base


MyClass riferisce l’implementazione corrente indipendentemente da

eventuali ereditarietà.


Condividi con i tuoi amici:


©astratto.info 2019
invia messaggio

    Pagina principale