C++ 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.

88 lines
2.6 KiB

4 years ago
  1. ## 1 Piste-luokan määritteleminen
  2. **Tehtävä:**
  3. Olet luvun teoriasivuja lukiessa oppinut, kuinka luokkia yksinkertaisimmillaan määritellään. Nyt tehtävänäsi on laatia määrittely luokalle "Piste", joka sisältää kaksi jäsenmuuttujaa: x- ja y-koordinaatit.
  4. Kyseiset tietojäsenet määritellään kokonaisluvuiksi ja ne nimetään seuraavasti: "x_" ja "y_". Koska pelkin tietojäsenin varustettu luokka on käytännössä käyttökelvoton, esitellään luokan määrittelyssä lisäksi äsenfunktiot "AsetaX", "AsetaY", "Siirra" ja "KerroPaikka".
  5. Koordinaattien arvojen asettamiseen käytettävään funktioita "AsetaX" ja "AsetaY". Funktiot ottavat vastaan niitä kutsuttaessa yhden kokonaislukuarvon sijoittaen tämän arvon funktiosta riippuen, joko jäsenmuuttujaan "x_", tai "y_". Asetusfunktiot eivät palauta arvoja.
  6. Jäsenfunktio "Siirra" ottaa vastaan kaksi kokonaislukuarvoa: x:n ja y:n siirtymät edellisessä järjestyksessä. "Siirra" liikuttaa pisteen koordinaatteja sille välitettyjen parametrien mukaisen määrän. "Siirra" ei palauta arvoa.
  7. Pisteen paikan kertomisesta vastaava funktio tulostaa pisteen koordinaatit allekkain esimerkkitulosteen mukaisesti. Funktiolle "KerroPaikka" ei välitetä parametreja, eikä se palauta arvoa.
  8. Muista, että tässä tehtävässä sinun tulee laatia vain luokan määrittely, joka tarkistetaan liittämällä se valmiisiin jäsenfunktioihin ja pääohjelmaan, joka käyttää luokan palveluita. Muista myös, että luokan määrittelyssä jäsenfunktiot on määriteltävä julkisiksi, kun taas jäsenmuuttujien tulee olla ns. sisäisiä.
  9. Example output:
  10. ```
  11. Pisteolio muodostettu ja koordinaatit asetettu.
  12. Pisteen x-koordinaatti: 34
  13. Pisteen y-koordinaatti: 100
  14. Pistettä siirretty.
  15. Pisteen x-koordinaatti: 54
  16. Pisteen y-koordinaatti: 67
  17. ```
  18. **Vastaus:**
  19. ```
  20. #include<iostream>
  21. using namespace std;
  22. class Piste
  23. {
  24. public:
  25. void AsetaX(int x);
  26. void AsetaY(int y);
  27. void Siirra(int x, int y);
  28. void KerroPaikka();
  29. private:
  30. int x_;
  31. int y_;
  32. };
  33. //** Pre-defined code in the assignment **//
  34. void Piste::AsetaX(int x)
  35. {
  36. x_ = x;
  37. }
  38. void Piste::AsetaY(int y)
  39. {
  40. y_ = y;
  41. }
  42. void Piste::Siirra(int x, int y)
  43. {
  44. x_ = x_ + x;
  45. y_ = y_ + y;
  46. }
  47. void Piste::KerroPaikka()
  48. {
  49. cout << "Pisteen x-koordinaatti: " << x_ << endl;
  50. cout << "Pisteen y-koordinaatti: " << y_ << endl;
  51. }
  52. int main()
  53. {
  54. Piste pikseli;
  55. pikseli.AsetaX(34);
  56. pikseli.AsetaY(100);
  57. cout << "Pisteolio muodostettu ja koordinaatit asetettu.\n"
  58. pikseli.KerroPaikka();
  59. pikseli.Siirra(20, -33);
  60. cout << "Pistettä siirretty.\n"
  61. pikseli.KerroPaikka();
  62. return 0;
  63. }
  64. //** ---------- ---------- ---------- **//
  65. ```