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



Documenti analoghi
Java: Compilatore e Interprete

Strumenti per la programmazione

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:

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

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

Struttura di un programma Java

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

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

Programmare in Java. Olga Scotti

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

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

Algoritmi di Ricerca. Esempi di programmi Java

Scrivere un programma in Java

Appunti di Informatica 1

Esercizi della lezione 5 di Java

Object Oriented Software Design

Ambienti di Sviluppo

Le command line di Java

costruttori e distruttori

Concetto di Funzione e Procedura METODI in Java

2 - Introduzione al linguaggio Java

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Programmazione a Oggetti Lezione 10. Ereditarieta

Introduzione alla programmazione in Java

Eclipse. Avviare un progetto e compilare un semplice programma

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli

Esercitazione n 4. Obiettivi

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

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

Introduzione a Classi e Oggetti

Introduzione alla programmazione in C

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

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

Funzioni in C. Violetta Lonati

Programmazione ad oggetti

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

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

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

Programmazione in Java Parte I: Fondamenti

Modulo 4: Ereditarietà, interfacce e clonazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Progettazione : Design Pattern Creazionali

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

Le variabili. Olga Scotti

Primi programmi in Java. Lezione IV

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

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

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

Java? Sì, grazie. Scopo del corso

10 - Programmare con gli Array

dall argomento argomento della malloc()

Esercitazione 4 JDBC

Panoramica: che cosa è necessario

Java Virtual Machine

Introduzione ad Eclipse

Corso di Informatica

Informatica. Prof. A. Longheu. Introduzione a Java

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

Tale attività non è descritta in questa dispensa

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

Inizializzazione, Assegnamento e Distruzione di Classi

Programmazione Orientata agli Oggetti in Linguaggio Java

Fondamenti di Informatica T1 Guida all uso di JDK e Eclipse

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

Programmazione. Programmare ad oggetti. Programmi e calcolatori. Focalizzazione del corso. Alcuni linguaggi famosi. Programmi e linguaggi

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

Corso sul linguaggio Java

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Ottava Esercitazione. introduzione ai thread java mutua esclusione

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

4. Un ambiente di sviluppo per Java

Introduzione agli Abstract Data Type (ADT)

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

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

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

Introduzione al Python

sito web sito Internet

Arduino: Programmazione

Approccio stratificato

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

Gestione Risorse Umane Web

Introduzione all uso di Eclipse

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

Corso Eclipse. Prerequisiti. 1 Introduzione

INTRODUZIONE INTRODUZIONE JAVA JAVA

MANUALE UTENTE Fiscali Free

Corso di Sistemi di Elaborazione delle informazioni

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

Corso di Informatica

Allocazione dinamica della memoria - riepilogo

LINGUAGGI DI PROGRAMMAZIONE

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

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Introduzione ai tipi di dato astratti: applicazione alle liste

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Prova di Laboratorio di Programmazione

Introduzione al linguaggio C Gli array

FONDAMENTI di INFORMATICA L. Mezzalira

Variabili e tipi di dato

Transcript:

Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Java: Compilazione e Traduzione Editing, compilazione, esecuzione in Java C1.java class C1 main() ; C2.java class C2 ; compile compile compile C1.class getfield C2.class field JVM Execute CN.java class CN ; CN.class Aload_0 Bytecode Generation Non c è il Linker!!! Non c è il Progetto!!! 3 Interf1.h Interf2.h C: Editing, compilazione, esecuzione Un progetto è un programma che, durante la fase di editing, è stato strutturato su più file File1.c main() File2.c f_1() compile compile compile InterfN.h File1.obj 10011 File2.obj 110001 linker File.exe 110011 Preprocess Preprocess Preprocess FileN.c f_n() FileN.obj 001111 Progetto.prj File1.c File2.c FileN.c 2 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 Non c è il file-progetto. La JVM esegue solo il file che contiene il 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 (in laboratorio è già impostata) 4 1

Strumenti Utilizzati Il concetto di classe Java 6 Software Development Kit (J6-SDK) Ambiente di sviluppo fornito gratuitamente dalla Sun Comprende diversi tool, in particolare: Un compilatore java (javac) Una Java Virtual Machine (java) Altre Utility (javadoc, jar, etc) Dal 2006 Java e Open Source! Questi tool sono utilizzabili da linea di comando (MS-DOS) Text Editor qualsiasi (Es Blocco Note TextTool) Esistono anche ambienti integrati IDE (Come Borland JBuilder o Eclipse) 5 Una CLASSE JAVA riunisce le proprietà di: componente software: può essere dotata di suoi propri dati - operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi di protezione tipi di dato astratto: può fungere da stampo per creare nuovi oggetti Una classe Java è una entità sintatticamente simile alle struct del C però, contiene non solo i dati ma anche le funzioni che operano su quei dati e ne specifica il livello di protezione pubblico: visibile anche dall esterno privato: visibile solo entro la classe 7 Il Linguaggio Java È un linguaggio totalmente a oggetti: tranne i tipi primitivi di base (int, float, ), esistono solo classi e oggetti È fortemente ispirato al C++, ma riprogettato senza il requisito della piena compatibilità col C (a cui però assomiglia) Un programma è un insieme di classi Non esistono funzioni definite (come in C) a livello esterno, né variabili globali esterne Anche il main è definito dentro a una classe! 6 Programmi in Java 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, che vengono creati al momento del bisogno, durante l'esecuzione. Il più semplice programma Java è dunque costituito da una singola classe e come minimo tale classe dovrà definire una singola funzione statica, il main 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 8 2

Il MAIN in Java Il main in Java è una funzione pubblica con la seguente signature obbligatoria: public static void main(string args[]) Deve essere obbligatoriamente dichiarato public, static, void Non può avere valore di ritorno (è void) Deve sempre prevedere gli argomenti dalla linea di comando, anche se non vengono usati, sotto forma di array di String (il primo non è il nome del programma) Qualche semplice esempio (2) public class EsempioBase public static void main(string args[]) int x = 3, y = 4; int z = x + y; System.out.print( La somma vale: +z); La classe che contiene il main dev'essere pubblica 9 11 Hello World public class Esempio0 public static void main(string args[]) System.out.println( Hello World ); Notare l uso in java della notazione puntata System.out.println( Messaggio ); Il messaggio println( Messaggio )è inviato all oggetto out che è un membro (statico) della classe predefinita System 10 Classi & File In Java esiste una ben precisa corrispondenza fra nome di una classe pubblica e nome del file in cui essa dev'essere definita Una classe pubblica deve essere definita in un file con lo stesso nome della classe ed estensione.java Esempi classe EsempioBase file EsempioBase.java classe Esempio0 file Esempio0.java da ciò deriva che è essenziale poter usare nomi di file lunghi e rispettare maiuscole/minuscole. IL JAVA E CASE-SENSITIVE 12 3

Compilazione ed Esecuzione Usando il JDK della Sun: Compilazione: javac Esempio0.java (produce Esempio0.class) Esecuzione: java Esempio0 Hello World Completo /** File Esempio0.java * Applicazione Java da linea di comando * Stampa la classica frase di benvenuto * @author Barbara Pettazzoni * @version 1.0, 12/05/2008 */ public class Esempio0 public static void main(string args[]) System.out.println("Hello World!"); 13 15 La Documentazione Produciamo la documentazione È noto che un buon programma dovrebbe essere ben documentato.. ma l esperienza insegna che quasi mai ciò viene fatto non c è tempo, ci si penserà poi e alla fine la documentazione non c è Java prende atto che la gente non scrive documentazione..e quindi fornisce uno strumento per produrla automaticamente a partire dai commenti scritti nel programma: javadoc. Lo vedremo ora all opera 14 Per produrre la relativa documentazione: javadoc Esempio0.java Produce una serie di file HTML Si consulti la documentazione di javadoc per i dettagli. 16 4

ADT A simple Counter public class SimpleCounter private int val; public void reset() val= 0; public void inc() val++; public int getvalue() return val; Il campo val è privato:può essere acceduto solo dalle operazioni definite nella medesima classe (reset, inc, getvalue), e da nessun altro. Si garantisce l incapsulamento. Dati Operazioni Uso di oggetti Ad esempio, se c è un Counter, un oggetto cliente potrà scrivere: c.reset(); c.inc(); c.inc(); int x = c.getvalue(); System.out.println( Il contatore vale +x); 17 19 Creazione di oggetti Problema Per creare un oggetto: prima si definisce un riferimento, il cui tipo è il nome della classe che fa da modello poi si crea dinamicamente l'oggetto tramite l'operatore new (simile a malloc) Esempio: Contatore c; // def. del riferimento c = new Contatore(); // creazione oggetto Scrivere un applicazione Java che sfrutti l ADT Contatore. L applicazione deve: Creare un nuovo contatore e inizializzarlo Incrementare il contatore e visualizzare, ogni volta, il valore contenuto al suo interno. Continuare a incrementarlo finché non raggiunge lo stato di errore Terminare 18 20 5

Problema: Un Contatore in Java Cosa può essere salvato del precedente progetto in C? 1. Cos è un contatore 2. Quali sono le operazioni relative ad un contatore 3. Rappresentazione interna del contatore 4. Interfaccia del contatore 5. Implementazione del contatore Si può ancora parlare di ADT? Quali sono le maggiori differenze fra C e Java? 21 ADT Contatore 3. Rappresentazione interna dell ADT Contatore Il contatore in C: Il contatore in Java: typedef struct Contatore unsigned int valore; unsigned int valore_max; unsigned int stato; Una struct del C equivale ad un class Java (non è vero!!!) public class Contatore private int valore; private int valore_max; private boolean errore; 23 ADT Contatore 1. Cos è un contatore Un contatore è un oggetto che ha: un valore attuale, un valore massimo di conteggio, uno stato interno che indica eventuali condizioni d errore Il valore massimo è selezionabile dall utente. Se si tenta di superarlo, viene modificato lo stato interno, che può essere letto mediante una funzione specifica 2. Operazioni relative ad un contatore void setmaxval(int valore) void azzera() void incrementa() void visualizza() int leggi() boolean iserror() 22 ADT Contatore 4. Interfaccia dell ADT Contatore public class Contatore public void setmaxval(int val); public void azzera(); public void incrementa(); public void visualizza(); public int leggi(); public boolean iserror(); Le operazioni diventano metodi di classe e parte integrante dell ADT Contatore 24 6

ADT Contatore ADT Contatore (2) 5. Implementazione dell ADT Contatore Implementazione dell ADT Contatore Una struttura C non equivale ad una classe Java Il costrutto class è più completo Maggiore capacità espressiva e più intuitivo Incapsulamento Realizza veramente un ADT Contatore int valore int valore_max boolean errore void setmaxval(int valore) void azzera() void incrementa() void visualizza() int leggi() boolean iserror() 25 public class Contatore public void incrementa() if(valore>=valore_max) errore=true; else valore++; public void visualizza() if(!iserror())system.out.println( Valore= +valore); else System.out.println( Errore: val. max raggiunto. ); public int leggi() return valore; ; // Fine Contatore 27 ADT Contatore (1) Soluzione Implementazione dell ADT Contatore // Contatore.java public class Contatore private int valore; private int valore_max; private boolean errore; public void setmaxval(int val) if(val<=0) errore=true; else valore_max = val; public void azzera() valore=0; valore_max=0; errore=false; public boolean iserror() return errore; 26 // ApplContatore.java public class ApplContatore public static void main(string[] argv) int i=0; Contatore cont=new Contatore(); cont.azzera(); cont.setmaxval(10); while(!cont.iserror()) cont.visualizza(); cont.incrementa(); cont.visualizza(); // Fine main() // Fine ApplContatore 28 7

Javadoc. Documentazione indispensabile per programmare. Per ogni classe spiega a cosa serve, come si usa e quali metodi fornisce. Sul web http://java.sun.com/javase/6/docs/api/ In laboratorio C:\programmi\java\jdk1.5.0.1\docs 29 8