|
|
- 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](https://www.youtube.com/results?search_query=eclipse+generate+getters+and+setters)
-
- **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;
- }
- }
-
- }
- ```
|