Nell’era digitale, la gestione dei dati è un aspetto fondamentale della programmazione. Che si tratti di file musicali, documenti o immagini, saper organizzare e manipolare questi dati è una competenza essenziale per qualsiasi sviluppatore. In questo articolo, esploreremo come creare un programma in Java per gestire un compact disc (CD) contenente fino a dieci canzoni. Impareremo a modificare il titolo e la durata delle canzoni, oltre a recuperare la durata di una canzone specifica. Questo esempio pratico ti introdurrà ai concetti di incapsulamento, gestione degli array e metodi getter e setter in Java.
Incapsulamento e Struttura delle Classi
L’incapsulamento è uno dei pilastri della programmazione orientata agli oggetti (OOP). Consiste nel nascondere i dettagli interni di un oggetto e nel fornire un’interfaccia controllata per accedere e modificare i suoi dati. Nel nostro esempio, utilizzeremo due classi:
- Song: Rappresenta una singola canzone con un titolo e una durata.
- CompactDisc: Gestisce un array di canzoni e offre metodi per manipolare i dati delle canzoni.
Ecco come definiamo la classe Song
:
class Song { private String title; private int duration; // durata in secondi // Costruttore public Song(String title, int duration) { this.title = title; this.duration = duration; } // Getters e setters public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getDuration() { return duration; } public void setDuration(int duration) { this.duration = duration; } }
Gestione dell’Array di Canzoni
La classe CompactDisc
gestisce un array di oggetti Song
. Poiché un CD può contenere al massimo dieci canzoni, utilizziamo un array statico di dimensione fissa. Un contatore numSongs
tiene traccia del numero di canzoni attualmente presenti nel CD.
class CompactDisc { private static final int MAX_SONGS = 10; private Song[] songs; private int numSongs; // Costruttore public CompactDisc() { songs = new Song[MAX_SONGS]; numSongs = 0; } // Metodo per aggiungere una canzone public boolean addSong(String title, int duration) { if (numSongs < MAX_SONGS) { songs[numSongs] = new Song(title, duration); numSongs++; return true; } return false; } }
Modifica del Titolo e della Durata di una Canzone
Per modificare il titolo o la durata di una canzone, utilizziamo due metodi: modifyTitle
e modifyDuration
. Entrambi i metodi cercano la canzone con il titolo specificato e, se trovata, ne modificano il titolo o la durata.
// Metodo per modificare il titolo di una canzone public boolean modifyTitle(String oldTitle, String newTitle) { for (int i = 0; i < numSongs; i++) { if (songs[i].getTitle().equals(oldTitle)) { songs[i].setTitle(newTitle); return true; } } return false; } // Metodo per modificare la durata di una canzone public boolean modifyDuration(String title, int newDuration) { for (int i = 0; i < numSongs; i++) { if (songs[i].getTitle().equals(title)) { songs[i].setDuration(newDuration); return true; } } return false; }
Recupero della Durata di una Canzone
Il metodo getSongDuration
restituisce la durata di una canzone dato il suo titolo. Se la canzone non viene trovata, il metodo restituisce -1
.
// Metodo per ottenere la durata di una canzone dato il titolo public int getSongDuration(String title) { for (int i = 0; i < numSongs; i++) { if (songs[i].getTitle().equals(title)) { return songs[i].getDuration(); } } return -1; // Ritorna -1 se la canzone non viene trovata }
Esempio di Utilizzo
Ecco un esempio di come utilizzare la classe CompactDisc
in un programma principale:
class Main { public static void main(String[] args) { CompactDisc cd = new CompactDisc(); // Aggiungiamo alcune canzoni cd.addSong("Bohemian Rhapsody", 354); cd.addSong("Hotel California", 391); // Modifichiamo il titolo di una canzone cd.modifyTitle("Bohemian Rhapsody", "Bohemian Rhapsody - Queen"); // Modifichiamo la durata di una canzone cd.modifyDuration("Hotel California", 395); // Otteniamo la durata di una canzone int duration = cd.getSongDuration("Hotel California"); System.out.println("Durata di Hotel California: " + duration + " secondi"); } }
Domande Frequenti (FAQ)
1. Perché utilizzare l’incapsulamento?
L’incapsulamento protegge i dati interni di un oggetto da accessi non autorizzati e garantisce che le modifiche avvengano solo attraverso metodi controllati. Questo migliora la sicurezza e la manutenibilità del codice.
2. Cosa succede se si tenta di aggiungere più di dieci canzoni?
Il metodo addSong
restituisce false
se si tenta di aggiungere una canzone oltre il limite di dieci, prevenendo così errori di overflow.
3. Come posso estendere questo programma per gestire più CD?
Puoi creare una classe CDCollection
che gestisce un array di oggetti CompactDisc
, permettendo così di gestire più CD contemporaneamente.
Conclusione
In questo articolo, abbiamo esplorato come creare un programma in Java per gestire un compact disc contenente fino a dieci canzoni. Abbiamo visto come utilizzare l’incapsulamento per proteggere i dati, come gestire un array di oggetti e come implementare metodi per modificare e recuperare informazioni sulle canzoni. Queste competenze sono fondamentali per chiunque voglia approfondire la programmazione orientata agli oggetti in Java.
Ora che hai gli strumenti necessari, ti incoraggio a sperimentare con il codice e a provare a estendere il programma con nuove funzionalità. Buona programmazione!