public class Disk {
private float price;
private List<Song> songs;
public Disk() {}
float price, List<Song> songs) {
this.name = name;
this.author = author;
this.pubDate = pubDate;
this.genre = genre;
this.price = price;
this.songs = songs;
}
// getters y setters
@Override
String data
= "Nombre: " + name
+ "\nAutor: " + author +
"\nF. Publicación: " + pubDate +
"\nGénero: " + genre +
"\nPrecio: " + price + "\n";
String songsData
= "Canciones: \n"; for(Song song : songs) {
songsData +=
"Nombre: " + song.getName() +
"Duración: " + song.getDuration() +
"Artistas extras: " + song.getExtrasArt() +
"Año: " + song.getYear();
}
data += songsData;
return data;
}
}
public class Song {
private String extrasArt
= "Ninguno";
public Song() {}
this.name = name;
this.duration = duration;
this.year = year;
this.extrasArt = extrasArt;
}
// getters y setters
}
public class DiskManager {
private final static Scanner READER;
static { READER
= new Scanner
(System.
in); }
public static Disk newDisk(List<Song> songs) {
System.
out.
println("Escribe los datos del disco en el siguiente orden:\n"); System.
out.
println("1. Nombre\n2.Autor\n3.F. publicación\n4.Género\n5.Precio");
float price;
discName = READER.nextLine();
author = READER.nextLine();
genre = READER.nextLine();
price = READER.nextFloat();
return new Disk(discName, author, pubDate, genre, price, songs);
}
public static List<Song> newSongs() {
List<Song> songs = new ArrayList<>();
System.
out.
println("¿Cuántas canciones desea añadir?"); Byte songsQuantity
= READER.
nextByte();
for(byte i=0; i<songsQuantity; i++) {
System.
out.
println("Ingrese los datos en el siguiente orden:\n"); System.
out.
println("1. Nombre\n2. Duración\n3. Año\n4. Artistas extras");
songName = READER.nextLine();
duration = READER.next();
year = READER.next();
extrasArt = READER.nextLine();
songs.add(new Song(songName, duration, year, extrasArt));
}
return songs;
}
public static void main
(String[] args
) { List<Disk> disks = new ArrayList<>();
/* Registrar discos */
System.
out.
println("¿Cuántos discos desea registrar?"); byte discQuantity = reader.nextByte();
/* Registra info del disco */
for(byte i=0; i<discQuantity; i++) {
List<Song> songs = DiskManager.newSongs();
Disk disk = DiskManager.newDisk(songs);
disks.add(disk);
}
/* Mostrar información del CD */
for(Disk disk : disks) {
System.
out.
println("[+] Información del disco:\n\n"); }
}
El método
toString() es heredado de Object, lo que quiere decir que todo objeto hereda el método toString(). Éste método es llamado automáticamente cuando se detecta que un objeto está queriendo ser imprimido por el flujo de salida estándar de la clase System, así, se llama automáticamente al método toString() devolviendo éste lo que se ha programado.
La anotación @Override, significa que estás
sobreescribiendo ese método. Es decir, al método ya existente que ha heredado, le añade funcionalidad. Esto quiere decir, que está sobreescrito, personalizado.
Puedes simular una BBDD también haciendo uso de NavigableMap. No lo hice para que no te confundas. Cualquier duda, la expones.
Saludos.
PD: Es muy probable que el código tenga errores porque lo he hecho rápido en un editor sencillo.