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.

162 lines
3.6 KiB

4 years ago
  1. 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.
  2. Kirjoita uusi luokka nimeltä Song. Song-luokassa tulee olla seuraavat oliomuuttujat ja -metodit:
  3. Luokka Song
  4. - oliomuuttujat:
  5. - private String title
  6. - private Artist artist
  7. - private int year (kappaleen julkaisuvuosi)
  8. - private int length (kappaleen kesto sekunteina)
  9. - konstruktorit:
  10. - public Song()
  11. - Huom! Luokalle ei ole pakko toteuttaa konstruktoria, mutta jos toteutat sellaisen, konstruktorissa ei saa olla parametrimuuttujia.
  12. - julkiset metodit:
  13. - getTitle
  14. - setTitle
  15. - getArtist
  16. - setArtist
  17. - getYear
  18. - setYear
  19. - getLength
  20. - setLength
  21. - toString
  22. Getterien ja setterien automaattiseen generointiin voit käyttää myös Eclipsen koodigeneraattoria.
  23. Generaattori: https://www.youtube.com/results?search_query=eclipse+generate+getters+and+setters
  24. **toString-metodi**
  25. Song-luokan toString-metodin tulee palauttaa "KAPPALEEN_NIMI by ARTISTIN_NIMI". Esimerkiksi:
  26. ```
  27. "Hooked on a Feeling by David Hasselhoff"
  28. ```
  29. Jos Song-oliolle ei ole asetettu artistia tai artistilla ei ole nimeä, toString-metodin tulee palauttaa vain kappaleen nimi, esimerkiksi:
  30. ```
  31. "Hooked on a Feeling"
  32. ```
  33. 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.
  34. ```
  35. Example output:
  36. = Suoritetaan ohjelma =
  37. Artist artist = new Artist("Rick Astley", 1966);
  38. System.out.println(artist);
  39. Song song = new Song();
  40. song.setTitle("Never Gonna Give You Up");
  41. song.setYear(1987);
  42. song.setLength(215);
  43. System.out.println(song);
  44. song.setArtist(artist);
  45. System.out.println(song);
  46. = Ohjelman tuloste =
  47. Rick Astley
  48. Never Gonna Give You Up
  49. Never Gonna Give You Up by Rick Astley
  50. ```
  51. ------------------
  52. ```
  53. // Artist.java
  54. public class Artist {
  55. private String name;
  56. private int yearOfBirth;
  57. public Artist(String name, int yearOfBirth) {
  58. this.name = name;
  59. this.yearOfBirth = yearOfBirth;
  60. }
  61. public void setName(String name) {
  62. this.name = name;
  63. }
  64. public void setYearOfBirth(int yearOfBirth) {
  65. this.yearOfBirth = yearOfBirth;
  66. }
  67. public String getName() {
  68. return this.name;
  69. }
  70. public int getYearOfBirth() {
  71. return this.yearOfBirth;
  72. }
  73. @Override
  74. public String toString() {
  75. return this.name;
  76. }
  77. }
  78. ```
  79. ------------------
  80. ```
  81. // Song.java
  82. public class Song {
  83. private String title;
  84. private Artist artist;
  85. private int year;
  86. private int length;
  87. public String getTitle() {
  88. return this.title;
  89. }
  90. public void setTitle(String title) {
  91. this.title = title;
  92. }
  93. public Artist getArtist() {
  94. return this.artist;
  95. }
  96. public void setArtist(Artist artist) {
  97. this.artist = artist;
  98. }
  99. public int getYear() {
  100. return this.year;
  101. }
  102. public void setYear(int year) {
  103. this.year = year;
  104. //return this.year;
  105. }
  106. public int getLength() {
  107. return this.length;
  108. }
  109. public void setLength(int length) {
  110. this.length = length;
  111. //return this.length;
  112. }
  113. public String toString() {
  114. if (this.artist != null) {
  115. return this.title + " by " + this.artist;
  116. } else {
  117. return this.title;
  118. }
  119. }
  120. }
  121. ```