Programmazione Java
(Applicazioni e Applet )
Prof. Flavio Cerini
Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della cartella \bin nel PATH si possono provare i seguenti
programmi funzionanti.
•
•
•
•
•
Creare una cartella di nome java.
All’interno della cartella scrivere con un editor ( Notepad opp Editplus) i programmi sottoelencati ( file.java)
Dal prompt del DOS si compila il file java . es C:\java> javac file.java ; si ottiene così un bytecode (file.class)
Dal prompt del DOS si interpreta il file.class; es. C:\java\java file.class
Il nome del file deve essere uguale a quello della classe
1)
public class CiaoMondo{
public static void main(String[] args)
{
System.out.println("Ciao Mondo!!!");
}
}
2)
class primo
{
public static void main(String[] args)
{
System.out.println("Ciao come va il primo programma Java?");
}
}
Applet
3)
import java.awt.*;
import java.applet.*;
public class appletciao extends Applet{
public void paint(Graphics g){
g.drawString("Ciao da Applet !!!",20,20);
}
}
<HTML>
<HEAD>
<TITLE> Pagina con Applet Ciao</TITLE>
</HEAD>
<BODY>
!--Invece di APPLET si può usare OBJECT e si possono evitare le virgolette -<APPLET CODE ="appletciao.class" WIDTH = 200 HEIGHT = 100
!--CODEBASE = "http://Nome_Server/Cartella_Contenente_Applet" -- >
!--Aggiungere quanto commentato nella riga precedente nel caso l'Applet sia su di un Server remoto-!--ovviamente la Cartella_Contenente_Applet deve essere nella cartella del Server es. Htdocs -</APPLET>
</BODY>
</HTML>
Autore Flavio
Cerini
1
4)
//importo la classe Graphics
import java.awt.Graphics;
public class linea extends java.applet.Applet{
public void paint(Graphics g){
//disegno la linea
g.drawLine(60,100,130,200);
}
}
<HTML>
<HEAD>
<TITLE> Pagina con Applet Linea</TITLE>
</HEAD>
<BODY>
<APPLET CODE ="linea.class" WIDTH = 300 HEIGHT = 300
!--CODEBASE = "http://Nome_Server/Cartella_Contenente_Applet" -- >
!--Aggiungere quanto commentato nella riga precedente nel caso l'Applet sia su di un
Server remoto-</APPLET>
</BODY>
</HTML>
5)
import java.awt.Graphics;
public class triangolo extends java.applet.Applet{
public void paint(Graphics g){
//disegno la linea
g.drawLine(60,100,130,200);
g.drawLine(130,200,200,100);
g.drawLine(200,100,60,100);
}
}
<HTML>
<HEAD>
<TITLE> Pagina con Applet Triangolo </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="triangolo.class" WIDTH = 300 HEIGHT = 300
!--CODEBASE = "http://Nome_Server/Cartella_Contenente_Applet" -- >
!--Aggiungere quanto commentato nella riga precedente nel caso l'Applet sia su di un Server
remoto-</APPLET>
</BODY>
</HTML>
Autore Flavio Cerini
2
6)
import java.awt.Graphics;
public class rettangoli extends java.applet.Applet{
public void paint(Graphics g){
g.drawRect(30,30,80,80);
g.fillRect(140,30,80,80);
g.drawRoundRect(30,140,80,80,10,10);
g.fillRoundRect(140,140,80,80,30,30);
}
}
<HTML>
<HEAD>
<TITLE> Pagina con Applet Rettangoli </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="rettangoli.class" WIDTH = 300 HEIGHT = 300
!--CODEBASE = "http://Nome_Server/Cartella_Contenente_Applet" -- >
!--Aggiungere quanto commentato nella riga precedente nel caso l'Applet sia su di un
Server remoto-</APPLET>
</BODY>
</HTML>
7)
//importo la classe Graphics
import java.awt.*;
public class font extends java.applet.Applet{
public void paint(Graphics g){
Font f=new Font("TimesRoman",Font.BOLD,26);
g.setFont(f);
g.drawString("Ecco la mia stringa",100,100);
}
}
<HTML>
<HEAD>
<TITLE> Font </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="font.class" WIDTH = 400 HEIGHT = 200
!--CODEBASE = "http://Nome_Server/Cartella_Contenente_Applet" -- >
!--Aggiungere quanto commentato nella riga precedente nel caso l'Applet sia su di un
Server remoto-</APPLET>
</BODY>
</HTML>
Autore Flavio Cerini
3
8)
import java.awt.*;
public class colore extends java.applet.Applet{
public void paint(Graphics g){
setBackground(new Color(150,150,140));
//g.setColor(Color.white);
//g.drawString("scritta in bianco su sfondo grigio",60,60);
g.setColor(Color.yellow);
g.drawString("scritta in giallo su sfondo grigio",60,60)
}
}
<HTML>
<HEAD>
<TITLE> COLORE </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="colore.class" WIDTH = 300 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
9)
import java.awt.*;
import java.applet.*;
public class bottone extends Applet
{
// creo il bottone con la sua etichetta
Button b=new Button("Il mio primo bottone");
public void init()
{
//aggiuno al pannello il bottone prima creato
add(b);
}
}
<HTML>
<HEAD>
<TITLE> BOTTONE </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="bottone.class" WIDTH = 400 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
Autore Flavio Cerini
4
10)
import java.awt.*;
import java.applet.*;
public class textfield extends Applet
{
// creo un campo di testo di lunghezza 40 caratteri
TextField t = new TextField("Inizializzazione",40);
String s = new String();
public void init()
{
//aggiuno il TextField al pannello dell'Applet
add(t);
}
}
<HTML>
<HEAD>
<TITLE> Applet Textfield </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="textfield.class" WIDTH = 400 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
11)
import java.awt.*;
import java.applet.*;
public class textarea extends Applet
{
// creo una Textarea di 4 righe e 20 colonne
TextArea prima = new TextArea("Contenuto dell'Area 1",4, 20);
// creo una Textarea di 5 righe e 30 colonne
TextArea seconda = new TextArea("Contenuto dell'Area 2",5, 30);
String s = new String();
public void init()
{
//le aggiungo al pannello dell'Applet
add(prima);
add(seconda);
}
}
Autore Flavio Cerini
5
<HTML>
<HEAD>
<TITLE> Applet TextArea </TITLE>
</HEAD>
<BODY>
<APPLET CODE ="textarea.class" WIDTH = 400 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
12)
import java.awt.*;
import java.applet.*;
public class checkbox extends Applet
{
Label l = new Label("Che lingue conosci?");
Checkbox c1 = new Checkbox("Inglese");
Checkbox c2 = new Checkbox("Francese");
Checkbox c3 = new Checkbox("Tedesco");
public void init()
{
//aggiuno al pannello dell'Applet
add(l);
add(c1);
add(c2);
add(c3);
}
}
<HTML>
<HEAD>
<TITLE> Applet Checkbox</TITLE>
</HEAD>
<BODY>
<APPLET CODE ="checkbox.class" WIDTH = 400 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
Autore Flavio Cerini
6
13)
import java.awt.*;
import java.applet.*;
public class liste_sc extends Applet
{
String[] sport = {"Calcio", "Ginnastica", "Corsa",
"Tennis","Nuoto","Basket","Pallavolo","Sci"};
String[] preferiti = {"Sport", "Documentari", "Serial", "Musica",
"Informazione","Varietà", "Film"};
// Visualizza quattro voci, permette la selezione multipla
List l = new List(4, true);
Choice c = new Choice();
Label l1= new Label("Che sport pratichi?");
Label l2= new Label("Che programmi TV preferisci?");
public void init()
{
//Inserisco le voci nel componente List
for (int i = 0; i<8; i++)
l.addItem(sport[i]);
//Inserisco le voci del componente Choice
for (int i=0 ;i<7 ;i++ )
c.addItem(preferiti[i]);
add(l1);
add(l);
add(l2);
add(c);
}
}
<HTML>
<HEAD>
<TITLE> Applet Liste a scorrimento</TITLE>
</HEAD>
<BODY>
<APPLET CODE ="liste_sc.class" WIDTH = 400 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
Autore Flavio Cerini
7
14)
//importo la classe Graphics
import java.awt.*;
import java.applet.*;
public class bottoni extends Applet
{
public void init()
{
int i=0;
// decido il tipo di Layout
setLayout(new BorderLayout());
//Uso le costanti North, South, East e West per sistemare i bottoni
add("North", new Button ("Bottone num. "+i++));
add("South", new Button ("Bottone num. "+i++));
add("East", new Button ("Bottone num. "+i++));
add("West", new Button ("Bottone num. "+i++));
add("Center", new Button ("Bottone num. "+i++));
}
}
<HTML>
<HEAD>
<TITLE> Applet Bottoni</TITLE>
</HEAD>
<BODY>
<APPLET CODE ="bottoni.class" WIDTH = 400 HEIGHT = 200
</APPLET>
</BODY>
</HTML>
15
import java.awt.*;
import java.applet.*;
public class bottoni extends Applet
{
public void init()
{
int i=0;
// decido il tipo di Layout
setLayout(new FlowLayout());
//Uso le costanti North, South, East e West per sistemare i bottoni
add(new Button ("Bottone num. "+i++));
add(new Button ("Bottone num. "+i++));
add(new Button ("Bottone num. "+i++));
add(new Button ("Bottone num. "+i++));
add(new Button ("Bottone num. "+i++));
}
}
Autore Flavio Cerini
8
<HTML>
<HEAD>
<TITLE> Applet Bottoni</TITLE>
</HEAD>
<BODY>
<APPLET CODE ="bottoni.class" WIDTH = 400 HEIGHT = 200>
</APPLET>
</BODY>
</HTML>
16) Programma che legge un file ( sorgente.txt) e lo copia in un altro file ( destinazione.txt )
import java.io.*;
public class readfile
{
public static void main(String[] args) throws IOException {
File input = new File("sorgente.txt");
File output = new File("destinazione.txt");
//apre stream di input e di output
FileReader in = new FileReader(input);
//stream in input
FileWriter out = new FileWriter(output);
//stream di output
int carattere;
//legge il carattere uno alla volta e lo scrive sull'altro stream
while ((carattere = in.read()) != -1)
out.write(carattere);
in.close();
out.close();
}
}
17)
import java.io.*;
public class streamfile
{
public static void main(String[] args) throws IOException {
File input = new File("sorgente.txt");
File output = new File("destinazione.txt");
//apre stream di input e di output
FileInputStream in = new FileInputStream(input);
//stream in input
FileOutputStream out = new FileOutputStream(output);
//stream di output
int carattere;
//legge il carattere uno alla volta e lo scrive sull'altro stream
while ((carattere = in.read()) != -1)
out.write(carattere);
in.close();
out.close();
}
}
Autore Flavio Cerini
9
18) Programma che legge da tastiera e scrive sul monitor
import java.io.*;
public class read_tast
{
public static void main(String[] arg) throws Exception
{
InputStreamReader Ireader;
BufferedReader buffer;
String inputLine;
Ireader=new InputStreamReader(System.in);
buffer =new BufferedReader(Ireader);
inputLine=buffer.readLine();
System.out.println(inputLine);
}
}
19)
Programma che visualizza il risultato di vari operatori
class operatori
{
public static void main(String[ ] args)
{
int y = 16;
int Y = 8;
float a = 4.3f;
float c = 1.5f;
short x = 12;
System.out.println("x=" + x +", y=" + y);
System.out.println("x+y=" + (x +y));
System.out.println("x-y=" + (x -y));
System.out.println("x/y=" + (x/y));
System.out.println("x%y=" + (x%y));
System.out.println("a=" + a +", c=" + c);
System.out.println("valore di a/c=" + (a/c));
System.out.println("y =" + y +", Y =" + Y);
System.out.println("La condizione y>Y risulta =" + (y>Y));
}
}
Autore Flavio Cerini
10
20)
Programma che mette in evidenza le caratteristiche “OOP” del linguaggio Java
class valore
{
private int varIst=0;
valore() {
System.out.println("Sono nel costruttore della classe valore");
}
public void incrementa()
{
varIst++;
}
public void stampa()
{
System.out.println("Il valore della variabile di istanza: " +varIst);
}
}
public class test
{
public static void main(String[ ] args)
{
valore mioOggetto=new valore();
mioOggetto.incrementa();
mioOggetto.stampa();
mioOggetto.incrementa();
mioOggetto.stampa();
}
}
21)
public class sommatoria
{
private int somma=0;
sommatoria aggiungi(int elemento)
{ somma+=elemento;
return this;
}
void stampa()
{
System.out.println(this.somma);
}
public static void main(String[] args)
{
sommatoria s = new sommatoria();
s.aggiungi(2).aggiungi(6).aggiungi(4).stampa();
}
}
Autore Flavio Cerini
11
22) Programma Java ad oggetti. Viene definita una classe Automobile e due sottoclassi: Utilitaria e AutoDaCorsa
/* Programma Java con classe automobile e due sottoclassi autoDacorsa ed
utilitaria. Le sottoclassi ereditano automaticamente le variabili di istanza
e i metodi della superclasseche ereditano dalla principale variabili e metodi.
Si può notare che il metodo setVelocità è invocabile dagli oggetti ferrari e cinquecento
ovviamente con valori distinti. Il metodo temperaturaAlta delle due classi (utilitaria e
autoDaCorsa) deve essere diverso. Per ottenere il diverso comportamento è stato riscritto
il metodo nella definizione delle due sottoclassi. La Segnatura del metodo ( tipo di ritorno
e la lista dei parametri compreso tipo e ordine ) è rimasta inalterata, è variato solo il
comportamento. La tecnica che consente di modificare il comportamento di un metodo rispetto
alla classe base si chiama OVERRIDING ed è uno dei meccanismi più potenti della programmazione
ad oggetti (OOP). Diverso è il concetto per il metodo getTenutaStrada che viene chiamato anche
con diversi parametri. La riscrittura di un metodo della classe base in una clase derivata
modificando la segnatura del metodo stesso si chiama OVERLOADING.*/
class automobile
// Classe auto generica
{
int velocita=0;
// variabili di istanza
float tenutaStrada=0f;
int temperaturaMax=100;
void setVelocita(int velocita) //metodo imposta velocità
{
this.velocita=velocita;
}
int getVelocita()
//metodo velocità
{
System.out.println(this.velocita);
return this.velocita;
}
void getTenutaStrada()
//metodo tenutastrada
{
System.out.println("metodo getTenutaStrada di automobile");
}
void temperaturaAlta(int temperatura) //metodo temperatura
{
if (temperatura > temperaturaMax)
System.out.println("attenzione temperatura alta");
}
}
class autoDaCorsa extends automobile // Classe auto da corsa ( extends fa ereditare )
{
void temperaturaAlta(int temperatura) // metodo temperatura
{
if (temperatura > temperaturaMax)
{
System.out.println("Controllo strumentazione");
System.out.println("Fermata ai box");
}
}
void getTenutaStrada() // metodo tenutastrada
{
float coeff_asfalto = 0.001f;
this.tenutaStrada=coeff_asfalto*this.velocita;
System.out.println(this.tenutaStrada);
Autore Flavio Cerini
12
}
//.......
//.......
}
class utilitaria extends automobile // Classe utilitaria (extends fa ereditare )
{
void temperaturaAlta(int temperatura) // metodo temperatura
{
if (temperatura > temperaturaMax)
{
System.out.println("Ferma alla prima sosta");
System.out.println("Controllo temperatura acqua radiatore");
}
}
void getTenutaStrada(int mantoStradale) // metodo tenutastrada
{
float coeff_terra = 0.034f;
float coeff_asfalto=0.03f;
if (mantoStradale ==0)
{
this.tenutaStrada=coeff_asfalto*this.velocita;
}
else
{
this.tenutaStrada=coeff_terra*this.velocita;
}
System.out.println(this.tenutaStrada);
}
//.......
//.......
}
public class auto // classe auto che contiene il metodo main
{
public static void main(String[ ] args)
{
autoDaCorsa ferrari= new autoDaCorsa();
utilitaria cinquecento = new utilitaria();
ferrari.setVelocita(200);
cinquecento.setVelocita(100);
ferrari.getTenutaStrada();
cinquecento.getTenutaStrada(1);
ferrari.getVelocita();
cinquecento.getVelocita();
ferrari.temperaturaAlta(123);
cinquecento.temperaturaAlta(119);
}
}
23) Stesso programma precedente con evidenziata caratteristica del Polimorfismo
/* Programma Java con classe automobile e due sottoclassi autoDacorsa ed
utilitaria. Le sottoclassi ereditano automaticamente le variabili di istanza
e i metodi della superclasseche ereditano dalla principale variabili e metodi.*/
Autore Flavio Cerini
13
class automobile
// Classe auto generica
{
int velocita=0;
// variabili di istanza
float tenutaStrada=0f;
int temperaturaMax=100;
void setVelocita(int velocita) //metodo imposta velocità
{
this.velocita=velocita;
}
int getVelocita()
//metodo velocità
{
System.out.println(this.velocita);
return this.velocita;
}
void getTenutaStrada()
//metodo tenutastrada
{
System.out.println("metodo getTenutaStrada di automobile");
}
void temperaturaAlta(int temperatura) //metodo temperatura
{
if (temperatura > temperaturaMax)
System.out.println("attenzione temperatura alta");
}
}
class autoDaCorsa extends automobile // Classe auto da corsa ( extends fa ereditare )
{
void temperaturaAlta(int temperatura) // metodo temperatura
{
if (temperatura > temperaturaMax)
{
System.out.println("Controllo strumentazione");
System.out.println("Fermata ai box");
}
}
void getTenutaStrada() // metodo tenutastrada
{
float coeff_asfalto = 0.001f;
this.tenutaStrada=coeff_asfalto*this.velocita;
System.out.println(this.tenutaStrada);
}
//.......
//.......
}
class utilitaria extends automobile // Classe utilitaria (extends fa ereditare )
{
void temperaturaAlta(int temperatura) // metodo temperatura
{
if (temperatura > temperaturaMax)
{
System.out.println("Ferma alla prima sosta");
System.out.println("Controllo temperatura acqua radiatore");
}
}
Autore Flavio Cerini
14
void getTenutaStrada(int mantoStradale) // metodo tenutastrada
{
float coeff_terra = 0.034f;
float coeff_asfalto=0.03f;
if (mantoStradale ==0)
{
this.tenutaStrada=coeff_asfalto*this.velocita;
}
else
{
this.tenutaStrada=coeff_terra*this.velocita;
}
System.out.println(this.tenutaStrada);
}
//.......
//.......
}
public class auto_pol // classe auto che contiene il metodo main
{
public static void main(String[] args)
{
//Math.random() restituisce un double tra 0 e 1.0
automobile autovettura;
// definisco autovettura appartenente alla classe automobile
if((Math.random()) > 0.50 )
{
// autovettura diventa una auto da corsa ( Passaggio fondamentale per il
polimorfismo )
autovettura = new autoDaCorsa();
System.out.println(" Auto da corsa ");
}
else
{
// autovettura diventa una utilitaria
autovettura = new utilitaria();
System.out.println(" Utilitaria ");
}
// richiamo ora il metodo sull'oggetto non sapendo a che classe appartenga
// notare che il risultato è giusto !
autovettura.temperaturaAlta(126); // notare che la scelta viene fatta a Run Time
}
}
24) Stesso programma con vettore di oggetti
/* Programma Java con classe automobile e due sottoclassi autoDaCorsa ed
utilitaria. Le sottoclassi ereditano automaticamente le variabili di istanza
e i metodi della superclasseche ereditano dalla principale variabili e metodi.*/
Autore Flavio Cerini
15
class automobile
// Classe auto generica
{
int velocita=0;
// variabili di istanza
float tenutaStrada=0f;
int temperaturaMax=100;
void setVelocita(int velocita) //metodo imposta velocità
{
this.velocita=velocita;
}
int getVelocita()
//metodo velocità
{
System.out.println(this.velocita);
return this.velocita;
}
void getTenutaStrada()
//metodo tenutastrada
{
System.out.println("metodo getTenutaStrada di automobile");
}
void temperaturaAlta(int temperatura) //metodo temperatura
{
if (temperatura > temperaturaMax)
System.out.println("attenzione temperatura alta");
}
}
class autoDaCorsa extends automobile // Classe auto da corsa ( extends fa ereditare )
{
void temperaturaAlta(int temperatura) // metodo temperatura
{
if (temperatura > temperaturaMax)
{
System.out.println("Controllo strumentazione");
System.out.println("Fermata ai box");
}
}
void getTenutaStrada() // metodo tenutastrada
{
float coeff_asfalto = 0.001f;
this.tenutaStrada=coeff_asfalto*this.velocita;
System.out.println(this.tenutaStrada);
}
//.......
//.......
}
class utilitaria extends automobile // Classe utilitaria (extends fa ereditare )
{
void temperaturaAlta(int temperatura) // metodo temperatura
{
if (temperatura > temperaturaMax)
{
System.out.println("Ferma alla prima sosta");
System.out.println("Controllo temperatura acqua radiatore");
}
}
Autore Flavio Cerini
16
void getTenutaStrada(int mantoStradale) // metodo tenutastrada
{
float coeff_terra = 0.034f;
float coeff_asfalto=0.03f;
if (mantoStradale ==0)
{
this.tenutaStrada=coeff_asfalto*this.velocita;
}
else
{
this.tenutaStrada=coeff_terra*this.velocita;
}
System.out.println(this.tenutaStrada);
}
//.......
//.......
}
public class vettauto // classe auto che contiene il metodo main
{
public static void main(String[ ] args)
{
//Math.random() restituisce un double tra 0 e 1.0
//dichiaro il vettore di oggetti automobile
automobile[ ] vetture = new automobile[5];
// costruzione del vettore di oggetti eterogenei
for(int i=0;i<5;i++)
{
if(Math.random()>0.5)
{
vetture[i] = new autoDaCorsa();
}
else
{
vetture[i] =new utilitaria();
}
}
//Invocazione dei metodi sugli oggetti del vettore
for(int i=0; i<5; i++)
{
vetture[i].temperaturaAlta(200);
}
}
}
Autore Flavio Cerini
17