Java fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

3.6 KiB

Tässä tehtävässä tarkoituksena on hyödyntää edellisessä tehtävässä toteutettua Artist-luokkaa toisen luokan kanssa. Musiikkikappaleeseen on siis tarkoitus tallentaa tieto siitä, minkä artistin kappale se on. Tieto tallennetaan asettamalla Artist-olio talteen Song-olion oliomuuttujaan.

Kirjoita uusi luokka nimeltä Song. Song-luokassa tulee olla seuraavat oliomuuttujat ja -metodit:

Luokka Song

  • oliomuuttujat:
    • private String title
    • private Artist artist
    • private int year (kappaleen julkaisuvuosi)
    • private int length (kappaleen kesto sekunteina)
  • konstruktorit:
    • public Song()
      • Huom! Luokalle ei ole pakko toteuttaa konstruktoria, mutta jos toteutat sellaisen, konstruktorissa ei saa olla parametrimuuttujia.
  • julkiset metodit:
    • getTitle
    • setTitle
    • getArtist
    • setArtist
    • getYear
    • setYear
    • getLength
    • setLength
    • toString

Getterien ja setterien automaattiseen generointiin voit käyttää myös Eclipsen koodigeneraattoria: Generaattori

toString-metodi

Song-luokan toString-metodin tulee palauttaa "KAPPALEEN_NIMI by ARTISTIN_NIMI". Esimerkiksi:

"Hooked on a Feeling by David Hasselhoff"

Jos Song-oliolle ei ole asetettu artistia tai artistilla ei ole nimeä, toString-metodin tulee palauttaa vain kappaleen nimi, esimerkiksi:

"Hooked on a Feeling"

Artist-luokan toteutuksen on oltava täsmälleen samanlainen kuin edellisessä tehtävässä. Sinun ei tarvitse palauttaa omaa pääohjelmaa ja kirjoittamasi luokat eivät saa tulostaa mitään.

Example output:
= Suoritetaan ohjelma =
Artist artist = new Artist("Rick Astley", 1966);
System.out.println(artist);
Song song = new Song();
song.setTitle("Never Gonna Give You Up");
song.setYear(1987);
song.setLength(215);
System.out.println(song);
song.setArtist(artist);
System.out.println(song);
= Ohjelman tuloste =
Rick Astley
Never Gonna Give You Up
Never Gonna Give You Up by Rick Astley

Artist.java

public class Artist {
private String name;
private int yearOfBirth;
public Artist(String name, int yearOfBirth) {
this.name = name;
this.yearOfBirth = yearOfBirth;
}
public void setName(String name) {
this.name = name;
}
public void setYearOfBirth(int yearOfBirth) {
this.yearOfBirth = yearOfBirth;
}
public String getName() {
return this.name;
}
public int getYearOfBirth() {
return this.yearOfBirth;
}
@Override
public String toString() {
return this.name;
}
}

Song.java

public class Song {
private String title;
private Artist artist;
private int year;
private int length;
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public Artist getArtist() {
return this.artist;
}
public void setArtist(Artist artist) {
this.artist = artist;
}
public int getYear() {
return this.year;
}
public void setYear(int year) {
this.year = year;
//return this.year;
}
public int getLength() {
return this.length;
}
public void setLength(int length) {
this.length = length;
//return this.length;
}
public String toString() {
if (this.artist != null) {
return this.title + " by " + this.artist;
} else {
return this.title;
}
}
}