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