|
|
- Tässä harjoituksessa hyödynnetään edellisessä harjoituksessa kirjoittamiasi Artist- ja Song-luokkia. Tehtäväsi on hyödyntää edellä mainittuja luokkia ja kirjoittaa uusi Playlist-niminen luokka. Kirjoita Playlist-luokka omaan tiedostoonsa. Artist- ja Song-luokkia sinun ei tarvitse palauttaa, ne löytyvät Viopesta valmiina.
-
- Playlist-luokassa tulee olla seuraavat instanssimuuttujat, konstruktorit ja metodit:
-
- - yksityiset instanssimuuttujat:
- - ArrayList<Song> songs
- - julkiset konstruktorit:
- - Playlist()
- luo soittolistalle uusi songs-lista täällä
- - julkiset metodit:
- - void addSong(Song song)
- lisää annetun kappaleen songs-listalle viimeiseksi
- - Song getSong(int index)
- palauttaa listalta kohdassa index olevan kappaleen, tai null jos kohdassa ei ole kappaletta. Vertaa tässä metodissa annettua indeksiä songs-listan pituuteen ennen kuin kutsut listan get-metodia!
- - int getTotalLength()
- laskee soittolistan kappaleiden yhteiskeston sekunteina ja palauttaa tuloksen
- - String toString()
- Playlist-luokan toString-metodin tulee palauttaa merkkijono, jossa kutakin kappaletta kohden on yksi rivi. Rivin tulee alkaa numerolla ja kaksoispisteellä, ja niiden jälkeen tulee olla kappaleen toString-metodin palauttama merkkijonoesitys. Huomaa, että toString ei saa tulostaa mitään, vaan sen tulee palauttaa muodostettu merkkijono. Esimerkiksi:
-
- ```
- 1: Never Gonna Give You Up by Rick Astley
- 2: Hooked on a Feeling by David Hasselhoff
- ```
-
- Tässä harjoituksessa sinun ei tarvitse palauttaa omaa pääohjelmaa ja tehtävänannossa vaaditut metodit eivät saa tulostaa mitään. Oman pääohjelman kirjoittaminen luokan testaamiseksi on kuitenkin erittäin suositeltavaa.
-
- Tässä tehtävässä esiintyvän kappaleiden pituuksien yhteenlaskun hahmottamiseksi on tehty videotallenne, jossa ratkaistaan vastaavaa ongelmaa pelaajien pituuksien yhteenlaskun muodossa. Vastaavasti toString-metodin toteutuksessa voit hyödyntää videotallennetta jossa käydään läpi listalla olevia merkkijonoja, jotka yhdistetään toistorakenteessa yhdeksi.
-
- ```
- Example output:
- = Suoritetaan ohjelma =
-
- Playlist playlist = new Playlist();
-
- Artist artist = new Artist("Rick Astley", 1966);
-
- Song song = new Song();
- song.setTitle("Never Gonna Give You Up");
- song.setYear(1987);
- song.setLength(215);
- song.setArtist(artist);
-
- playlist.addSong(song);
-
- System.out.println(playlist);
- System.out.println(playlist.getTotalLength());
-
- Artist artist2 = new Artist("David Hasselhoff", 1952);
-
- Song song2 = new Song();
- song2.setTitle("Hooked on a Feeling");
- song2.setYear(1997);
- song2.setLength(211);
- song2.setArtist(artist2);
-
- playlist.addSong(song2);
-
- System.out.println(playlist);
- System.out.println(playlist.getTotalLength());
-
-
- = Ohjelman tuloste =
-
- 1: Never Gonna Give You Up by Rick Astley
- 215
- 1: Never Gonna Give You Up by Rick Astley
- 2: Hooked on a Feeling by David Hasselhoff
- 426
- ```
-
- ------------------
-
- ```
- import java.util.ArrayList;
-
- public class Playlist {
-
- private ArrayList<Song> songs = new ArrayList<Song>();
-
- public Playlist() {
- // luo soittolistalle uusi songs-lista täällä
- this.songs = songs;
- }
-
- public void addSong(Song song) {
- // lisää annetun kappaleen songs-listalle viimeiseksi
- this.songs.add(song);
- }
-
- public Song getSong(int index) {
- // palauttaa listalta kohdassa index olevan kappaleen, tai null jos kohdassa ei ole kappaletta.
- // Vertaa tässä metodissa annettua indeksiä songs-listan pituuteen ennen kuin kutsut listan get-metodia!
- if (index < this.songs.size() - 1) {
- return this.songs.get(index);
- } else {
- return null;
- }
- }
-
- public int getTotalLength() {
- // laskee soittolistan kappaleiden yhteiskeston sekunteina ja palauttaa tuloksen
- int l = 0;
- for (int i = 0; i < this.songs.size(); i++) {
- l += this.songs.get(i).getLength();
- }
- return l;
- }
-
- @Override
- public String toString() {
- // Playlist-luokan toString-metodin tulee palauttaa merkkijono, jossa kutakin kappaletta kohden on yksi rivi.
- // Rivin tulee alkaa numerolla ja kaksoispisteellä, ja niiden jälkeen tulee olla kappaleen toString-metodin
- // palauttama merkkijonoesitys. Huomaa, että toString ei saa tulostaa mitään, vaan sen tulee palauttaa
- // muodostettu merkkijono. Esimerkiksi:
-
- // 1: Never Gonna Give You Up by Rick Astley
- // 2: Hooked on a Feeling by David Hasselhoff
-
- String strConst = "";
- for (int i = 0; i < this.songs.size(); i++) {
- strConst += (i + 1) + ": " + this.songs.get(i) + "\n";
- }
- return strConst;
-
- }
- }
- ```
|