Si vuole realizzare un programma per la gestione degli iscritti alla maratona 42 Km della città di Roma. Per ogni maratoneta nella corsa è necessario mantenere le seguenti informazioni: nome (String), età (int), peso (double), tempo record personale (double).
Scrivere una classe Maratoneta per rappresentare le informazioni relative
a un maratoneta con la seguente interfaccia:
- Maratoneta(String nome, int eta, double
peso, double record) : costruttore con
quattro argomenti: nome, età, peso e tempo record;
- String getNome( ) : restituisce il nome del maratoneta;
- int getEta( ) : restituisce l'età del maratoneta;
- double getPeso( ) : restituisce
il peso del maratoneta;
- double getRecord( ) : restituisce
il tempo record personale;
- void setRecord(double r) :
imposta il nuovo record personale del maratoneta a r;
- boolean aRischio(): restituisce true se l'età del maratoneta
è maggiore o uguale a 45 anni, oppure se ha strettamente meno di 20 anni
ed ha un peso superiore a 90 Kg, e false altrimenti;
- boolean uguale( Maratoneta x ) : restituisce true se il maratoneta
su cui il metodo è invocato ha lo stesso nome, età e peso del
maratoneta x (indipendentemente dalla velocità), e false altrimenti;
Programma di esempio: ProvaMaratoneta.java
public class ProvaMaratoneta {
public static void main (String[] args) {
Maratoneta a1 = new Maratoneta("Ottavio Andriani", 30, 54, 2.10);
System.out.println("Nome: "+a1.getNome());
System.out.println("Eta': "+a1.getEta());
System.out.println("Peso: "+a1.getPeso()+ " Kg");
System.out.println("Record personale: "+a1.getRecord());
a1.setRecord(2.0846);
System.out.println("Nuovo record personale: "+a1.getRecord());
Maratoneta a2 = new Maratoneta(new String("Ottavio Andriani"), 30, 54, 2.0846);
if (a1.uguale(a2)) System.out.println("a1 e a2 sono uguali");
else System.out.println("a1 e a2 sono diversi");
}
}
Viene fornita una classe LeggiMaratona che
mette a disposizione un metodo Maratoneta[] leggi(String nomefile)
che legge da un file avente il nome passato come argomento un insieme di record
rappresentanti oggetti della classe Maratoneta, e ritorna un array
di oggetti Maratoneta opportunamente istanziato.
Programma di prova per Maratona1
import java.io.*;
class ProvaMaratona1 {
public static void main (String[] args) throws IOException {
Maratoneta[] v = LeggiMaratona.leggi("maratona.dat");
System.out.println("Eta' media con oltre 50 Kg: " + Maratona1.etaMedia(v, 50) + " (risultato corretto: 35.0)");
System.out.println("Eta' media con oltre 100 Kg: " + Maratona1.etaMedia(v, 100) + " (risultato corretto: 0.0)");
}
}
Programma di prova per Maratona2
import java.io.*;
class ProvaMaratona2 {
public static void main (String[] args) throws IOException{
Maratoneta[] v = LeggiMaratona.leggi("maratona.dat");
Maratoneta m = Maratona2.piuVeloceARischio(v);
System.out.println("Maratoneta a rischio piu' veloce: " + m.getNome() + " (corretto: Luca Pazzi)");
}
}