Classi e oggetti in Java
Qui trovi un insieme di esercizi che ti permetteranno di metterti alla prova con la creazione delle classi e degli oggetti.
Realizza la tua soluzione e poi confronta la tua soluzione con quella proposta dal professore.
Esercizi sulla progettazione delle classi in Java
Esercizio 1: La classe Giocatore
Progettare la classe Giocatore come descritta dal diagramma UML all'interno del file Giocatore.java.
La classe Giocatore deve contenere:
Quattro attributi privati:
L'attributo nome di tipo String;
L'attributo capitano di tipo boolean;
L'attributo goal di tipo int;
L'attributo goalNazionale di tipo int.
Due costruttori
Il costruttore di default;
Il costruttore personalizzato con tutti i parametri per inizializzare i valori degli attributi.
Dieci metodi
1-8. Metodi get e setter per tutti gli atributi;
9. Il metodo calcolaGoalTotali() in grado di calcolare la somma dei goal fatti dal giocatore tra il club e la nazionale;
10. Il metodo toString per poter creare una stringa in grado di mostrare i valori contenuti all'interno del Giocatore.
Infine, creare un secondo file TestGiocatore.java dove poter creare i seguenti tre oggetti di tipo Giocatore:
l'oggetto totti, creato con il costruttore di default ed i valori assegnati grazie ai metodi set;
l'oggetto zanetti, creato con il costruttore personalizzato;
l'oggetto delPiero, creato con il costruttore di default ed i cui valori devono essere inseriti tramite la tastiera.
Esercizio 2: La classe Smartphone
Progettare la classe Smartphone come descritta dal diagramma UML all'interno del file Smartphone.java.
La classe Smartphone deve contenere:
sei attributi privati: marca, modello, prezzoDiLancio, numPollici, ram e touchScreen.
due costruttori: il costruttore di default ed il costruttore personalizzato con tutti i parametri per inizializzare i valori degli attributi.
i metodi getter e setter per tutti gli attributi.
il metodo ottieniFasciaDiPrezzo() che restituisce:
la stringa "fascia ALTA" se il prezzo è superiore a 500€;
la stringa "fascia MEDIA" se il prezzo è compreso tra 200€ e 500€;
la stringa "fascia BASSA" se il prezzo è minore di 200€.
il metodo ottieniTipologiaSmartphone() che restituisce:
la stringa "Mini" se il numero di pollici è minore di 5 pollici;
la stringa "Normal" se il numero di pollici è compreso tra 5 pollici e 7 pollici;
la stringa "Maxi" se il numero di pollici è superiore a 7 pollici.
il metodo toString() che restituisce una stringa in grado di mostrare tutti i valori contenuti negli attributi della classe, la fascia di prezzo e la tipologia di smartphone.
Infine, creare un secondo file TestSmartphone.java dove poter creare i seguenti due oggetti di tipo Smartphone:
l'oggetto smartphone1, creato con il costruttore di default ed i cui valori devono essere inseriti tramite la tastiera;
l'oggetto smartphone2, creato con il costruttore personalizzato ed i cui valori devono essere inseriti tramite la tastiera.
N.B. nel file TestSmartphone.java va controllato l'input dell'utente! Ossia bisogna assicurarsi che i valori inseriti da tastiera siano ammissibili.
Esercizio 3: Il triangolo rettangolo
Progettare la classe TriangoloRettangolo che abbia:
due attributi privati di tipo double: cateto1 e cateto2;
il metodo costruttore di default;
il costruttore parametrizzato con entrambi i cateti come parametri;
I metodi getter e setter per entrambi gli attributi;
Metodo calcolaIpotenusa che restituisca il valore dell'ipotenusa;
Metodo calcoloArea che restituisca il valore dell'area;
metodo calcolaPerimetro che restituisca il valore del perimetro;
il metodo toString.
Per prima cosa si realizzi il diagramma UML della classe TriangoloRettangolo (con draw.io o software simili) e si proceda ad implementarla all'interno del file TriangoloRettangolo.java
In una nuova classe chiamata TestTriangoloRettangolo.java istanziare due oggetti di tipo TriangoloRettangolo usando per il primo oggetto il costruttore di default e per il secondo oggetto il costruttore parametrizzato.
Poi visualizzare a video le seguenti informazioni:
Il valore dell'ipotenusa, del perimetro e dell'area dei due oggetti creati. (Suggeriemento: stampare a schermo la stringa ritornata dal metodo toString).
Il triangolo rettangolo che ha l'area maggiore.
Il programma deve avere un menù di scelta ed essere iterativo.
Esercizio 4: La classe Libro
Progettare e produrre la documentazione (la java doc) relativa al codice della classe Libro. Tale classe deve avere:
sei attributi privati che rappresentano: il titolo del libro, l'autore, il numero di pagine, la versione del libro (cartacea o digitale), il prezzo di lancio ed il prezzo attuale;
il metodo costruttore di default;
il costruttore parametrizzato con tutti gli attributi;
i metodi getter e setter per tutti gli attributi;
il metodo applicaSconto10 che riduce il prezzo attuale del 10% rispetto al precedente valore di prezzo attuale;
il metodo applicaSconto che ricevendo come parametro un valore intero rappresentante la percentuale di sconto, modifichi il valore del prezzo attuale riducendolo della percentuale indicata dal parametro;
il metodo toString.
Per prima cosa si realizzi il diagramma UML della classe Libro (con draw.io o software simili) e si proceda ad implementarla all'interno del file Libro.java
In una nuova classe chiamata TestLibro.java istanziare due oggetti di tipo Libro usando per il primo oggetto il costruttore di default e per il secondo oggetto il costruttore parametrizzato, consentendo sempre all'utente di inserire i valori dei due libri da tastiera.
Poi visualizzare a video le seguenti informazioni:
Le informazioni dei due oggetti creati. (Suggeriemento: stampare a schermo la stringa ritornata dal metodo toString).
Il libro che ha il numero di pagine maggiore.
Il programma deve avere un menù di scelta ed essere iterativo.
Per la documentazione ricorda di creare prima della definizione di ogni metodo un commento che inizia con /**. Dopo aver scritto la documentazione di tutti i metodi, su Eclipse cliccare su Project --> Generate javadoc. Infine, andare sulla cartella dove si trova il progetto, accedere alla cartella doc --> libro. In questa cartella troverai il file Libro.html che potrai aprire con un browser e leggere la documentazione della tua classe.
Esercizio 5: La classe Cane
Realizzare la classe Cane che abbia tre attributi:
nome;
razza;
età.
Di tale classe si implementi i costruttore di default, quello parametrizzato, i metodi get, set ed il metodo toString.
Implementare la classe MainCane in cui il metodo main permetta di:
creare due oggetti di tipo Cane con valori inseriti da tastiera:
Scegliere se usare il costruttore di default o il costruttore parametrizzato.
Indicare il nome del cane più giovane, o se hanno la stessa età.
Una volta completati i due file si documenti la classe ed i metodi realizzati.
Realizzare il diagramma UML della classe.
Esercizio 6 : La classe Studente
Realizzare la classe Studente che abbia due attributi:
nome
anno di nascita
Di tale classe si implementi i costruttore di default, quello parametrizzato, i metodi get, set ed il metodo toString.
Implementare la classe TestStudente in cui il metodo main permetta di creare due oggetti:
Il primo oggetto deve essere creato usando il costruttore di default. L’utente deve inserire i valori da tastiera.
Il secondo oggetto deve essere creato usando il costruttore parametrizzato. L’utente deve inserire i valori da tastiera.
Indicare se i due studenti sono coetanei, oppure indicare chi è nato prima.
Una volta completati i due file si documenti la classe ed i metodi realizzati e rendere il main iterativo.
Esercizio 7: La classe Libro (costruttore di copia)
Realizzare la classe Libro che prevede:
i seguenti attributi: titolo, autore, numPagine e prezzo.
i seguenti metodi costruttori: default (senza parametri), parametrizzato (con i 4 parametri che fanno riferimento ai quattro attributi) e costruttore di copia.
i seguenti metodi: getters, setters, toString .
Creare il metodo main in cui:
creare un oggetto libro1 di tipo Libro contenente i seguenti valori: titolo = "Pinocchio", autore = "Collodi", numPagine = 288, prezzo = 9.02
creare un oggetto libro2 di tipo Libro che sia la copia di libro1
creare un oggetto libro3 di tipo Libro contenente i seguenti valori: titolo = "Divina Commedia", autore = "Dante", numPagine = 576, prezzo = 6.65
creare un alias "divinaCommedia" che si riferisce a libro 3.
usare il metodo setPrezzo sull'oggetto libro1, modificandolo a 7.43
usare il metodo setTitolo sull'oggetto libro2, modificandolo con il valore "Pinocchio versione illustrata"
usare il metodo setAutore sull'oggetto libro3, modificandolo con il valore "Dante Alighieri"
usare il metodo setNumPagine sull'oggetto divinaCommedia, modificandolo con il valore 621
infine, stampare a schermo i 4 oggetti ed analizzare l'effetto che i metodi set hanno avuto su di essi.
In questo esercizio non è richiesto l'uso della classe Scanner.
Esercizio 8 : La classe Computer (costruttore di copia)
Realizzare la classe Computer che abbia i seguenti 4 attributi:
marca;
modello;
quantità di ram;
tipo di memoria secondaria (se SSD oppure HDD).
Di tale classe si implementi i costruttore di default, quello parametrizzato, costruttore di copia, i metodi get, set ed il metodo toString.
Implementare la classe TestComputer in cui il metodo main permetta di:
creare un Computer c1 con valori inseriti da tastiera usando il costruttore parametrizzato:
creare un Computer c2, copia di c1, usando il costruttore di copia;
creare una variabile c3 di tipo Computer ed assegnargli c2;
modificare la quantità di ram sull'oggetto c3 (usando il metodo setRam);
mostrare a schermo le informazioni dei tre oggetti;
La ram di c2 quanto vale? E perché?
Esercizio 8bis : Classe a piacere
Realizzare una classe a piacere che abbia almeno 4 attributi:
una stringa;
due valori numerici;
un valore booleano.
Si realizzi il diagramma delle classi.
Di tale classe si implementi i costruttore di default, quello parametrizzato, costruttore di copia, i metodi get, set, il metodo inserisciDati ed il metodo toString.
Implementare una classe di test in cui il metodo main permetta di:
creare due oggetti della classe realizzata con valori inseriti da tastiera usando il costruttore di default ed il metodo inserisciDati:
creare una copia del primo oggetto, usando il costruttore di copia;
creare un alias per il secondo oggetto;
modificare i valori di due attributi del primo oggetto;
modificare i valori di due attributi del secondo oggetto;
mostrare a schermo le informazioni degli oggetti creati e dell'alias.
Esercizio 9 : La classe Mouse (metodo equals)
Realizzare la classe Mouse che abbia i seguenti 3 attributi:
marca-modello;
se a filo o wireless;
dpi (numero intero che indica la precisione e la velocità del mouse, in genere tra 600 e 1200).
Di tale classe si implementi i costruttore di default, quello parametrizzato, costruttore di copia, i metodi get, set, equals ed il metodo toString.
Implementare la classe TestMouse in cui il metodo main permetta di:
creare un Mouse m1 con valori inseriti da tastiera usando il costruttore parametrizzato:
creare un Mouse m2, copia di m1, usando il costruttore di copia;
creare una variabile m3 di tipo Mouse ed assegnargli m2;
mostrare a schermo le informazioni dei tre oggetti;
confrontare m1 e m2 con l'operatore == e poi con il metodo equals --> cosa noti?
confrontare m2 e m3 con l'operatore == e poi con il metodo equals --> cosa noti?
Esercizio 10: La classe Automobile (metodo equals)
Realizzare il class diagram della classe Automobile prevedendo:
almeno 3 attributi: di cui almeno uno di tipo String, uno di tipo int e uno di tipo boolean.
i metodi costruttore di default, parametrizzato e di copia.
i metodi get, set, toString, equals ed opzionalmente eventuali metodi aggiuntivi.
Scrivere il codice della classe Automobile nel file "Automobile.java" e commentare opportunatamente il metodo costruttore copia ed il metodo equals.
Implementare nel file "MainAutomobile.java" il metodo main che deve permettere almeno di:
creare due oggetti facendo inserire i valori da tastiera;
confrontare i due oggetti con il metodo equals ed indicare se sono uguali.
Esercizio 11: La classe che rappresenta uno strumento musicale (metodo inserimento dati da tastiera)
Realizzare il class diagram della classe Strumento prevedendo:
almeno 4 attributi: di cui almeno uno di tipo String, uno di tipo int e uno di tipo boolean.
i metodi costruttore di default, parametrizzato e di copia.
il metodo inserisciDati che consenta all'utente di inizializzare tutti i valori degli attributi da tastiera.
i metodi get, set, toString, equals ed opzionalmente eventuali metodi aggiuntivi.
Scrivere il codice della classe Strumento nel file "Strumento.java" e commentare opportunatamente il metodo costruttore copia ed il metodo equals.
Implementare nel file "MainStrumento.java" il metodo main che deve permettere almeno di:
creare due oggetti usando il costruttore di default;
usare il metodo inserisciDati per poter inserire i dati da tastiera;
confrontare i due oggetti con il metodo equals ed indicare se sono uguali.
Esercizio 12: La classe che rappresenta un Puzzle (metodo inserimento dati da tastiera)
Realizzare il class diagram della classe Strumento prevedendo:
almeno 4 attributi: di cui almeno uno di tipo String, uno di tipo int e uno di tipo boolean.
i metodi costruttore di default, parametrizzato e di copia.
il metodo inserisciDati che consenta all'utente di inizializzare tutti i valori degli attributi da tastiera.
i metodi get, set, toString, equals ed opzionalmente eventuali metodi aggiuntivi.
Scrivere il codice della classe Puzzle nel file "Puzzle.java".
Implementare nel file "MainPuzzle.java" il metodo main che deve permettere almeno di:
creare due oggetti usando il costruttore di default;
usare il metodo inserisciDati per poter inserire i dati da tastiera;
confrontare i due oggetti con il metodo equals ed indicare se sono uguali.
Esercizio 13: Il punto nel piano cartesiano
Partendo dal diagramma UML della classe riportato di fianco realizzare la classe PuntoCartesiano.
Il metodo quadrante ritorna una stringa che indica il quadrante dove si trova il punto cartesiano (qui trovi un'immagine che ti ricorda i quattro quadranti del piano cartesiano). Indicare anche se il punto non si trova in un quadrante preciso, bensì si trova nell'origine, nei punti dell'asse x o nei punti dell'asse y.
Il metodo distanza ritorna la distanza tra:
l'oggetto di tipo PuntoCartesiano che richiama il metodo distanza e...
l'oggetto di tipo PuntoCartesiano passato come parametro.
(clicca qui se non ricordi la formula per calcolare la distanza tra due punti).
Il metodo rettaPassantePerDuePunti ritorna una stringa indicante l'equazione della retta passante per:
l'oggetto di tipo PuntoCartesiano che richiama il metodo rettaPassantePerDuePunti e...
l'oggetto di tipo PuntoCartesiano passato come parametro.
(clicca qui se non ricordi come si calcola la retta passante per due punti).
Scrivere il codice del metodo main nel file MainPuntoCartesiano.java. Nel metodo main svolgere le seguenti azioni:
Creare un oggetto p1 di tipo PuntoCartesiano con il metodo costruttore di default;
Assegnare con i metodi setX() e setY i valori (3, 5) all'oggetto p1;
Creare un oggetto p2 di tipo PuntoCartesiano con il metodo costruttore parametrizzato assegnandogli i valori (-2, 5);
Creare un oggetto p3 di tipo Punto Cartesiano con il metodo costruttore di default;
Assegnare con il metodo inserisciDati() i valori all'oggetto p3. Sarà l'utente a scegliere i metodi da tastiera;
Mostrare a schermo una stampa che descriva gli oggetti p1, p2 e p3;
Indicare in quali quadranti si trovano i tre punti richiamando il metodo quadrante da tutti gli oggetti;
Indicare la distanza tra le tutte le possibili coppie di punti (p1 e p2) (p1 e p3) (p2 e p3);
Indicare l'equazione della retta passante per tutte le possibili coppe di punti (p1 e p2) (p1 e p3) (p2 e p3).
Esercizio 14: Il sensore di temperatura
In una smart city sono diffusi diversi sensori di temperatura. Ogni sensore è caratterizzato da una posizione (latitudine e longitudine) e da una temperatura rilevata (in gradi Celsius). Tali sensori sono utilizzati dalla città per poter localizzare eventuali rischi di incendi in città.
Vi è un rischio di incendio nel momento in cui due sensori diversi che si trovano ad una distanza inferiore di 15metri registrano entrambi una temperatura maggiore di 60°.
In caso di incendio l'applicazione deve essere in grado di indicare il punto medio rispetto al quale si trovano i due sensori che hanno registrato tali temperature e mostrare a schermo un messaggio di ALLERTA.
Progettare la classe SensoreTemperatura, realizzando diversi metodi in grado di confrontare due oggetti di tipo SensoreTemperatura:
metodo per calcolare la distanza tra due sensori;
metodo per calcolare il punto medio tra due sensori;
metodo per capire se due sensori hanno le caratteristiche per segnalare un rischio di incendio.
Infine, realizzare una classe MainSensoreTemperatura in grado di far inserire all'utente i valori relativi a quattro coppie di sensori. Per ogni coppia il programma deve analizzare se i due sensori danno luogo ad un'ALLERTA incendio oppure no.
**Sfida: Nel main puoi memorizzare n sensori in un vettore (i cui valori puoi anche generarli in maniera random). In seguito, confrontare tutte le coppie di sensori possibili e indicare in output tutte le allerte incendio che ne derivano da tali coppie di sensori.