View Full Version : [c++]Classi.un paio di dubbi
ciao.sto esercitandomi un pò sulle classi,argoimento abbastanza complesso per chi lo affronta per la prima volta :D
allora mettiamo io abbia questa classe
class data {
private: char giorno;
public:
void printgiorno() {
cout << giorno << endl;
}
}
1)Come faccio partire la funzione printgiorno al di fuori della classe?
2)Messo ke la variabile giorno non può essere modificata dall'estrerno, come gli assegno un valore?char giorno = 10; da errore
3)Qual è in parole povere la grande potenza delle classi?
grazie a tutti.
sciaoooo
GioVesas
08-12-2005, 14:28
class data {
private: char giorno[4];
public:
void printgiorno() {
cout << giorno << endl;
};
void SetGiorno(char *day)
{
strcpy(giorno,day);
};
}
int main()
{
data buonGiorno;
buonGiorno.SetGiorno("25");
buonGiorno.printgiorno();
return 1;
}
ciao.sto esercitandomi un pò sulle classi,argoimento abbastanza complesso per chi lo affronta per la prima volta :D
allora mettiamo io abbia questa classe
class data {
private: char giorno;
public:
void printgiorno() {
cout << giorno << endl;
}
}
1)Come faccio partire la funzione printgiorno al di fuori della classe?
2)Messo ke la variabile giorno non può essere modificata dall'estrerno, come gli assegno un valore?char giorno = 10; da errore
Ecco un esempio minimale di classe per le date:
class data
{
private:
short m_giorno;
short m_mese;
short m_anno;
public:
data (short giorno, short mese, short anno)
{
m_giorno = giorno;
m_mese = mese;
m_anno = anno;
}
void setGiorno (short giorno) { m_giorno = giorno; }
void setMese (short mese) { m_mese = mese; }
void setAnno (short anno) { m_anno = anno; }
short getGiorno () const { return m_giorno; }
short getMese () const { return m_mese; }
short getAnno () const { return m_anno; }
};
3)Qual è in parole povere la grande potenza delle classi?
La "potenza" delle classi (e in generale della OOP, Object Oriented Programming) sta nel fatto che il programmatore può utilizzare degli oggetti senza necessariamente conoscerne l'implementazione interna.
Quello che in pratica viene chiamato "information hiding". Tutto ciò che non è importante/interessante per il programmatore che utilizza la classe, può essere nascosto.
Ci sono poi altri meccanismi previsti dal OOP, come l'ereditarietà e il polimorfismo.
Una classe (come quella sopra per le date) non sarebbe molto diversa, come contenuto, da una struttura del tipo:
typedef struct
{
short giorno;
short mese;
short anno;
} data;
Quale è il problema di questa struttura? Proprio il fatto che la struttura è visibile all'esterno. Chiunque abbia questa definizione, ha a disposizione tutti i dati e può scriverli/leggerli e fare quello che vuole.
Nella classe "data" sopra invece ci sono dei metodi per compiere delle operazioni sulla classe. Potresti implementare la data internamente alla classe in un altro modo, potresti mettere dei controlli nei metodi "setXXX" per validare l'input, ecc...
Tutto questo in modo nascosto a chi poi utilizza la classe.
Beh, non ho spiegato tutto ma almeno spero di essere stato chiaro. Ciao.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.