17
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); } } Autore Flavio Cerini 1 <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>

Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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); } }

Autore Flavio Cerini 1

<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>

Page 2: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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); } }

Autore Fl

<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 Serverremoto-- </APPLET> </BODY> </HTML>

avio Cerini 2

Page 3: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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); } }

6)

<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); } }

Autore

<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 unServer remoto-- </APPLET> </BODY> </HTML>

Flavio Cerini 3

Page 4: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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) } }

8)

<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

Page 5: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 6: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

<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

Page 7: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 8: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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>

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++)); } }

15

Autore Flavio Cerini 8

Page 9: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

<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)

Autore Flavio Cerini 9

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(); } }

Page 10: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 11: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 12: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 13: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

} //....... //....... } 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

Page 14: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 15: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 16: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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

Page 17: Programmazione Java (Applicazioni e Applet ) · Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della

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