PDA

Visualizza la versione completa : [C++] Domande


nightfall
28-12-2003, 17:14
1. Cosa sono gli Oggetti (Programmazzione a oggetti) ?
2. A cosa servono le Classi ?
3. Come si usano le classi ?

Grazie.. :)

web@web
28-12-2003, 23:58
Una classe è un oggetto. Per usarla la devi istanziare e puoi istanziarla in vari modi (con costruttori diversi).
Una classe è un oggetto che fa delle determinate azioni.
Per istanziare uan ipotetica Myclass devi scrivere
MyClass myc = new MyClass
Così crei unanuova istanza della classe.
Ma visto che io non sono il massimo nello spiegare le cose, fai unaricerca sul web, trovi tanti tutorial sul C++ oppure, meglio, comprati un libro.
:ciauz:

eagle_fly
29-12-2003, 11:59
La programmazione OOP è stata sviluppata per venire in contro (attaccato o staccato ???) al programmatore in quanto permette di crivere programmi strutturati in maniera molto simile a quello che nella realtà sono i problemi che si affronteranno! Ora sicuramente non è poi così al 100% ma permettono una programmazione più flessibile potente e semplice se le si imparano bene!

Spiegarti come si usano sarebbe troppo lungo, xciò fai come t ha detto web@web e fai una ricerca in internet!!

CIAO

iguana13
29-12-2003, 13:35
Originariamente inviato da web@web
Una classe è un oggetto. Per usarla la devi istanziare e puoi istanziarla in vari modi (con costruttori diversi).
Una classe è un oggetto che fa delle determinate azioni.
Per istanziare uan ipotetica Myclass devi scrivere
MyClass myc = new MyClass
Così crei unanuova istanza della classe.
Ma visto che io non sono il massimo nello spiegare le cose, fai unaricerca sul web, trovi tanti tutorial sul C++ oppure, meglio, comprati un libro.
:ciauz:

E' importante capire che una classe non è un oggetto.
Una classe non occupa spazio in memoria e non può essere usata per contenere dati.
La funzione di una classe è quella di definire un oggetto.

Quando crei un oggetto, crei una "istanza" di una classe, cioè trasferisci tutte le funzioni e le variabili che definisce in memoria, in modo che possano essere utilizzate.

Se creo 10 oggetti, occupo 10 volte lo spazio necessario per contenere tutte le variabili e le funzioni definite dalla classe.
In questo caso fanno eccezione solo funzioni e variabili di tipo static.

Per chi conosce il C, le classi sono in un certo senso una evoluzione delle strutture.

Ogni membro (cioè una variabile o funzione che appartiene ad una classe) di una classe uo essere principalbente di 2 tipi: privato o pubblico.
I membri privati possono essere modificati (o chimati per le funzioni) solo da funzioni che appartengono ad una classe.
I membri pubblici sono come i campi delle struct C, cioè possono essere modificate anche direttamente dal programma.

Ad esempio, se devo fare un programma che mi permetta di gestire un insieme di persone.
Ogin persona ha determinata caratteristiche (peso, età, sesso) ed azioni che può eseguire.
A questo punto creo una classe persona in questo modo:



class persona {
// Qui tutti i membri privati
// non li posso modificare da main per esempio
int eta;
char sesso;
int peso;

public:
// Tutti i membri pubblici

//Variabile pubblica
float IQ;

//Questa è la funzione costruttore:
//ha lo stesso nome della classe e viene chiamata
//al momento della creazione di un oggetto
persona() {
//Inizializza le variabili
eta=18;
sesso = 'M';
peso = 70;
}

//Overloading del costruttore che accetta dei parametri per inizializzare
persona(int veta, char vsesso, int vpeso) {
//Inizializza con gli argomenti
eta = veta;
peso = vpeso;
//Importante: convalida i dati in entrata
if (vsesso == 'M' || vsesso == 'S') {
sesso = vsesso;
} else {
sesso = 'M';
}
}

//Qui possono esserci tutte le funzioni membro pubbliche.
void presentati() {
cout << "Ho " << eta << " anni, peso " << peso << " chili e sono ";
if(sesso == 'F') {
cout << "una femmina." << endl;
} else {
cout << "un maschio." << endl;
}
}

void imposta_peso(int vpeso) {
peso = vpeso;
}
}; //fine della classe

//funzione main
void main()
{
//Creo un oggetto
persona tizio;
//Creo un oggetto con il cstruttore parametrizzato
persona Gino(40, 'M', 80);
//Questo non lo posso fare:
// tizio.eta=18;
// Gino.peso = 120;
//perchè son membri privati

//Cambio il peso di tizio
tizio.imposta_peso(60);
//Cambio una variabile pubblica
tizio.IQ = 3.0;
Gino.IQ = 8.5;
//Chiamo delle funzioni pubbliche
tizio.presentati();
Gino.presentati();
}


:ciauz:

Loading