Sei sulla pagina 1di 14

Esercizi

su Java

Esercizio 1 Si realizzi una classe Interi che rappresenta la tipologia dei numeri interi con attributo valore (intero), che definisce un metodo costruttore a un argomento e il metodo void stampa() che stampa il campo valore. Si realizzi poi una classe InteriPari che rappresenta la tipologia degli interi pari, derivata dalla precedente. Il costruttore di tale classe deve verificare che il valore interno passato sia pari; se non lo assegna valore 0 al campo valore. Si realizzi poi una funzione main in una classe Prova che: - Inserisca in un vettore di tipo Interi V[] = new Interi[n], dove n un numero intero, i primi n interi; - per ciascun valore l'oggetto creato deve essere di tipo Interi o InteriPari a seconda della caratteristica del numero; - infine,accedendo al vettore V, ne stampi i valori chiamando stampa().
Federico Morini federico.morini@student.unife.it

Soluzione esercizio 1: Contenuto del file Interi.java public class Interi{ protected int valore; public Interi (int v){ this.valore=v; } public void stampa(){ System.out.println("valore: "+this.valore); } }

Federico Morini

federico.morini@student.unife.it

Soluzione esercizio 1: Contenuto del file InteriPari.java public class InteriPari extends Interi{ public InteriPari (int v) { super(v); if ((valore%2)>0){ valore=0; } } }

Federico Morini

federico.morini@student.unife.it

Soluzione esercizio 1: Contenuto del file Prova.java public class Prova { public static void main(String args[]) { int n = 20; Interi V[] = new Interi[n] ; for (int i=0;i<n;i++) { if ((i%2)!=0){ V[i]=new InteriPari(i); } else{ V[i]=new Interi(i); } } for (int i=0;i<n;i++){ V[i].stampa(); } } }
Federico Morini federico.morini@student.unife.it

Esercizi
su Java

Esercizio 2 Si realizzi una classe astratta Libri che rappresenta la tipologia dei libri, con attributi titolo (stringa), anno (intero), costo (intero) e che definisce il metodo: stessocosto(Object X) che restituisce un booleano. Si realizzi poi un componente software LibriCat, che deriva da Libri e che codifica un metodo costruttore e il metodo stessocosto come segue: stessocosto(Object X), ricevendo il riferimento a un oggetto X, stabilisce se ha lo stesso attributo costo di quello su cui invocato il metodo stesso. Si realizzi poi una funzione main in una classe Prova che: - dichiari un oggetto l1, istanza della classe LibriCat, con attributi "Nome della Rosa", 1986, 20, e un oggetto l2, istanza della classe LibriCat, con attributi "Il paradiso degli orchi", 1990, 20; - chiamando il metodo stessocosto sull'oggetto l1 verifichi se ha lo stesso costo di l2 e scriva su un file binario (costo.dat) il boolean ottenuto. Si rilegga poi il boolean da file e lo si visualizzi a video.
Federico Morini federico.morini@student.unife.it

Soluzione esercizio 2: Contenuto del file Libri.java public abstract class Libri { protected String titolo; protected int anno; protected int costo; public abstract boolean stessocosto(Object X); }

Federico Morini

federico.morini@student.unife.it

Soluzione esercizio 2: Contenuto del file LibriCat.java public class LibriCat extends Libri { public LibriCat (String t, int a, int c) { titolo=t; anno=a; costo=c; } public boolean stessocosto(Object X){ return (this.costo==((LibriCat)X).costo); } }

Federico Morini

federico.morini@student.unife.it

Soluzione esercizio 2: Contenuto del file Prova.java public class Prova { public static void main(String args[]) { LibriCat l1 = new LibriCat("Nome della Rosa",1986,10000); LibriCat l2 = new LibriCat("Il paradiso degli orchi",1990,10000); try { FileOutputStream fs = new FileOutputStream("tempo.dat"); DataOutputStream os = new DataOutputStream(fs); os.writeBoolean(l1.stessocosto(l2)); os.close(); FileInputStream fin = new FileInputStream("tempo.dat"); DataInputStream is = new DataInputStream(fin); boolean b;
Federico Morini federico.morini@student.unife.it

Soluzione esercizio 2: Contenuto del file Prova.java b = is.readBoolean(); is.close(); System.out.println("boolean letto: " + b ); } catch (IOException e) { System.out.println(e); } } }

Federico Morini

federico.morini@student.unife.it

Esercizi
su Java

Esercizio 3 Si realizzi un componente interfaccia Documenti che rappresenta la tipologia dei documenti. In tale interfaccia si definisce il metodo: public boolean uguale(Object X) che restituisce un booleano. Si realizzi poi una classe Libro che implementa l'interfaccia precedente. Ciascun Libro ha un soggetto (stringa), e un costo (intero). Il metodo uguale restituisce vero se i due oggetti (X e quello su cui invocato) hanno lo stesso soggetto, falso altrimenti (usando il metodo equals). Si realizzi poi una funzione main in una classe Prova che: - dichiari un oggetto l1, istanza della classe Libro, con attributi "storia", costo 35, un oggetto l2, istanza della classe Libro, con attributi "letteratura", costo 17 e un oggetto l3, istanza della classe Libro, con attributi "storia", costo 10. - chiamando il metodo uguale verifichi se l1 e l2 sono uguali e se l1 e l3 sono uguali e scriva su un file binario (res.dat) i boolean ottenuti. Si rileggano poi i boolean da file e li si visualizzi a video.
Federico Morini federico.morini@student.unife.it

Soluzione esercizio 3: Contenuto del file Documenti.java public interface Documenti{ public boolean uguale(Object x); }

Federico Morini

federico.morini@student.unife.it

Soluzione esercizio 3: Contenuto del file Libro.java public class Libro implements Documenti{ private String soggetto; private int costo; public Libro(String soggetto, int costo){ this.soggetto=soggetto; this.costo=costo; } public boolean uguale(Object x){ return (this.soggetto.equals(((Libro)x).soggetto)); } }

Federico Morini

federico.morini@student.unife.it

Soluzione esercizio 3: Contenuto del file Prova.java public class Prova{ public static void main(String[] args){ Libro l1=new Libro("storia", 35); Libro l2=new Libro("letteratura", 17); Libro l3=new Libro("storia", 10); try{ DataOutputStream dos=new DataOutputStream(new FileOutputStream("res.dat")); dos.writeBoolean(l1.uguale(l2)); dos.writeBoolean(l1.uguale(l3)); dos.close(); DataInputStream dis=new DataInputStream(new FileInputStream("res.dat"));
Federico Morini federico.morini@student.unife.it

Soluzione esercizio 3: Contenuto del file Prova.java System.out.println(dis.readBoolean()); System.out.println(dis.readBoolean()); dis.close(); } catch(Exception e){ System.out.println("errore "+e); } } }

Federico Morini

federico.morini@student.unife.it