Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Konstruktori ja Attribuutit | Konstruktorit ja Destruktorit
Quizzes & Challenges
Quizzes
Challenges
/
C++ OOP

bookHaaste: Konstruktori ja Attribuutit

Yksi konstruktorien ensisijaisista käyttötarkoituksista on alustaa luokan attribuutit. Esimerkiksi oletuskonstruktoria voidaan käyttää asettamaan alkuarvot. Esimerkki:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

Jos et määritä olion nimi-attribuutille arvoa, se asetetaan oletuksena arvoksi underfined. Voit kokeilla poistaa tämän konstruktorin nähdäksesi, mitä muutoksia tapahtuu.

Attribuuttien alustaminen konstruktorilla

Kuten funktiot, konstruktorit voivat ottaa parametreja, jolloin olion luonnin yhteydessä voidaan antaa erilaisia arvoja. Voit myös ylikuormittaa ne käsittelemään vaihtelevia parametrimääriä.

main.cpp

main.cpp

copy
123456789101112131415161718
class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
Tehtävä

Swipe to start coding

Kuvittele, että rakennat yksinkertaista karttajärjestelmää. Sinun tulee luoda Location-luokka, joka edustaa pistettä kartalla nimellä ja koordinaateilla. Tehtävänäsi on toteuttaa konstruktori sekä metodi, joka laskee etäisyyden toiseen sijaintiin.

  1. Toteuta konstruktori joka alustaa kaikki kolme kenttää:
    • Konstruktorin tulee ottaa kolme parametria: std::string nimeä varten sekä kaksi double-arvoa x- ja y-koordinaateille.
    • Sisällä konstruktorissa parametrin name arvo asetetaan olion name-kenttään.
    • Parametrin x arvo asetetaan olion x-kenttään.
    • Parametrin y arvo asetetaan olion y-kenttään.
  2. Toteuta metodi distanceTo joka ottaa toisen Location-olion parametrina:
    • Käy läpi nykyisen olion ja toisen olion x- sekä y-koordinaatit.
    • Laske ero x-koordinaateissa: other.x - x.
    • Laske ero y-koordinaateissa: other.y - y.
    • Laske etäisyys kaavalla: sqrt(dx * dx + dy * dy).
    • Palauta laskettu etäisyys double-arvona.

Esimerkki

Location("Home", 0.0, 0.0) ja Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) ja Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) ja Location("Library", 2.0, 3.0) -> 5.0

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

close

bookHaaste: Konstruktori ja Attribuutit

Pyyhkäise näyttääksesi valikon

Yksi konstruktorien ensisijaisista käyttötarkoituksista on alustaa luokan attribuutit. Esimerkiksi oletuskonstruktoria voidaan käyttää asettamaan alkuarvot. Esimerkki:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

Jos et määritä olion nimi-attribuutille arvoa, se asetetaan oletuksena arvoksi underfined. Voit kokeilla poistaa tämän konstruktorin nähdäksesi, mitä muutoksia tapahtuu.

Attribuuttien alustaminen konstruktorilla

Kuten funktiot, konstruktorit voivat ottaa parametreja, jolloin olion luonnin yhteydessä voidaan antaa erilaisia arvoja. Voit myös ylikuormittaa ne käsittelemään vaihtelevia parametrimääriä.

main.cpp

main.cpp

copy
123456789101112131415161718
class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
Tehtävä

Swipe to start coding

Kuvittele, että rakennat yksinkertaista karttajärjestelmää. Sinun tulee luoda Location-luokka, joka edustaa pistettä kartalla nimellä ja koordinaateilla. Tehtävänäsi on toteuttaa konstruktori sekä metodi, joka laskee etäisyyden toiseen sijaintiin.

  1. Toteuta konstruktori joka alustaa kaikki kolme kenttää:
    • Konstruktorin tulee ottaa kolme parametria: std::string nimeä varten sekä kaksi double-arvoa x- ja y-koordinaateille.
    • Sisällä konstruktorissa parametrin name arvo asetetaan olion name-kenttään.
    • Parametrin x arvo asetetaan olion x-kenttään.
    • Parametrin y arvo asetetaan olion y-kenttään.
  2. Toteuta metodi distanceTo joka ottaa toisen Location-olion parametrina:
    • Käy läpi nykyisen olion ja toisen olion x- sekä y-koordinaatit.
    • Laske ero x-koordinaateissa: other.x - x.
    • Laske ero y-koordinaateissa: other.y - y.
    • Laske etäisyys kaavalla: sqrt(dx * dx + dy * dy).
    • Palauta laskettu etäisyys double-arvona.

Esimerkki

Location("Home", 0.0, 0.0) ja Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) ja Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) ja Location("Library", 2.0, 3.0) -> 5.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 2. Luku 2
single

single

some-alt