Introduzione a.net (2)



Documenti analoghi
Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Java: Compilatore e Interprete

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

OBIETTIVI SPECIFICI DI APPRENDIMENTO

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Programmazione Orientata agli Oggetti in Linguaggio Java

Oggetti Lezione 3. aspetti generali e definizione di classi I

Introduzione a.net con C#

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Modulo 4: Ereditarietà, interfacce e clonazione

Proff. Fabio Ciao e Raffaele Bortone

Le command line di Java

CORSO DI PROGRAMMAZIONE JAVA

costruttori e distruttori

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Programmazione a Oggetti Lezione 10. Ereditarieta

Progettazione : Design Pattern Creazionali

Inizializzazione, Assegnamento e Distruzione di Classi

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Programmazione in Java Parte I: Fondamenti

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Programmazione ad Oggetti. Java Parte I

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Corso di Programmazione ad Oggetti

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

3. La sintassi di Java

Corso Analista Programmatore Microsoft. Corso Analista Programmatore Microsoft Programma

Parola chiave extends

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

Programmazione Orientata agli Oggetti in Linguaggio Java

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Riferimenti ed Oggetti

Java Virtual Machine

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3

INTRODUZIONE INTRODUZIONE JAVA JAVA

Strumenti per la programmazione

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

vi Sommario Operatore di decremento Operatore di complemento logico Operatore di complemento a bit Operatori binari Operatori

Visibilità dei Membri di una Classe

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Programmazione Java: Variabili membro, Metodi La parola chiave final

Classi Oggetti public private this static static

4. Un ambiente di sviluppo per Java

LINGUAGGI DI PROGRAMMAZIONE

Informatica. Prof. A. Longheu. Introduzione a Java

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Librerie. Laboratorio di Informatica Antonio Monteleone 28

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

UML Diagrammi delle classi. UML Diagramma classi 1

Corso di Informatica

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Object Oriented Programming

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Linguaggio C - Funzioni

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Abstract Data Type (ADT)

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Tipi fondamentali di documenti web

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Multithreading in Java. Fondamenti di Sistemi Informativi

La struttura dati ad albero binario

Grammatica di base: Pointers

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

dall argomento argomento della malloc()

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Installazione del JDK 6

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

CORSO DI PROGRAMMAZIONE

Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II

strutturare dati e codice

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Corso Online Analista Programmatore Microsoft

Scope e visibilità per classi

Object Oriented Software Design

Synchronized (ancora)

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Linguaggi e Paradigmi di Programmazione

Concetto di Funzione e Procedura METODI in Java

Linguaggio C. Fondamenti. Struttura di un programma.

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Confronto tra i principali Linguaggi di Programmazione

Esercitazione n 4. Obiettivi

Introduzione all' OO in Python

Transcript:

Introduzione a.net (2) Il linguaggio C# Implementazioni alternative dell'architettura.net: Rotor Mono

C#: un nuovo linguaggio C# : CLR = Java : JVM C# è il linguaggio di riferimento per.net Costruito su misura per sfruttare a fondo tutte le funzionalità del framework L'eredità dei suoi genitori (C++, Java) è notevole: public class hello { public static void Main() { System.Console.WriteLine( Hello, world! );

C#: fondamenti namespace: permettono di organizzare logicamente le classi. equivalenti ai packages di Java. tipi base: byte, int, long, double,... Ad ogni tipo base corrisponde un tipo di runtime (ad es. int System.Int32) costrutti standard : if, while. for, switch. sintassi e semantica (quasi) identica agli omonimi di Java (prevedibile!), if e while richiedono un bool. variabili: static, readonly, const.

C#: fondamenti Scorciatoie sintattiche: switch consente l'utilizzo di una stringa come elemento di confronto. nuovo costrutto foreach per esaminare i valori di un array. for (int pos; pos < array.cont; pos++) { oggetto elem = (oggetto) array[pos]; elem.metodo(); si può riscrivere come: foreach (oggetto elem in array) { elem.metodo();

C#: array e stringhe Array: sintassi (e semantica) Java-like: int [] vettore = new int[10]; int [] vettore = { 1, 2, 3, 4 ; int [,] matrice = new int [5,8]; int [][] matrice = {new int [5], new int [3]; System.array contiene metodi utili, tra cui Sort, Reverse, e IndexOf. Stringhe: definite tramite il tipo string E' possibile accedere direttamente all'i-simo carattere (come in C, ma non in Java). allocate staticamente (come in Java): per utilizzare stringhe dinamiche, si usa la classe StringBuilder (analoga a StringBuffer di Java)

C#: boxing/unboxing Il compilatore provvede a trasformare una variabile in un oggetto, e viceversa. In altre parole. il compilatore provvede ad generare un reference type dove occorre, a partire dal value type (boxing), e viceversa (unboxing). System.Console.WriteLine(15.ToString()); ArrayList colori; Color colore;... colore.red=(byte)150; colore.blue=(byte)20; colore.green=(byte)10; colori.add( colore );

C#: parametri delle funzioni Semantica arricchita per i parametri delle funzioni: in (default): tipi base per valore, oggetti per riferimento (come puntatori in C). ref: parametri sempre per riferimento. out: parametro di output, nessun controllo sull'eventuale inizializzazione. C#: delegates Possibilità di definire puntatori a funzione (o meglio, funzionali functor) tramite delegates.

.NET: Assembly L'evoluzione delle DLL autodescrittivi; composti da: Manifest (versione, informazioni generali, dipendenze da altri assembly, tipi, informazioni di sicurezza,...); Codice (MSIL): le classi sono organizzate gerarchicamente tramite namespace; Risorse. Goodbye DLL Hell! differenti versioni dello stesso assembly possono convivere; notevole cambiamento rispetto al modello classico di Windows (file LIB/DLL).

C#: classi ed oggetti Definizione delle classi: analoga a quella di Java/C++. Ereditarietà singola, con interfacce. [attributi] [modificatori] class <nomeclasse> [:nomeclassebase] [implements interfaccia1[,interfaccian]] Modificatori di visibilità per classi: public, (internal). per classi nested: public, (private), internal, protected, protected internal. Visibilità Significato public Accesso non ristretto protected Accesso limitato alla classe contenitore o ai tipi da essa derivati internal Accesso limitato al progetto corrente (assembly) protected internalaccesso limitato al progetto corrente ed ai tipi derivati dalla classe contenitore private Accesso limitato al tipo contenitore

C#: ereditarietà e polimorfismo maggiore espressività per la ridefinizione dei metodi: aprire una catena polimorfa, senza nessun elemento iniziale: abstract. aprire una catena polimorfa, con elemento iniziale: virtual elementi intermedi della catena: override ultimo elemento della catena: sealed override aprire una nuova catena, chiudendo la precedente: new virtual aprire una catena di un solo elemento (non polimorfo), chiudendo la precedente: new bloccare l'ereditarietà: sealed. Overloading degli operatori.

C#: property E' possibile definire metodi che si comportano come un attributo. public class articolo { private int lcosto = 1000; public int costo { set { if (value>0) lcosto = value; get { return lcosto;

C#: indexer Permette di utilizzare un oggetto come se fosse un array. si definisce un metodo di nome this. private stringcollection cache; public object this[string name] { get { if (cache.contains( name )) { long position = (long)cache[name]; return getbufferatposition( position ); return ; set { if (c.contains(name)) { long position = (long)cache[name]; savebufferatposition( position, value ); else { appendbuffer( value );

C#: altre caratteristiche garbage collector eccezioni (Java-like) codice unsafe (possibilità di uso diretto dei puntatori) riflessione thread enum (non corrispondono ad un intero, come avviene in C) definizione di attributi (per combinazione condizionale) E, prossimamente: Generics (ma anche in Java 1.5!)

Shared Source Common Language Interface / Rotor Implementazione d'esempio delle componenti.net rese standard dall'ecma: 334: Il linguaggio C# 335: Common Language Infrastructure (CLI) Distribuzione del codice sorgente, non commerciale. Cross-platform: Windows XP, FreeBSD, MacOSX. Archivio tgz, poco più grande di 16Mb: contiene implementazione e codice di test. Ampia documentazione: ulteriori 5Mb in formato html.

Rotor vs CLR commerciale Entrambi implementazioni complete degli standard ECMA. Rotor è un sovrainsieme di ECMA, sottoinsieme del framework.net completo. Rotor è derivato dal codice sorgente della versione commerciale. Le migliorie apportate sono state reintegrate nel main tree. Il compilatore C# è praticamente lo stesso!

Rotor vs CLR commerciale Differenze tra SSCLI e.net framework commerciale: il compilatore JIT e il garbage collector sono stati rimpiazzati da implementazioni portabili. sono state rimosse molte funzionalità specifiche di Windows, come l'interoperabilità con oggetti COM, WinForm, ecc. non sono stati incluse molte caratteristiche commerciali, come ADO.NET, servizi enterprise, e ASP.NET.

Mono Progetto avviato da Ximian. (ora acquisita da Novell) Re-implementazione completa del.net framework Compilatore C# (self-hosted!) e VB (in sviluppo) (GPL) Ambiente di runtime (interprete normale e JIT) (LGPL) Libreria di classi. si appoggia a varie librerie opensource: libart (2d), gtk (Windows.Forms), gnome-db (ADO.NET),... Cross-platform: Linux/Unix, Windows.

Mono Sviluppo molto rapido. Roadmap: 1.0 (Q2 2004): core, C#, database, web application. allineato con.net 1.1, compatibilità con.net 1.0 1.2 (Q4 2004): Windows.Forms, VB.NET, generics, seguirà.net 1.2

Rotor vs Mono Licenza Rotor è non commerciale: non è possibile (al contrario di Mono) effettuare modifiche e ridistribuire a pagamento il codice. (target: ambiente accademico). Completezza Rotor è un'implementazione di riferimento, limitata alle componenti rese standard. Manca di tutte le caratteristiche necessarie allo sviluppo di applicazioni. il termine di confronto di Mono è (o sarà) il.net framework completo.