Qui trovi un insieme di esercizi che ti permetteranno di metterti alla prova con la creazione di classi aventi come attributo un vettore di oggetti.
Esercizi sulla progettazione di classi contenenti un vettore di oggetti
Esercizio 1: Classe Albero
Realizzare un programma Java che permetta di salvare le informazioni di diversi alberi.
1. Crea la classe Albero con i seguenti attributi:
specie (String) – (es. "Pino", "Abete")
altezza (double)
2. Nel metodo main():
Chiedere all'utente quanti alberi si intende creare;
Creare un vettore di oggetti di tipo Albero;
Calcolare il valore dell'altezza più piccola e di quella più grande;
Mostrare a schermo le specie a cui appartengono gli alberi con altezza più piccola e più grande;
Contare quanti sono gli alberi con specie "Pino";
Calcolare la media delle altezze.
Esercizio 2: Gestione Squadre di Calcio
Realizzare un programma Java che permetta di gestire squadre di calcio e i relativi giocatori. Il programma consente di verificare se due giocatori appartengono alla stessa squadra e calcolare il numero totale di giocatori per ciascuna squadra.
1. Crea la classe Squadra con almeno questi attributi:
- nome (String) – Nome della squadra (es. "Roma", "Lazio")
2. Crea la classe Giocatore con i seguenti attributi:
- nome (String) – Nome del giocatore
- squadra (Squadra) – Squadra di appartenenza
Implementare anche il metodo:
boolean compagniDiSquadra(Giocatore altroGiocatore) – Verifica se due giocatori appartengono alla stessa squadra, restituendo `true` in caso positivo, altrimenti `false`.
3. Nel metodo main():
Crea due oggetti di tipo Squadra (hard-coded, ad es, Lazio e Roma):
Chiedi all'utente quanti giocatori desidera creare (n).
Utilizza un vettore di tipo Giocatore per memorizzare i giocatori.
Per ciascun giocatore, chiedi all'utente:
Nome del giocatore
Squadra di appartenenza (scegli tra Roma e Lazio)
Dopo la creazione di ogni giocatore, verifica se appartiene alla stessa squadra del giocatore creato precedentemente e stampa un messaggio a schermo con il risultato.
Al termine, stampa il numero totale di giocatori per ciascuna squadra, ad esempio:
Numero di giocatori della Roma: 3
Numero di giocatori della Lazio: 2
Suggerimenti per gli studenti:
Usa un array per memorizzare i giocatori.
Utilizza un ciclo for per iterare sugli input dell'utente.
Implementa il metodo `compagniDiSquadra` nella classe `Giocatore` per verificare se due giocatori appartengono alla stessa squadra.
Usa un contatore per tenere traccia del numero di giocatori per ciascuna squadra.
Extra (opzionale): Puoi migliorare il programma aggiungendo altre informazioni sui giocatori come ruolo o numero di maglia.
Esercizio 3: La classe Canzone e la playlist preferita
Realizzare la classe Canzone con i seguenti tre attributi: nome, cantante e durata. Di tale classe si implementi il costruttore di default, quello parametrizzato, i metodi get, set ed il metodo toString.
Implementare la classe MainCanzone in cui il metodo main deve permettere all'utente di inserire la propria playlist preferita. In particolare nele main si deve:
chiedere all'utente da quante canzoni è costituita la propria playlist preferita (almeno una canzone);
dichiarare e inizializzare un vettore in grado di contenere tali canzoni;
(Suggerimento: bisogna creare un vettore di tipo Canzone. Per capire come crearlo è sufficiente ricordare come si crea un vettore di interi e sostituire al posto della parola "int" la parola "Canzone").
all'interno di un ciclo for, che itera in base al numero di canzoni, creare le canzoni e memorizzarle nel vettore.
stampare a schermo la playlist;
indicare il nome della canzone più lunga e la media della durata delle canzoni contenute nella playlist.
Si realizzi il class diagram per la classe Canzone e si documenti il codice.
Esercizio 4: La prima classe che contiene un vettore di oggetti come attributo
Riprendere la classe Canzone definita nell'esercizio 7. Creare adesso la classe Playlist che ha un solo attributo: playlist. Tale attributo è un vettore di tipo Canzone. Di tale classe si implementi:
il metodo costruttore che prende come parametro il vettore di canzoni;
i metodi che modificano il titolo, il cantante e la durata:
modificaTitolo(int pos, String tit) : deve essere in grado di modificare il titolo della canzone che si trova in posizione pos.
modificaCantante(int pos, String can) : deve essere in grado di modificare il cantante della canzone che si trova in posizione pos.
modificaDurata(int pos, double dur) : deve essere in grado di modificare la durata della canzone che si trova in posizione pos.
il metodo toString che deve restituire una stringa con l'intera playlist.
Il metodo main deve consentire di creare una playlist.
Una volta creata la playlist avviare un menu iterativo in grado di:
modificare il titolo di una canzone
modificare il cantante di una canzone
modificare la durata di una canzone
visualizzare la playlist
uscire dal menu
Esercizio 5: Social network
Si vuole gestire le statistiche di diversi social network.
Di ogni social si vuole tenere traccia di:
nome;
una breve descrizione;
l'anno in cui è stato fondato;
l'insieme degli account registrati.
Per ogni account si intendono memorizzare le informazioni di:
nickname;
numero di post pubblicati;
numero di follower;
numero di seguiti.
In tali social si è considerati influencer nel momento in cui si hanno più di dieci mila follower e si è considerati content creator se si sono pubblicati più di 1000 post.
Realizzare un'applicazione che sia in grado di creare un oggetto di tipo social network e per tale social sia in grado di indicare:
Il numero di influencer presenti nel social;
Il numero medio di post creato dagli utenti;
Il nome dell'account che ha più follower ed indicarne il numero.
** Sfida 1: Creare un metodo in grado di ordinare gli elementi del vettore in ordine decrescente sulla base del numero di follower.
** Sfida 2: Creare un metodo che preveda come parametro un nickname e restituisca true se è presente un account con tale nickname, false altrimenti.
Esercizio 6: Gelateria
Una famosa catena di gelaterie presenti sul territorio nazionale vuole monitorare i ricavi delle diverse sedi. Si progetti e realizzi un'applicazione in java che sia in grado di:
calcolare e restituire la somma dei ricavi ottenuti dalle vendite dei diversi gelati (cono/coppetta piccolo, cono/coppetta medio... );
comunicare qual è la tipologia di gelato più richiesta dai clienti di una gelateria della catena;
metta infine a confronto due gelaterie comunicando quale delle due ha avuto il maggiore ricavo dalle vendite e, in assoluto, quale tipologia di gelato è la più venduta.
Esercizio 7: Casa discografica
Una famosa casa discografica vuole poter memorizzare le informazioni degli album prodotti. In particolare per un album si è interessati a conoscere l'insieme di canzoni che ne fanno parte. Si progetti e realizzi un'applicazione in java che sia in grado di:
creare un album;
indicare la durata media delle canzoni presenti nell'album;
indicare quante canzoni nell'album superano i 3 minuti di durata.
indicare se nell'album è presente almeno una canzone che appartenga ad un genere specifico scelto dall'utente;
indicare quale sia la canzone dell'album con durata massima;
ordinare le canzoni nell'album sulla base dell'ordinamento alfabetico.
Suggerimento: per confrontare due stringhe in java si usa il metodo compareTo(). Si riporta un esempio di un codice che usa il metodo compareTo.
Esercizio 8: Piattaforma Streaming
Si intende progettare un'applicazione per gestire i telefilm. In particolare, di ogni telefilm si intende memorizzare:
Il nome del telefilm;
Il genere del telefilm;
Se la produzione del telefilm è in corso oppure è terminata;
L'insieme delle stagioni da cui è composto.
Per ogni stagione si è interessati a tenere traccia delle seguenti informazioni:
numero di episodi;
nome dello sceneggiatore;
la trama;
numero della stagione (se è la prima il numero è 1, se è la seconda il numero è 2...).
Creare un'applicazione in java contenente i seguenti file:
"Stagione.java" contenente:
(a) Gli attributi specificati nel testo, il costruttore di default, il costruttore parametrizzato, i metodi get e set, il metodo toString;
(b) Il metodo inserisciDati che consente di inserire da tastiera tutti i valori da attribuire agli attributi di una stagione.
2."Telefilm.java" contenente:
(a) Gli attributi specificati nel testo, il costruttore di default, il costruttore parametrizzato, i metodi get e set, il metodo toString;
(b) Il metodo inserisciDati che consente di inserire da tastiera tutti i valori da attribuire agli attributi di un telefilm;
(c) Un metodo in grado di calcolare il numero medio di puntate presenti nel telefilm per ogni stagione;
(d) Un metodo che preso come parametro il nome di uno sceneggiatore ritorna true se tale sceneggiatore è presente in almeno una stagione del telefilm, altrimenti ritorna false.
(e) ** Un metodo che ordina il vettore delle stagioni in base al numero della stagione, dalla prima all'ultima.
3. "MainTelefilm.java" in grado di:
(a) Creare un telefilm con input gestito da tastiera;
(b) Mostrare a schermo il telefilm creato;
(c) Indicare il numero medio di puntate presenti nel telefilm per ogni stagione;
(d) Verificare se "Luca Galli" è stato sceneggiatore di almeno una stagione del telefilm creato;
(e) ** Ordinare il vettore e mostrare nuovamente a schermo il telefilm.
Esercizio 9: La classe Libreria
Partendo dalla classe Libro (con attributi titolo, autore, genere e numPagine), creare in seguito la classe Libreria che prevede:
i seguenti attributi: nome, indirizzo e libri (vettore contenente oggetti di tipo Libro).
metodo costruttore di default e personalizzato (con i parametri che fanno riferimento a tutti gli attributi).
i seguenti metodi: getters, setters, toString ed il metodo calcolaMediaPrezzo che calcola la media dei prezzi dei libri presenti nella libreria.
Il metodo main deve consentire di creare una Libreria. Per creare la libreria seguire i seguenti passi:
Chiedere all'utente quanti libri ci sono nella libreria;
Quando l'utente inserisce i dati di un libro, chiedere anche quante copie di quel libro sono presenti nella libreria. Se ad esempio del libro "Pinocchio" sono presenti tre copie bisogna creare tre oggetti con gli stessi valori. (Usare dunque il costruttore di copia per creare la seconda e terza copia del libro "Pinocchio").
Infine, mostrare a schermo la libreria ed il prezzo medio dei libri contenuta in essa.