Programmazione Java (Applicazioni e Applet )



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

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

Corso sul linguaggio Java

Esercizi della lezione 5 di Java

Struttura di un programma Java

Algoritmi di Ricerca. Esempi di programmi Java

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

Gestione delle Eccezioni

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:

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

Java: Compilatore e Interprete

Java: la libreria delle classi

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

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

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

Programmare in Java. Olga Scotti

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

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

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

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

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

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

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Concetto di Funzione e Procedura METODI in Java

Programmazione in Java Parte I: Fondamenti

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

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

Appunti di Informatica 1

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

Prova d Esame Compito A

Prova d Esame Compito B

20 - Input/Output su File

Definizione di classi con array di oggetti

Parola chiave extends

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM

Scrivere un programma in Java

Le variabili. Olga Scotti

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

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

INTRODUZIONE INTRODUZIONE JAVA JAVA

GESTIONE DEI PROCESSI

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

Eclipse. Avviare un progetto e compilare un semplice programma

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Cifratura simmetrica

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

Architettura Client-Server

Corso sul linguaggio Java

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Programmazione ad Oggetti: JAVA. Esercitazione

costruttori e distruttori

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

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

Corso di Reti di Calcolatori L-A

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Il linguaggio Java I file sequenziali

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Corso sul linguaggio Java

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

Parte II: Reti di calcolatori Lezione 10

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

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

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

Prova di Laboratorio di Programmazione

Funzioni in C. Violetta Lonati

Con il pulsante Start si introducono palline che rimbalzano in un area di disegno fino a che non è terminato il loro ciclo di vita (1000 movimenti).

4. Un ambiente di sviluppo per Java

Flussi, lettori e scrittori

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

Programmazione a Oggetti Lezione 10. Ereditarieta

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

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

Geom. Giofrè Vincenzo Pasquale Il manuale per la facoltà di ingegneria

Modulo 4: Ereditarietà, interfacce e clonazione

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

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

Programmazione Java: Interfacce grafiche (GUI)

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

3. La sintassi di Java

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

RMI Remote Method Invocation

Le command line di Java

Tale attività non è descritta in questa dispensa

10.4. La classe File e gli attributi di directory e file

Strumenti per la programmazione

Unità B3 Strutture di controllo

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Transcript:

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?"); 3) Applet import java.applet.*; public class appletciao extends Applet public void paint(graphics g) g.drawstring("ciao da Applet!!!",20,20); <TITLE> Pagina con Applet Ciao</TITLE>!--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 -- 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); <TITLE> Pagina con Applet Linea</TITLE> <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-- 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); <TITLE> Pagina con Applet Triangolo </TITLE> <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-- 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); <TITLE> Pagina con Applet Rettangoli </TITLE> <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-- 7) //importo la classe Graphics 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); <TITLE> Font </TITLE> <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-- Autore Flavio Cerini 3

8) 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) <TITLE> COLORE </TITLE> <APPLET CODE ="colore.class" WIDTH = 300 HEIGHT = 200> 9) 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); <TITLE> BOTTONE </TITLE> <APPLET CODE ="bottone.class" WIDTH = 400 HEIGHT = 200> Autore Flavio Cerini 4

10) 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); <TITLE> Applet Textfield </TITLE> <APPLET CODE ="textfield.class" WIDTH = 400 HEIGHT = 200> 11) 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

<TITLE> Applet TextArea </TITLE> <APPLET CODE ="textarea.class" WIDTH = 400 HEIGHT = 200> 12) 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); <TITLE> Applet Checkbox</TITLE> <APPLET CODE ="checkbox.class" WIDTH = 400 HEIGHT = 200> Autore Flavio Cerini 6

13) 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); <TITLE> Applet Liste a scorrimento</title> <APPLET CODE ="liste_sc.class" WIDTH = 400 HEIGHT = 200> Autore Flavio Cerini 7

14) //importo la classe Graphics 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++)); <TITLE> Applet Bottoni</TITLE> <APPLET CODE ="bottoni.class" WIDTH = 400 HEIGHT = 200 15 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

<TITLE> Applet Bottoni</TITLE> <APPLET CODE ="bottoni.class" WIDTH = 400 HEIGHT = 200> 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 System.out.println("attenzione temperatura alta"); class autodacorsa extends automobile // Classe auto da corsa ( extends fa ereditare ) void temperaturaalta(int temperatura) // metodo temperatura 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 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 System.out.println("attenzione temperatura alta"); class autodacorsa extends automobile // Classe auto da corsa ( extends fa ereditare ) void temperaturaalta(int temperatura) // metodo temperatura 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 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) polimorfismo ) //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 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 System.out.println("attenzione temperatura alta"); class autodacorsa extends automobile // Classe auto da corsa ( extends fa ereditare ) void temperaturaalta(int temperatura) // metodo temperatura 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 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) else //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(); 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