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.

136 lines
3.2 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ä harjoittelemme oliomuuttujien käyttöä. Tallenna osittain toteutettu luokka VahenevaLaskuri itsellesi tiedostoon VahenevaLaskuri.java:
  2. ```
  3. public class VahenevaLaskuri {
  4. private int arvo; // oliomuuttuja joka muistaa laskurin arvon
  5. public VahenevaLaskuri(int arvoAlussa) {
  6. this.arvo = arvoAlussa;
  7. }
  8. public void tulostaArvo() {
  9. System.out.println("arvo: " + this.arvo);
  10. }
  11. public void vahene() {
  12. // kirjoita tänne metodin toteutus
  13. // laskurin arvon on siis tarkoitus vähentyä yhdellä
  14. }
  15. // ja tänne muut metodit
  16. }
  17. Seuraavassa esimerkki miten pääohjelma käyttää vähenevää laskuria:
  18. public class Paaohjelma {
  19. public static void main(String[] args) {
  20. VahenevaLaskuri laskuri = new VahenevaLaskuri(10);
  21. laskuri.tulostaArvo();
  22. laskuri.vahene();
  23. laskuri.tulostaArvo();
  24. laskuri.vahene();
  25. laskuri.tulostaArvo();
  26. }
  27. }
  28. ```
  29. ```
  30. Pitäisi tulostua:
  31. arvo: 10
  32. arvo: 9
  33. arvo: 8
  34. ```
  35. VahenevaLaskuri-luokan konstruktorille annetaan parametrina alkuarvo. Esimerkin oliota laskuri luodessa laskurille välitetään parametrina arvo 10. Esimerkin laskuri-olioon liittyvään oliomuuttujaan arvoasetetaan siis aluksi arvo 10. Laskurin arvon voi tulostaa metodilla tulostaArvo(). Laskurilla tulee myös olla metodi vahene() joka vähentää laskurin arvoa yhdellä.
  36. --------------------
  37. **Osa 1: Metodin vahene() toteutus**
  38. Täydennä luokan runkoon metodin vahene() toteutus sellaiseksi, että se vähentää arvo -oliomuuttujaa yhdellä. Kun olet toteuttanut metodin vahene(), edellisen esimerkin pääohjelman tulee toimia esimerkkitulosteen mukaan.
  39. **Osa 2: Laskurin arvo ei saa olla negatiivinen**
  40. Täydennä metodin vahene() toteutus sellaiseksi, ettei laskurin arvo mene koskaan negatiiviseksi. Eli jos laskurin arvo on jo 0, ei vähennys sitä enää vähennä. Ehtolause auttaa tässä.
  41. **Osa 3: Laskurin arvon nollaus**
  42. Tee laskurille metodi public void nollaa() joka nollaa laskurin arvon, esim:
  43. ```
  44. public class Paaohjelma {
  45. public static void main(String[] args) {
  46. VahenevaLaskuri laskuri = new VahenevaLaskuri(100);
  47. laskuri.tulostaArvo();
  48. laskuri.nollaa();
  49. laskuri.tulostaArvo();
  50. laskuri.vahene();
  51. laskuri.tulostaArvo();
  52. }
  53. }
  54. ```
  55. ```
  56. Tulostaa:
  57. arvo: 100
  58. arvo: 0
  59. arvo: 0
  60. ```
  61. Huom! Hyödynnä tehtäväkuvauksessa annettuja Paaohjelma-esimerkkiluokkia ohjelmasi testaamisessa. VahenevaLaskuri-luokkasi ei saa sisältää main-metodia.
  62. ```
  63. Example output:
  64. == Testikoodi ==
  65. VahenevaLaskuri laskuri = new VahenevaLaskuri(10)
  66. laskuri.tulostaArvo();
  67. laskuri.vahene();
  68. laskuri.tulostaArvo();
  69. laskuri.vahene();
  70. laskuri.tulostaArvo();
  71. == Ohjelman tuloste ==
  72. arvo: 10
  73. arvo: 9
  74. arvo: 8
  75. ```
  76. ------------------
  77. **VahenevaLaskuri.java**
  78. ```
  79. public class VahenevaLaskuri {
  80. private int arvo; // oliomuuttuja joka muistaa laskurin arvon
  81. public VahenevaLaskuri(int arvoAlussa) {
  82. this.arvo = arvoAlussa;
  83. }
  84. public void tulostaArvo() {
  85. System.out.println("arvo: " + this.arvo);
  86. }
  87. public void vahene() {
  88. if (this.arvo > 0) {
  89. this.arvo -= 1;
  90. }
  91. }
  92. public void nollaa() {
  93. this.arvo = 0;
  94. }
  95. }
  96. ```