Originariamente inviato da TheDark191
Ora mi è chiara la teoria più o meno ma mi hai fatto sorgere un altro dubbio:
Qual è la differenza tra protetti e privati? privati significa che al di fuori dei metodi non posso utilizzare gli attributi?
Sta scritta nella guida che t'ho linkato poco fa
Originariamente inviato da TheDark191
Però nel mio esempio io ho bisogno di richiamare l'attributo Vita al di fuori dei metodi,altrimenti come faccio a farla diminuire o aumentare tramite funzioni o metodi di altre classi?
Secondo te c'è differenza tra fare così:
codice:
class Personaggio {
private:
int vita;
public:
void setVita (int nuovaVita) {
vita = nuovaVita;
};
int getVita () {
return vita;
};
}
int main () {
Personaggio p;
p.setVita(1); // vita = 1
p.setVita(p.getVita()++); // incremento vita
}
oppure così:
codice:
class Personaggio {
public:
int vita;
}
int main () {
Personaggio p;
p.vita = 1;
p.vita = p.vita++;
}
Secondo me una differenza c'è: vedi, usare le classi è molto più che definire un "namespace" per delle variabili (sennò fai prima ad usare il C con le struct ecc...)
Se volessi controllare che una persona non inserisca una vita inferiore a 0 ?
Quel controllo è un tipo di comportamento dell'oggetto: se lavori ad oggetti non puoi fare quei tipi di controlli fuori dalla classe, altrimenti non ha senso l'uso della programmazione ad oggetti.
Ti ripeto, questa mentalità la acquisisci programmando e studiando la OOP.
Leggiti la guida che ti ho linkato su, oppure leggiti un bel libro sulla OOP come ce ne sono a centinaia, e cerca di acquisisre il giusto metodo di programmazione dall'inizio, perchè sennò gli sbagli te li porterai sempre