Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Luokan Metodit | C++:n OOP:n Perusteet
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C++ OOP

bookHaaste: Luokan Metodit

Luokan metodit ovat pohjimmiltaan vain funktioita, jotka on määritelty luokan sisällä. Niitä käytetään määrittämään ne toiminnot tai käyttäytymiset, joita luokan oliot voivat suorittaa.

Metodit muokkaavat usein luokan attribuutteja tai suorittavat toimintoja, jotka liittyvät olioihin.

Metodien toteutus luokan ulkopuolella

Metodit voidaan määritellä class-määrittelyn ulkopuolella käyttämällä alueen erotteluoperaattoria (::). Tämä tehdään usein, jotta määrittely voidaan erottaa otsikkotiedostoon ja toteutus lähdetiedostoon. Näin se tehdään:

Example.h

Example.h

Example.cpp

Example.cpp

copy
1234
class Example { public: void Method(); };

Ei ole pakollista luoda kahta erillistä tiedostoa tätä tarkoitusta varten; voit toteuttaa sen yhdessä tiedostossa, ja tietyissä tilanteissa tämä osoittautuu hyödylliseksi.

main.cpp

main.cpp

copy
12345678
#include <iostream> class Example { public: void Method(); }; void Example::Method() { std::cout << "Method was called" << std::endl; }

Voit ratkaista tehtävän haluamallasi tavalla. Yleinen hyvä käytäntö on kuitenkin eriyttää määrittely ja toteutus.

Tehtävä

Swipe to start coding

Kuvittele, että rakennat yksinkertaista järjestelmää tuotteen hinnan laskemiseksi alennuksen kanssa. Järjestelmän tulee myös noudattaa erityistä sääntöä: mikään alennus ei saa ylittää 50 %, vaikka suurempi arvo annettaisiin.

Sinulla on luokka Product, jossa on seuraavat kentät:

  • price tyyppiä float
  • discount tyyppiä float

Sinun tulee toteuttaa metodi getFinalPrice(), joka:

  1. Tarkistaa alennuksen arvon: jos se on yli 50 %, aseta se arvoon 50 %.
  2. Laskee lopullisen hinnan ja palauttaa sen:
    • Laske sulkujen sisällä alennuksen määrä kaavalla (price * discount / 100)
    • Vähennä alennuksen määrä price-kentästä saadaksesi lopullisen hinnan alennuksen jälkeen

Esimerkki

price = 100.0, discount = 60.0 -> 50.0
price = 80.0, discount = 30.0 -> 56.0
price = 50.0, discount = 20.0 -> 40.0

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 5
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain what the scope resolution operator does?

Why is it considered good practice to separate declaration and implementation?

Can you give an example of defining a method outside the class?

close

bookHaaste: Luokan Metodit

Pyyhkäise näyttääksesi valikon

Luokan metodit ovat pohjimmiltaan vain funktioita, jotka on määritelty luokan sisällä. Niitä käytetään määrittämään ne toiminnot tai käyttäytymiset, joita luokan oliot voivat suorittaa.

Metodit muokkaavat usein luokan attribuutteja tai suorittavat toimintoja, jotka liittyvät olioihin.

Metodien toteutus luokan ulkopuolella

Metodit voidaan määritellä class-määrittelyn ulkopuolella käyttämällä alueen erotteluoperaattoria (::). Tämä tehdään usein, jotta määrittely voidaan erottaa otsikkotiedostoon ja toteutus lähdetiedostoon. Näin se tehdään:

Example.h

Example.h

Example.cpp

Example.cpp

copy
1234
class Example { public: void Method(); };

Ei ole pakollista luoda kahta erillistä tiedostoa tätä tarkoitusta varten; voit toteuttaa sen yhdessä tiedostossa, ja tietyissä tilanteissa tämä osoittautuu hyödylliseksi.

main.cpp

main.cpp

copy
12345678
#include <iostream> class Example { public: void Method(); }; void Example::Method() { std::cout << "Method was called" << std::endl; }

Voit ratkaista tehtävän haluamallasi tavalla. Yleinen hyvä käytäntö on kuitenkin eriyttää määrittely ja toteutus.

Tehtävä

Swipe to start coding

Kuvittele, että rakennat yksinkertaista järjestelmää tuotteen hinnan laskemiseksi alennuksen kanssa. Järjestelmän tulee myös noudattaa erityistä sääntöä: mikään alennus ei saa ylittää 50 %, vaikka suurempi arvo annettaisiin.

Sinulla on luokka Product, jossa on seuraavat kentät:

  • price tyyppiä float
  • discount tyyppiä float

Sinun tulee toteuttaa metodi getFinalPrice(), joka:

  1. Tarkistaa alennuksen arvon: jos se on yli 50 %, aseta se arvoon 50 %.
  2. Laskee lopullisen hinnan ja palauttaa sen:
    • Laske sulkujen sisällä alennuksen määrä kaavalla (price * discount / 100)
    • Vähennä alennuksen määrä price-kentästä saadaksesi lopullisen hinnan alennuksen jälkeen

Esimerkki

price = 100.0, discount = 60.0 -> 50.0
price = 80.0, discount = 30.0 -> 56.0
price = 50.0, discount = 20.0 -> 40.0

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 5
single

single

some-alt