java.lang.Object
it.unimi.di.prog2.temisvolti.playfy.Album
All Implemented Interfaces:
Iterable<Album.Brano>

public class Album extends Object implements Iterable<Album.Brano>
Classe concreta che rappresenta un album.
  • Field Details

    • titolo

      public final String titolo
      Il titolo dell'album.
    • durata

      public final Durata durata
      La durata complessiva dell'album.
    • brani

      private final Album.Brano[] brani
      I brani di cui è costituito l'album.
  • Constructor Details

    • Album

      public Album(String titolo, List<String> titoli, List<Durata> durate)
      Costruisce un album a partire da due liste "parallele" di titoli e durate.
      Parameters:
      titolo - titolo dell'album.
      titoli - lista dei titoli.
      durate - lista delle durate.
      Throws:
      NullPointerException - se uno dei parametri è null, o una delle liste contine un null.
      IllegalArgumentException - se il titolo dell'album è vuoto, il numero di titoli è diverso da quello delle durate, il numero di titoli e durate è 0, uno dei titoli è vuoto, una delle durate è 0.
  • Method Details

    • numeroBrani

      public int numeroBrani()
      Restituisce il numero di brani dell'album.
      Returns:
      il numero di brani di questo album.
    • brano

      public Album.Brano brano(int pos)
      Restituisce il brano che ha nell'album la posizione data.
      Parameters:
      pos - la posizione.
      Returns:
      il brano.
      Throws:
      IndexOutOfBoundsException - se la posizione non è compresa tra 1 e il numero di brani dell'album.
    • posizione

      public int posizione(Album.Brano brano)
      Restituisce la posizione nell'album del brano dato.
      Parameters:
      brano - il brano.
      Returns:
      la sua posizione nell'album, o 0 se il brano non appartiene all'album.
      Throws:
      NullPointerException - se il brano è null
    • brano

      public Album.Brano brano(String titolo)
      Restituisce il primo brano con un dato titolo.

      Non è garantito che l'album contenga un solo brano con un dato titolo; pertanto se il valore della stringa `titolo` corrisponde al titolo di almeno un brano di quest'album, questo metodo è tale che:

      • brano.titolo.equals(titolo),
      • per ogni pos &lt; posizione(brano) si ha che !brano(pos).titolo.equals(titolo).
      dove brano = brano(titolo).
      Parameters:
      titolo - il titolo.
      Returns:
      un brano tale la posizione del primo brano con tale titolo, oppure null se nessun brano ha tale titolo.
      Throws:
      NullPointerException - se il titolo è null.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • iterator

      public Iterator<Album.Brano> iterator()
      Specified by:
      iterator in interface Iterable<Album.Brano>