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.

161 lines
3.6 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
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: [Generaattori](https://www.youtube.com/results?search_query=eclipse+generate+getters+and+setters)
  23. **toString-metodi**
  24. Song-luokan toString-metodin tulee palauttaa "KAPPALEEN_NIMI by ARTISTIN_NIMI". Esimerkiksi:
  25. ```
  26. "Hooked on a Feeling by David Hasselhoff"
  27. ```
  28. Jos Song-oliolle ei ole asetettu artistia tai artistilla ei ole nimeä, toString-metodin tulee palauttaa vain kappaleen nimi, esimerkiksi:
  29. ```
  30. "Hooked on a Feeling"
  31. ```
  32. 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.
  33. ```
  34. Example output:
  35. = Suoritetaan ohjelma =
  36. Artist artist = new Artist("Rick Astley", 1966);
  37. System.out.println(artist);
  38. Song song = new Song();
  39. song.setTitle("Never Gonna Give You Up");
  40. song.setYear(1987);
  41. song.setLength(215);
  42. System.out.println(song);
  43. song.setArtist(artist);
  44. System.out.println(song);
  45. = Ohjelman tuloste =
  46. Rick Astley
  47. Never Gonna Give You Up
  48. Never Gonna Give You Up by Rick Astley
  49. ```
  50. ------------------
  51. **Artist.java**
  52. ```
  53. public class Artist {
  54. private String name;
  55. private int yearOfBirth;
  56. public Artist(String name, int yearOfBirth) {
  57. this.name = name;
  58. this.yearOfBirth = yearOfBirth;
  59. }
  60. public void setName(String name) {
  61. this.name = name;
  62. }
  63. public void setYearOfBirth(int yearOfBirth) {
  64. this.yearOfBirth = yearOfBirth;
  65. }
  66. public String getName() {
  67. return this.name;
  68. }
  69. public int getYearOfBirth() {
  70. return this.yearOfBirth;
  71. }
  72. @Override
  73. public String toString() {
  74. return this.name;
  75. }
  76. }
  77. ```
  78. ------------------
  79. **Song.java**
  80. ```
  81. public class Song {
  82. private String title;
  83. private Artist artist;
  84. private int year;
  85. private int length;
  86. public String getTitle() {
  87. return this.title;
  88. }
  89. public void setTitle(String title) {
  90. this.title = title;
  91. }
  92. public Artist getArtist() {
  93. return this.artist;
  94. }
  95. public void setArtist(Artist artist) {
  96. this.artist = artist;
  97. }
  98. public int getYear() {
  99. return this.year;
  100. }
  101. public void setYear(int year) {
  102. this.year = year;
  103. //return this.year;
  104. }
  105. public int getLength() {
  106. return this.length;
  107. }
  108. public void setLength(int length) {
  109. this.length = length;
  110. //return this.length;
  111. }
  112. public String toString() {
  113. if (this.artist != null) {
  114. return this.title + " by " + this.artist;
  115. } else {
  116. return this.title;
  117. }
  118. }
  119. }
  120. ```