olen tässä väsäämässä pientä peliä c++:lla ja SDL:llä ja olen ajatellut säilöä pelaajan tiedot PELAAJA luokkaan. Aloin miettiä pitäisikö kaikki tiedot sijoittaa public:-osioon vai pitäisikö tehdä tyyliin
class PELAAJA { private: int x; int y; public: void setx(int n); void sety(int n); //jne...
tavalla. Olisi mukava saada mielipiteitä, kun en ole oikein ymmärtänyt mitä hyötyä private-osiosta on. Tarvii tehdä vain turhaan functioita.
Juuri noinhan se käsittääkseni pitää tehdä jotta tiedon kapselointi toteutuisi.
Hyöty tästä on siinä, että luokan muuttujia ei päästä sotkemaan muuaalta ohjelmasta. Lisäksi setx()-funktioon voi laittaa tarkistuksia, että epäsopivaa arvoa ei voi asettaa.
private-osion merkitys on se, että silloin et voi vahingossa sörkkiä niitä tietoja muista funktioista käsin. Se, mikä on paras keino, riippuu täysin ohjelmointityylistäsi ja virhealttiudestasi. Tietenkin jokaisen Set- tai Get-funktion kutsu käyttää hieman enemmän aikaa kuin pelkkä suora tiedon lukeminen, mutta tuskin merkittävästi. Itse päädyin mietinnän jälkeen siihen, että kaikki on publicia. Joissakin luokissa kuitenkin säilytän hakufunktiot esim. silloin, kun hakeminen ei tapahdu suoraan muuttujasta vaan esim. pitää saada osoitin tiettyyn taulukon alkioon tai jos haluan hakea jonkin liukuluvun valmiiksi pyöristettynä kokonaislukuna. Käytännössä ero on aika pieni, mutta tämä sopii paremmin ohjelmointityyliini. Poikkeuksena minulla on luokka, joka hoitaa kaiken grafiikan, josta aivan ehdottomasti haluan ulos näkyviin vain yksinkertaiset metodit. "Hyviin" ohjelmointitapoihin kuuluu kuitenkin privaten käyttö.
jaa kiitoksia mielipiteistä olen itsekkin ymmärtänyt privaten käyttämisen oikeaoppisemmaksi, mutten ollut varma olisiko siitä todella niin paljon hyötyä.
Periyttäessä sillä on myös väliä onko kantaluokan jäsen public, protected vai private.
tuli vielä mieleen kannattaako luokkien sisällel laittaa toisia luokkia...
Voi ja kannattaa niitä laittaa jäseniksi siinä missä perustietotyyppejäkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.