Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Pääsynmäärittäjien Avainsanat | Kapseloinnin Yleiskatsaus
C++ OOP

bookPääsynmäärittäjien Avainsanat

Kapselointi saavutetaan pääasiassa käyttämällä näkyvyysmääreitä. Näillä määreillä säädellään, kuinka laajasti ohjelman muut osat voivat käyttää luokan jäseniä (sekä tietoja että funktioita). Kolme pääasiallista näkyvyysmäärettä ovat:

  • private: saatavilla vain saman luokan sisällä ja piilotettu luokan ulkopuolelta. Tämä on luokan jäsenten oletusnäkyvyys;

  • protected: saatavilla luokan ja sen perivien luokkien sisällä. Nämä ovat laajemmin saatavilla kuin private-jäsenet, mutta tarjoavat silti tietosuojaa;

  • public: saatavilla mistä tahansa ohjelman osasta. Vaikka public-jäsenet eivät ole kapseloituja, ne ovat olennaisia määriteltäessä luokan ulospäin tarjoamaa rajapintaa.

Note
Huomio

Näkyvyysmääre pysyy voimassa, kunnes toinen määre määritellään tai kohdataan.

main.cpp

main.cpp

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

Kokeile poistaa tai muuttaa public-avainsanaa ja katso, mitä tapahtuu.

Samoin kuin kuljettaja voi käyttää autoa ymmärtämättä sen sisäistä rakennetta, käyttäjien ja ohjelmoijien ei tarvitse olla huolissaan luokan private-attribuuteista ja -metodeista. Noudata näitä sääntöjä:

  • Pidä tietojäsenet private tai protected;
  • Tarjoa public-metodit private-datan käsittelyyn ja muokkaamiseen;
  • Varmista, että nämä metodit tekevät vain sen, mihin ne on tarkoitettu, paljastamatta sisäistä logiikkaa.

Hyvin kapseloitu class paljastaa vain käyttäjälle tarpeelliset asiat ja piilottaa sisäisen tilan sekä toteutuksen yksityiskohdat.

question mark

Mitä tapahtuu, jos yrität käyttää luokan yksityistä jäsentä suoraan luokan ulkopuolelta?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you give an example of encapsulation in code?

Why is encapsulation important in object-oriented programming?

How do access modifiers differ in other programming languages?

bookPääsynmäärittäjien Avainsanat

Pyyhkäise näyttääksesi valikon

Kapselointi saavutetaan pääasiassa käyttämällä näkyvyysmääreitä. Näillä määreillä säädellään, kuinka laajasti ohjelman muut osat voivat käyttää luokan jäseniä (sekä tietoja että funktioita). Kolme pääasiallista näkyvyysmäärettä ovat:

  • private: saatavilla vain saman luokan sisällä ja piilotettu luokan ulkopuolelta. Tämä on luokan jäsenten oletusnäkyvyys;

  • protected: saatavilla luokan ja sen perivien luokkien sisällä. Nämä ovat laajemmin saatavilla kuin private-jäsenet, mutta tarjoavat silti tietosuojaa;

  • public: saatavilla mistä tahansa ohjelman osasta. Vaikka public-jäsenet eivät ole kapseloituja, ne ovat olennaisia määriteltäessä luokan ulospäin tarjoamaa rajapintaa.

Note
Huomio

Näkyvyysmääre pysyy voimassa, kunnes toinen määre määritellään tai kohdataan.

main.cpp

main.cpp

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

Kokeile poistaa tai muuttaa public-avainsanaa ja katso, mitä tapahtuu.

Samoin kuin kuljettaja voi käyttää autoa ymmärtämättä sen sisäistä rakennetta, käyttäjien ja ohjelmoijien ei tarvitse olla huolissaan luokan private-attribuuteista ja -metodeista. Noudata näitä sääntöjä:

  • Pidä tietojäsenet private tai protected;
  • Tarjoa public-metodit private-datan käsittelyyn ja muokkaamiseen;
  • Varmista, että nämä metodit tekevät vain sen, mihin ne on tarkoitettu, paljastamatta sisäistä logiikkaa.

Hyvin kapseloitu class paljastaa vain käyttäjälle tarpeelliset asiat ja piilottaa sisäisen tilan sekä toteutuksen yksityiskohdat.

question mark

Mitä tapahtuu, jos yrität käyttää luokan yksityistä jäsentä suoraan luokan ulkopuolelta?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2
some-alt