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
C++ OOP
Osio 2. Luku 2
single

single

Haaste: Konstruktori ja Attribuutit

Pyyhkäise näyttääksesi valikon

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

main.cpp

main.cpp

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

Jos et määritä arvoa objektin name-attribuutille, 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. Konstruktorit voidaan myös ylikuormittaa käsittelemään vaihtelevaa määrää argumentteja.

main.cpp

main.cpp

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ä

Pyyhkäise aloittaaksesi koodauksen

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 etäisyyden laskemiseen toiseen sijaintiin.

  1. Toteuta konstruktori, joka alustaa kaikki kolme kenttää:
    • Konstruktorin tulee ottaa kolme parametria: std::string nimelle sekä kaksi double arvoa x ja y.
    • Aseta parametrina saatu nimi olion name-kenttään.
    • Aseta parametrina saatu x-koordinaatti olion x-kenttään.
    • Aseta parametrina saatu y-koordinaatti olion y-kenttään.
  2. Toteuta metodi distanceTo, joka ottaa toisen Location-olion parametrina:
    • Käytä sekä nykyisen olion että toisen olion x-koordinaatteja ja y-koordinaatteja.
    • Laske erotus x-koordinaateille: other.x - x.
    • Laske erotus y-koordinaateille: other.y - y.
    • Laske etäisyys kaavalla: sqrt(dx * dx + dy * dy).
    • Palauta laskettu etäisyys double-tyyppisenä.

Example

Location("Home", 0.0, 0.0) and Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) and Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) and 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

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

some-alt