Java: Compilatore e Interprete



Похожие документы
Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

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:

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

Struttura di un programma Java

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

Concetto di Funzione e Procedura METODI in Java

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Eclipse. Avviare un progetto e compilare un semplice programma

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

Programmare in Java. Olga Scotti

Esercizi della lezione 5 di Java

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

Appunti di Informatica 1

Oggetti Lezione 3. aspetti generali e definizione di classi I

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

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

Le command line di Java

Programmazione ad oggetti

costruttori e distruttori

Java Virtual Machine

Funzioni in C. Violetta Lonati

Strumenti per la programmazione

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

UML Diagrammi delle classi. UML Diagramma classi 1

Programmazione in Java Parte I: Fondamenti

Inizializzazione, Assegnamento e Distruzione di Classi

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

Le variabili. Olga Scotti

Programmazione a Oggetti Lezione 10. Ereditarieta

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

Introduzione alla programmazione in C

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

10 - Programmare con gli Array

Algoritmi di Ricerca. Esempi di programmi Java

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

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

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Arduino: Programmazione

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Java? Sì, grazie. Scopo del corso

Ingegneria del Software

Modulo 4: Ereditarietà, interfacce e clonazione

GESTIONE DEI PROCESSI

Esercitazione n 4. Obiettivi

Esercizio 1: trading on-line

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Esercitazione 4 JDBC

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Object Oriented Programming

Livelli di astrazione

Panoramica: che cosa è necessario

Scrivere un programma in Java

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Multithreading in Java. Fondamenti di Sistemi Informativi

Programmazione Java: Variabili membro, Metodi La parola chiave final

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Object Oriented Software Design

Progettazione : Design Pattern Creazionali

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Introduzione a Classi e Oggetti

Approccio stratificato

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

Parola chiave extends

Programmazione a Oggetti Modulo B

Tipi di Dato Ricorsivi

Programmazione Orientata agli Oggetti in Linguaggio Java

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

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

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

Protezione. Protezione. Protezione. Obiettivi della protezione

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011.

Visibilità dei Membri di una Classe

INTRODUZIONE INTRODUZIONE JAVA JAVA

19. LA PROGRAMMAZIONE LATO SERVER

Architettura MVC-2: i JavaBeans

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Programmazione ad Oggetti. Java Parte I

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

LINGUAGGI DI PROGRAMMAZIONE

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Corso sul linguaggio Java

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

2 - Introduzione al linguaggio Java

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Da JavaScript a Java

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Informatica. Prof. A. Longheu. Introduzione a Java

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

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

Primi programmi in Java. Lezione IV

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Introduzione al Python

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Транскрипт:

Java: Compilatore e Interprete

Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT (Just In Time) Pro: Indipendente dalla piattaforma (portabilità) Contro: L ulteriore trasformazione rallenta l esecuzione La JVM esegue il file specificato dall utente (esempio nel lucido successivo), che a sua volta deve contenere un metodo main(). La JVM cerca i file (.class) nel momento in cui servono (collegamento dinamico). È possibile specificare il percorso nel quale cercare tramite la variabile classpath.

Il Linguaggio Java È un linguaggio totalmente ad oggetti Si basa strettamente sul concetto di classe e di oggetto Un programma è un insieme di classi. Anche il main è in una classe! Il linguaggio definisce alcuni tipi primitivi/di base

Una classe Java può: Il Linguaggio Java contenere dati/operazioni proprie definire un tipo di dato astratto e fungere da stampo per creare nuovi oggetti Una classe Java è un entità sintatticamente in grado di contenere sia i dati che le funzioni che operano su quest ultimi. Sia i dati che le operazioni hanno differenti livelli di visibilità/protezione: pubblico: visibile anche dall esterno della classe (keyword public) privato: visibile solo dentro la classe (keyword private) Java impone la corrispondenza fra nome di una classe pubblica e nome del file in cui essa deve essere definita. E essenziale rispettare maiuscole/minuscole (Java è case-sensitive)

Classe Una classe public viene definita utilizzando la seguente notazione: public class NomeClasse {... All interno del costrutto class,è necessario dichiarare: Metodi e dati associati alla classe Metodi e dati associati agli oggetti Nel primo caso, i dati appartengono alla classe e sono unici all interno della JVM. Nel secondo caso, invece, essi appartengono ad ogni singola istanza. public class Esempio1 { private int value;... public class Esempio1 { private static int value;...

Classe In definitiva, la dichiarazione di una variabile segue la sintassi: [private public] [static] Tipo Nome; mentre, per dichiarare un metodo, usiamo la sintassi: [private public] [static] TipoDiRitorno Nome(TArg1 Istruzioni da eseguire ; Esempio nome1, ){ public class Esempio1 { public int getvalue(){ public void setvalue(int newvalue){

Classe public class Esempio1 { private int value; public int getvalue() { return value; public void setvalue(int newvalue){ value = newvalue; La classe Esempio1 dichiara un unico campo (value) privato e quindi non accessibile dall esterno. Ogni oggetto di tipo Esempio1 ha un proprio campo value Gli oggetti di tipo Esempio1 espongono un metodo getvalue() che ritorna il valore attuale di value Gli oggetti di tipo Esempio1 espongono un metodo setvalue(int newvalue) che consente di impostare il valore di value

Oggetto Una classe può fungere da stampo per creare oggetti. Per creare un oggetto, bisogna: Definire la classe che modella il nuovo tipo di dato Definire un riferimento, il cui tipo è il nome della classe modello Creare dinamicamente l'oggetto tramite l'operatore new Ipotizzando che sia stata già definita la classe Esempio1: Esempio1 esempio; // def. del riferimento esempio = new Esempio1(); // creazione oggetto O, in maniera più compatta: Esempio1 esempio = new Esempio1(); Per invocare i metodi offerti da un oggetto, si usa la notazione puntata riferimento.nomemetodo( ). Ad esempio, per invocare getvalue() sull oggetto esempio, scriveremo esempio.getvalue();

Esecuzione di un programma Un programma Java è un insieme di classi e oggetti: Le classi sono componenti statici, che esistono già all'inizio del programma Gli oggetti sono invece componenti dinamici, creati su necessità e durante l'esecuzione Il più semplice programma Java è costituito da una singola classe che, come minimo, dovrà definire una singola funzione statica, il main(): public class Esempio0 { public static void main(string args[]) { System.out.println("Hello World!"); Per convenzione, in Java i nomi delle classi iniziano sempre con la lettera maiuscola e i nomi dei singoli campi (dati e funzioni) iniziano sempre con la lettera minuscola.

Java main Il main() in Java è una funzione pubblica con la seguente struttura: public static void main(string args[]) { Deve essere obbligatoriamente dichiarato: public: Il main deve essere visibile all esterno della classe per consentire l invocazione da parte della JVM static: È statico dato che esiste ancora prima di qualunque oggetto void: Non deve avere valore di ritorno String args[]: Deve sempre prevedere gli argomenti dalla linea di comando, anche se non vengono usati, sotto forma di array di String

Esempio public class Esempio { public static void main(string args[]) { System.out.println( Ciao Mondo!"); Importante: L uso della notazione puntata System.out.println( Hello World ) invoca il metodo println(string input) sull oggetto out, che è un campo (statico) della classe System predefinita in Java Sia il main che la classe devono essere public per consentire l invocazione da parte della JVM

Un altro esempio public class Esempio2 { public static void main(string args[]) { int x = 3, y = 4; int z = x + y; System.out.println("La somma vale: "+z); Importante: L operatore + è utilizzato per la concatenazione delle stringhe La variabile z è di tipo int, ma viene implicitamente convertita nella stringa associata

Esempio: creazione Oggetto contatore Vogliamo creare un oggetto contatore. Ogni contatore deve avere un proprio valore, e deve offrire tre metodi: inc(): consente di incrementare il valore attuale del contatore reset(): consente di portare a zero il valore del contatore getvalue(): consente di reperire il valore attuale del contatore

SimpleCounter.java Il campo val è privato (keyword private): può essere acceduto solo dalle operazioni definite nella medesima classe (reset, inc, getvalue). Si garantisce l incapsulamento.

Usiamo SimpleCounter Inseriamo un main nella classe SimpleCounter. All interno, creiamo un oggetto ed invochiamo i suoi metodi. Infine, recuperiamo il valore attuale e lo stampiamo public static void main(string args[]){ SimpleCounter counter = new SimpleCounter(); counter.reset(); counter.inc(); counter.inc(); int x = counter.getvalue(); System.out.println("Il contatore vale "+x); Cosa viene stampato?

Usiamo SimpleCounter E se invece public static void main(string args[]){ SimpleCounter counter1 = new SimpleCounter(); SimpleCounter counter2 = new SimpleCounter(); counter1.inc(); counter1.inc(); counter2.reset(); int x1 = counter1.getvalue(); int x2 = counter2.getvalue(); System.out.println("Il contatore1 vale "+x1); System.out.println("Il contatore2 vale "+x2); Cosa viene stampato?