Qui trovi un insieme di esercizi che ti permetteranno di metterti alla prova con la creazione di attributi e metodi statici di una classe.
Realizza la tua soluzione e poi confronta la tua soluzione con quella proposta dal professore.
Esercizi sulla progettazione degli attributi e dei metodi static in Java
Esercizio 1: Gara di corsa
Si vuole realizzare un'applicazione per un nuovo evento di corsa da proporre nel proprio quartiere, che deve tenere traccia delle diverse tipologie di gare a cui gli atleti potranno iscriversi.
In particolare, ogni singola Gara è caratterizzata dal proprio nome, dalla lunghezza espressa in km e dalla durata massima entro la quale terminare la corsa.
Invece, tutte le gare condividono alcune caratteristiche, infatti a prescindere dalla singola gara è previsto che gli atleti:
siano obbligatoriamente tesserati alla FIDAL;
paghino un costo d'iscrizione pari a 10€.
Per la classe Gara prevedere anche:
un attributo static in grado di memorizzare il numero di oggetti di tipo Gara che verranno creati;
un metodo che sia in grado di calcolare la velocità più bassa che un atleta dovrebbe sostenere per poter completare la gara in tempo.
Inoltre, tale applicazione deve poter calcolare il consumo di calorie di un atleta sapendo che "a qualunque livello venga praticata, la corsa consente di bruciare 900cal per kg di peso corporeo al chilometro. In altri termini un soggetto di 100kg consuma circa 90000cal ogni chilometro percorso. Il consumo calorico della camminata è invece inferiore, pari a circa 500cal per kg per km" (fonte qui).
Per poter fare ciò si realizzi un metodo static che calcoli il numero di calorie bruciate partendo dai seguenti dati: il peso (kg), la lunghezza del percorso (km) ed il tipo di attività corsa/camminata.
Nel metodo main effettuare le seguenti istruzioni:
Creare due oggetti di tipo Gara con le seguenti proprietà:
gara "EasyFive", di lunghezza 5km, da percorrere entro il limite massimo di 70minuti;
gara "EasyTen", di lunghezza 10 km, da percorrere entro il limite massimo di 120minuti.
All'interno di un ciclo do-while consentire all'utente di creare un numero arbitrario di gare e prevedere una condizione di uscita dal ciclo.
Mostrare a schermo il numero totale di gare che sono state create;
All'interno di un secondo ciclo do-while consentire all'utente di calcolare il numero di calorie che brucerebbe in una gara sulla base del peso, dei km e della tipologia di attività corsa/camminata.
Esercizio 2: Runner e Gara
Ampliare il precedente esercizio permettendo all'applicazione di tenere traccia dei "Runner" che intendono partecipare a tale manifestazione. In particolare, per ogni runner si vuole tenere traccia del nome, se maschio o femmina, la data di nascita e la gara a cui intende partecipare.
Per la classe Runner prevedere:
un attributo static in grado di memorizzare il numero di oggetti Runner che verranno creati;
un metodo static che prenda come parametro la distanza da percorrere in una gara ed il tempo in cui la si vorrebbe completare. Tale metodo deve poter restituire la velocità media (espressa in km/orari) che il corridore deve sostenere per completare l'intero percorso nel tempo prestabilito.
Nel metodo main effettuare le seguenti istruzioni:
Creare due oggetti g1 e g2 di tipo Gara. L'oggetto g1 deve avere le caratteristiche della "EasyFive", mentre g2 quelle di "EasyTen" (vedi es. 1).
Stampare a schermo le informazioni relative alle due gare a cui i runners possono partecipare;
All'interno di un ciclo iterativo di tipo do-while far creare all'utente un nuovo runner. Nella creazione del Runner tenere conto che ogni runner può gareggiare solamente o alla EasyFive o alla EasyTen. Infine, chiedere in quanto tempo tale runner vorrebbe concludere la gara in modo tale da mostrargli la velocità media che dovrà sostenere per raggiungere il suo obiettivo. (Prevedere una condizione di uscita dal do-while)
Infine, mostrare a schermo quante gare e quanti runners sono stati creati.
N.B. Il numero di gare create alla fine del programma dovrebbero essere solo le 2 iniziali g1 e g2.
Esercizio 3: Classe Dipendente
Si realizzi la classe Dipendente di cui si è interessati a tenere traccia del nome, dello stipendio base e dello stipendio extra che riceve in base agli anni di servizio. Per tale classe prevedere:
un attributo statico che possa tenere traccia del numero di oggetti di tipo Dipendente che vengono creati;
un metodo in grado di calcolare lo stipendio totale di un dipendente;
un metodo che confronta due oggetti di tipo dipendente e ritorna il nome del dipendente con stipendio totale maggiore;
un metodo statico aumentoPercentuale che prende come parametri il valore di uno stipendio ed il valore della percentuale di quanto si voglia aumentare tale stipendio. Il metodo ritorna il valore che lo stipendio maggiorato della percentuale.
Si realizzi un metodo main in cui:
All'interno di un ciclo do-while creare:
a. Due oggetti di tipo Dipendente (input da tastiera);
b. Mostrare a schermo le informazioni dei due dipendenti creati, specificando il nome del dipendente che ha lo stipendio maggiore;
c. Chiedere all'utente se vuole inserire altri due dipendenti, altrimenti uscire dal do-while
Indicare quanti oggetti di tipo Dipendente sono stati creati.
All'interno di un ciclo do-while, avviare una sessione di simulazione in cui l'utente possa inserire (da tastiera) il suo attuale stipendio e la percentuale di quanto vorrebbe vedere aumentato il proprio stipendio. Il programma deve mostrare all'utente l'importo dello stipendio aumentato della percentuale. Prevedere una condizione di uscita dal do-while.