Le command line di Java Esercitazioni di Sistemi Operativi III Lezione n. 2 Esempio 1 - Punti e Segmenti Punto PuntoColorato 26/02/2001 2 0..n Segmento Le tre classi appartengono al package geometrie. I file sorgenti devono stare nella directory scr/geometrie. 2 Compilare un file Java ζ Si usa il comando javac ζ Per usare la versione 1.3 di Java: /usr/local/j2se/bin/javac (sun) C:\…\JBuilder4\java\bin\javac (pc) ζ Compilazione della classe Punto: /usr/local/j2se/bin/javac Punto.java 26/02/2001 3 Opzioni di javac ζ -classpath <classpath> specifica dove tovare i class file ζ -sourcepath <sourcepath> specifica dove trovare i file sorgente ζ -d <directory> specifica in quale directory mettere i bytecode prodotti ζ -verbose stampa informazioni aggiuntive durante la compilazione 26/02/2001 4 Esempio 1 - classe Punto /usr/local/j2se/bin/javac -verbose -sourcepath src path dei file sorgenti necessari -d classes src/geometrie/Punto.java directory di destinazione dei file .class prodotti nome del file da compilare 26/02/2001 5 Esempio 1 - classe Segmento ζ Ha bisogno di conoscere la classe Punto > javac -d classes -sourcepath src src/geometrie/Segmento.java > javac -d classes -classpath classes src/geometrie/Segmento.java 26/02/2001 6 Eseguire un programma Java ζ Si usa il comando java ζ Per usare la versione 1.3 di Java /usr/local/j2se/bin/java (sun) C:\…\JBuilder4\java\bin\java (pc) ζ Per eseguire un bytecode, la classe deve aver definito il metodo main 26/02/2001 7 Opzioni del comando java ζ Sintassi: java [-opzioni] classe [-argomenti] ζ Opzioni: -classpath <classpath> -verbose -version -help 26/02/2001 8 Uso degli argomenti - 1 Sono delle stringhe passate al programma in fase di esecuzione ζ Si passano tramite la riga di comando, dopo il nome del file ζ > java geometrie.Segmento AB ζ In questo modo vengono passati automaticamente al programma come parametri del metodo main: main (String[] argomenti){ … } 26/02/2001 9 Uso degli argomenti - 2 public class Segmento { // ……… publc static void main( String argomenti[] ){ String nome = argomenti[0]; Segmento s = new Segmento(nome); // ecc… } } 26/02/2001 10 import java.io.*; class SimpleReader { public static void main (String args[]) throws IOException { IO di base boolean error; float f=0; int i=0; DataInputStream s = ζ new DataInputStream(System.in); System.out.println("Dammi una stringa"); String str=s.readLine(); System.out.println("Hai scritto "+str); do { System.out.println("Dammi un float"); try{ error=false; f=Float.parseFloat(s.readLine()); } catch (NumberFormatException e) { error=true; System.out.println("Input non valido"); } } while (error); System.out.println("Hai scritto "+f); 26/02/2001 11 IO di base System.out.println("Dammi un intero"); ζ i=Integer.parseInt(s.readLine()); System.out.println("Hai scritto "+i); System.out.println("Dammi un byte per finire"); byte b=s.readByte(); System.out.println("Hai scritto il carattere"+b); } } 26/02/2001 12 Esercizio 2.a ζ Implementare il seguente sistema di classi: 26/02/2001 13 Esercizio 2.b Scrivere un programma che descriva un sistema per il rilevamento e il rilascio delle multe per eccesso di velocità in autostrada. ζ Deve comprendere le classi Multa, Automezzo, Conducente, Casello, … ζ Possibili comportamenti sono i seguenti: ζ l’automezzo entra al casello di entrata ψ il casello di uscita controlla il tempo di percorrenza ed, eventualmente, emette una multa ψ il conducente paga la multa ψ 26/02/2001 14