Corrado Cavalli Microsoft .NET MVP

Slides:



Advertisements
Presentazioni simili
Ambiente Java.
Advertisements

Carlo Becchi .NET Tutorial Carlo Becchi
INTRODUZIONE Il framework.NET. Un po di storia Sin dalla prima versione del sistema operativo Windows (1990 circa), nacque la necessità di far comunicare.
ASP .NET & Web Service: Introduzione
Consumare Web Service Andrea Saltarello
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
EP 10/11 - PBLezione 2-21 Elementi di Programmazione Tipi di Dati Conversioni Istruzioni di controllo del flusso.
Lez. 5 (10/11 - PB)Elementi di Programmazione1 Lezione 5 Procedure Funzioni Passaggio di parametri.
Lez. 5 (11/12- PB)Elementi di Programmazione1 Lezione 5 Procedure Funzioni Passaggio di parametri.
Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Dipartimento di Matematica
Massa Laura Mela Enrica
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Università degli Studi di Modena e Reggio Emilia
DLL: Dynamic Linking Library
Fondamenti di Informatica
Le componenti di un calcolatore CPU CPU Intel x86, AMD Intel x86, AMD Memoria volatile Memoria volatile RAM RAM Memorie di massa Memorie di massa Hard.
Programmazione Procedurale in Linguaggio C++
Introduzione allambiente BasicX Informatica. Argomenti Le caratteristiche principali del BX-24 Il BOS (BasicX Operating System) on-chip Lambiente di sviluppo.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Laboratorio di Linguaggi note sull'uso dell' IDE DevC++ Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Introduzione alla programmazione lll
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME … Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
Introduzione ad ASP.net
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net View State e controlli Elaborazione di Franco Grivet Chin.
Argomenti della lezione
Corso di PHP.
C# LE BASI 2007 Prima lezione - Introduzione.
Il compilatore Dev-C++
Introduzione a C#.
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
Ereditarietà e Polimorfismo
1 Introduzione. 2 Le motivazioni In.net Framework iniziato nel 2000 rappresenta una svolta nella tecnologia Microsoft per andare oltre ai linguaggi esistenti.
Namespaces 1. Utilizzati per contenere tipi (classi, strutture, interfacce … ) ed altri namespaces La Class Library è organizzata gerarchicamente mediante.
C/C++ Claudio Rocchini IGM C. Rocchini - C++.
Visual Basic Le novità del linguaggio
Sintassi base e struttura di un programma
Java come linguaggio di programmazione
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
ASP.NET. …un po’ di ASP ASP (Active Server Pages) è una tecnologia Microsoft che consente di scrivere codice eseguibile (script) lato server, inserendo.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Lezioni 1-2.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Lez. 5 (13/14)Elementi di Programmazione1 Lezione 5 Procedure.
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
Programmazione in Java
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Copyright © Istituto Italiano Edizioni Atlas
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
.NET vNext e lo sviluppo web cross-platform
XVRC2 Emanuele Ruffaldi Giugno Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Corrado Cavalli Microsoft .NET MVP corrado@mvps.org VB.NET Overview Corrado Cavalli Microsoft .NET MVP corrado@mvps.org

Importante! VB.NET è VB7 Non è E’ un linguaggio nuovo, maturo, OOP Sintassi molto (!) simile a VB6 Da usare come nuovo linguaggio

Sistema Operativo (Windows 98/NT/2000/XP/2003/CE e Altri) .NET Framework Tutti i linguaggi .NET (C++ escluso) richiedono la presenza del .NET Framework Strato software che si interpone tra il S.O e l’applicazione Codice MSIL VB.NET,C#,C++,J#... .NET Framework CLR (Garbage Collector,Eccezioni,Multithreading) BCL (Tipi Base) Sistema Operativo (Windows 98/NT/2000/XP/2003/CE e Altri) Circa 8000 classi...

Codice IL e JIT Compiler VB.NET Compilatore vbc.exe Codice IL e Metadati RUN! JIT Compiler Codice x86

BCL - Libreria di classi Common Language Runtime .NET Framework ASP.NET : Web Forms e servizi Windows Forms ADO.NET : dati e XML BCL - Libreria di classi Common Language Runtime Il tutto... Totalmente Free!

Redist circa 20 MB (già installato su WS2003) Non gira su Windows 95 Dettagli Redist circa 20 MB (già installato su WS2003) Non gira su Windows 95 Per sviluppare serve Win2000 o superiore Non serve per applicazioni ASP.NET (lato client) Esiste per Pocket PC, SmartPhones, Embedded

.NET Framework (Applicazioni) Console Applications Windows Forms Windows Services Components Web Forms (Siti Web) XML Web Services New!

Il linguaggio Tutti i files hanno la stessa estensione (.vb) e possono contenere più Classi [Class]/ Moduli [Module]. EntryPoint (Sub Main) di un programma può essere in un modulo o in una classe

Namespaces Sono dei raggruppamenti Logici I moduli e le classi vivono nei Namespaces VB Imposta un root namespace VB.NET definisce degli imports globali Imports Namespace=Alias Permette di evitare di scrivere il percorso completo a un namespace NameSpace ABC ... NameSpace DEF ... End NameSpace End NameSpace

Global Variables (usare Shared) Usare Option Explicit e Option Strict Variabili Global Variables (usare Shared) Usare Option Explicit e Option Strict Dichiarazioni multiple sulla stessa riga Block scope (cicli For,Do...Loop) Dim i as Integer=“1” Option Strict On= Error! VB6 Dim a,b,c as String a,b=Variant c=String Dim a,b,c as String Crea 3 variabili stringa VB6

Data Types Variant non esiste più Tutto deriva da System.Object

Data Types Byte Char (2 bytes) [A“c”] Boolean (4 bytes) Short (2 bytes) {ex Integer} Integer (4 bytes) {ex Long} Long (8 bytes) Currency -> Decimal (16 bytes) Single Double Date Sono Alias dei tipi definiti nel .NET framework (Int16, Int32...) New!

Le stringhe a lunghezza fissa non esistono in .NET Data Types String Le stringhe a lunghezza fissa non esistono in .NET Dim s as String *20 VB6 Dim s as New String(“ “c,20) Crea una stringa lunga 20 caratteri

Initializers E’ possibile dichiarare e inizializzare una variabile sulla stessa riga Dim X as Integer=1 Dim y as Integer=myFunction Dim conn as new SQLConnection(...) Dim x as new MyOwnClass() ... Dim x as MyOwnClass x=new MyOwnClass Sono equivalenti

Assignments Le proprietà di Default non esistono più Set non si usa più X+=1,X-=1,X*=n,X\=n,Y^=n, s+=“xyz” s=s & “ciao” , s=s+”ciao” Label1.Caption=“ok” Label1=“ok” Label1.Text=“ok” VB6 VB.NET VS 2003 Only s=s & 1 (ok) s=s+1 (error) VB.NET Bit shifting! Dim i as Integer=8 i=i>>1 (4)

Ereditano da System.ValueType Enum,Structures,Integer... Tipi base Value Types Ereditano da System.ValueType Enum,Structures,Integer... Tipi base Sono memorizzate sullo stack Contengono il valore della variabile Dim i as integer=1 1

Reference Types Sono memorizzate nella Heap Contengono un riferimento alla variabile Stringhe, Objects Sono controllati dal Garbage Collector Dim s as String=“pippo” Heap &H1235 &H1230 Ciao &H1235 pippo ... pluto

Boxing-Unboxing E’ la conversione di un value type in un reference type e viceversa E’ un operazione dispendiosa in termini di prestazioni e memoria Accade quando si passa un Value Type ad una variabile object Usare CType() o DirectCast() per evitare Boxing e UnBoxing CType tenta la conversione del tipo DirectCast è più veloce (solo reference types)

E’ possibile definire il tipo usato dall’Enum Simili a VB6 E’ possibile definire il tipo usato dall’Enum E’ possibile “decorare” un enumerato con <Flags()> Demo

Il valore usato nella Dim è l’upper bound! Array Sono 0 (zero!) based Il valore usato nella Dim è l’upper bound! Dim a(3,2) as Integer [Matrici] Array Initializers Dim x() as Int32={1,2,3} Array.Clone Array.Copy(...) Dim b(3) as Integer VB.NET: 0,1,2,3 C#: 0,1,2 Demo

Possono essere viste come classi “leggere” Strutture Sono Value Types Si definiscono usando Possono essere viste come classi “leggere” Type Prova Public X as Integer Public Y as Long End Type Structure Prova Public X as Integer Public Y as Long End Structure VB6 VB.NET Demo

I Parametri sono ByVal (ByRef in VB6) Procedure I Parametri sono ByVal (ByRef in VB6) Si può usare Return per ritornare un valore Le routines richiedono sempre le parentesi Public Function Test (ByVal X as Integer) as Integer Return X+1 End Structure Test(3) ‘ <-Parentesi

AndAlso e OrElse sono short circuited IIF No (!)  Short circuit e Loop AndAlso e OrElse sono short circuited IIF No (!)  While ... Wend While ... End While For i as Integer=0 to 10 ... Next VS 2003 Only For Each t as TextBox in Me.Controls ... Next

E’ possibile usare On Error... Gestione degli Errori Non Fatelo! E’ possibile usare On Error... .NET supporta la gestione strutturata delle eccezioni (SEH) Un eccezione è un anomalia che può capitare durante la vita dell’applicazione L’anomalia viene segnalata attraverso un oggetto Exception (o ereditato da esso) Exception.Message Exception.Source Exception.StackTrace Come faccio a intercettare le eccezioni?

Per lanciare un eccezione usare Throw (Exception) Try-Catch-Finally Try ... Catch ex as Exception (When) ... Exit Try Throw ... Finally .... End Try Per lanciare un eccezione usare Throw (Exception) E’ possibile passare l’eccezione originale usando InnerException

Classi in .NET Tutti i files hanno estensione .vb In un unico file ci possono essere più classi Definite con I membri di una classe possono essere dimensionati ovunque (non solo nella Declaration Section) E’ possibile esporre costanti pubbliche da una classe I Forms sono delle classi! <Private,Public...>Class Test End Class Dim f as New Form1 f.Show()

Overloading La possibilità di definire più funzioni con lo stesso nome e diverso numero di parametri Non vale per parametri di ritorno Da preferire rispetto a parametri opzionali (attenzione!) per compatibilità con C# IsMissing non è più supportata I parametri opzionali devono avere un default Public Sub Test (ByVal X as Integer) End Sub Public Sub Test (ByVal X as Integer,ByVal Z as Integer) End Sub

Properties ReadOnly e WriteOnly Public Class Test Property Name as XXX Get ... End Get Set (Value as XXX) End Set End Property End Class ReadOnly e WriteOnly Al momento non possono avere scope diversi

Costruttori Metodo invocato quando si istanzia una classe (new) Equivalente di Class_Initialize Possibilità di passare parametri e usare Overloads Public Class MyOwnClass Public Sub New (ByVal X as Integer) ... End Sub End Class

Come risolviamo il problema? Vita degli oggetti In .NET non esiste Class_Terminate Non viene usato il reference counting ma il Garbage Collector Distruzione non deterministica: Non sappiamo quando un oggetto verrà scaricato dalla memoria Come risolviamo il problema?

Finalize (~) Public Overrides Sub Finalize ... End Class Viene invocato dal GC quando l’oggetto viene scaricato dalla memoria Non risolve il problema della determinazione

Eventi Event,RaiseEvent e WithEvents Con Handles si possono gestire eventi multipli (No Control Arrays in .NET) AddHandler / RemoveHandler Private Sub Button1_Click(…) Handles Button1.Click, Button2.Click … End Sub AddHandler Button1.Click, AddressOf Button1_Click RemoveHandler Button1.Click, AddressOf Button1_Click

Shared Members Sono membri condivisi da tutte le istanze di una classe (Static in C#) Si accede usando NomeClasse.XXX I membri statici possono accedere ai soli fields statici GlobalMultiuse in VB6 Public Class MyOwnClass Private Shared ID as Integer Public Shared Function ID as Integer Return ID End Function End Class Sostituiscono i moduli .BAS

Ereditarietà Permette di definire che una classe eredita Interfaccia e codice da un altra (Is a) La classe base può essere in un altro linguaggio .NET (C#,J#,C++) La classe ereditante eredita Public,Friend,... La classe eredita tutti gli eventi della classe base MyBase permette di accedere alla classe da cui si sta ereditando Public Class MyNewClass Inherits MyBaseClass End Class

Override della classe base La classe ereditante può ridefinire (Overrides) i metodi della classe base (se Overridable) I metodi overrides sono a loro volta overridable NotOverridable impedisce l’override

Classi Astratte NotInheritable indica che una classe non è ereditabile Esempio: Classe con soli membri statici MustInherit definisce una classe astratta che non può essere istanziata MustOverride definisce un membro che deve essere ereditato

Scope Qualifier Private,Public,Friend... Protected: Visibile all’interno della stessa classe e alle classi che ereditano da essa Protected Friend: Nella stessa Assembly

Interfacce Si definiscono usando Interface Possono contenere Eventi L’implementazione è slegata dal nome Le classi ereditate ereditano anche l’implementazione di interfaccia

Definizione Interface IPerson Sub DoSomething() Property Name() As String End Interface Definizione Public Class Person Implements IPerson Public Sub DoSomething() Implements IPerson.DoSomething … End Sub Public Property Name() As String Implements IPerson.Name Get … End Get Set(ByVal Value As String) … End Set End Property End Class Può essere diverso Implementazione

Communities news.microsoft.com microsoft.public.it.dotnet.vb microsoft.public.it.dotnet.* Comunità degli sviluppatori http://www.microsoft.com/italy/msdn/community/default.asp

Webcasts VB.NET: Sviluppo di applicazioni desktop http://www.microsoft.com/italy/msdn/webcast/default.asp  5 Febbraio, 14:30-16:00 VB.NET: Sviluppo di applicazioni desktop