• Non ci sono risultati.

Esercizi della lezione 5 di Java

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizi della lezione 5 di Java"

Copied!
10
0
0

Testo completo

(1)

Esercizi della lezione 5 di Java

(2)

Create il tipo di dato Counter dell’Esercizio 1 come sottoclasse del tipo di dato SimpleCounter.

un valore attuale

un valore massimo di conteggio

uno stato interno che indica se si è verificato un errore. Il

valore massimo è selezionabile dall’utente alla costruzione. Se si tenta di superarlo, viene modificato lo stato del contatore per

memorizzare l’avvenuta condizione d’errore e le successive operazioni di modifica non devono avere effetto

Il contatore deve offrire i seguenti metodi: void inc(),void reset(),int getValue(),boolean isError()

Infine, scrivete un’applicazione Java che:

Crea e inizializza un nuovo Counter con valore massimo n

Incrementa il contatore per n+1 volte e visualizza, ogni volta, il valore attuale e lo stato interno (errato/corretto)

Terminare

Esercizio 5

Esercizio 1

Create un tipo di dato Counter che abbia:

(3)

public class SimpleCounter { private int valore;

public void inc(){

valore=valore+1;}

public int get(){

return(valore);}

public void reset(){

valore=0;}

}

Tipo di dato SimpleCounter

(4)

Soluzione Esercizio 5

public class Counter extends SimpleCounter{

/*la variabile valore non la dichiaro: è ereditata dalla superclasse

*Counter. Non posso però accedere ad essa poichè è privata

*semplicemente chiamandola. La posso però utilizzare invocando i metodi della classe Counter*/

private int valore_massimo;

private boolean errore=false;

//Costruttore

public ContEst(int vm){

/* Se non scrivo niente viene invocato il costruttore anonimo della

superclasse . Se invece voglio invocare un costruttore della superclasse con dei parametri scriverò così: super(val_iniz) */

valore_massimo=vm;

errore=false;}

(5)

//Metodo per incrementare il valore public void inc(){

if (errore) return;

/* per invocare la variabile valore nella superclasse poichè essa è privata, la invoco con il metodo get sull'oggetto corrente: this. */

if (this.get()==valore_massimo) {errore=true;}

// richiamo il metodo inc definito nella superclasse else super.inc(); }

//Metodo per resettare il valore public void reset(){

//richiamo il metodo reset definito nella superclasse super.reset();

errore=false;}

//Metodo per ottenere informazioni sullo stato interno public boolean isError(){

return errore;}

(6)

//Metodo main

public static void main(String[] args) { Counter c= new Counter(5);

for(int i=0; i<6; i++){

c.inc();

System.out.println("Valore del contatore: " + c.get());

System.out.println("Stato di errore: " + c.isError());

} }

}

(7)

//Metodo main

public static void main(String[] args) { SimpleCounter c= new Counter(5);

for(int i=0; i<6; i++){

c.inc();

System.out.println("Valore del contatore: " + c.get());

System.out.println("Stato di errore: " + c.isError());

} }

}

E se scrivessimo il main così?

E’ giusto?

c.inc() quale metodo richiama?

Cosa ci aspettiamo in output?

(8)

//Metodo main

public static void main(String[] args) { Counter c= new SimpleCounter(5);

for(int i=0; i<6; i++){

c.inc();

System.out.println("Valore del contatore: " + c.get());

System.out.println("Stato di errore: " + c.isError());

} }

}

E se invece?

E’ giusto?

(9)

Create il tipo di dato Impiegato come estensione del tipo di dato Persona.

Esercizio 6

Dove una classe Impiegato ha le variabili nome, cognome, età, salario. Ha un metodo dettagli() che restituisce in una stringa le informazioni sulla persona in questione.

Ha un metodo aumentasalario() che aumenti lo stipendio secondo una certa percentuale.

Dove una classe Persona ha le variabili nome, cognome, età. Ha i metodi GetNome, GetCognome, GetEtà e un metodo dettagli() che restituisce in una stringa le informazioni sulla persona in

questione.

(10)

Tipo di dato Persona

public class Persona{

private String nome;

private String cognome;

private int età;

public Persona(String n,String c, int e){

nome=n;cognome=c;età=e;}

public String GetNome() {return(nome);}

public String GetCognome() {return(cognome);}

public int GetEtà() {return(età);}

public String Dettagli()

{return("Nome= "+nome+" Cognome= "+cognome+" Anni “ + età);} }

Riferimenti

Documenti correlati

Perci` o l’u- tilizzo della disuguaglianza di Chebyshev `e limitato ai casi in cui non `e nota la forma della distribuzione della variabile casuale... Sia X la variabile

Usando le classi del precedente esercizio, scrivere una semplice classe Agenzia Assicurativa, dove ciascun oggetto della classe `e caratterizzato dal nome dell’agenzia e da un elenco

Una spira quadrata di lato L=5,0cm si trova inizialmente immersa in un campo magnetico B uniforme, parallelo al piano in cui giace la spira.. Un campo magnetico

Per ognuna delle 12 date, individuate, a vostra scelta, una stella importante o un oggetto di cielo profondo che ritenete interessante, che transita al meridiano, o è in

[r]

La variabile è dello stesso tipo di un gruppo di Cefeidi osservate nella Piccola Nube di Magellano (SMC), posta a una distanza di 200.000 ly, per le quali è stata trovata la

Se un telescopio raccoglie 1 fotone al secondo da una stella di magnitudine 29, che magnitudine minima deve avere una stella di riferimento in grado di far funzionare per

Risolvere i seguenti esercizi usando il metodo di Gram-Schmidt semplificando, dove possibile, il calcolo usando l’ortogonalit` a di insiemi noti di funzioni trigonometriche o