Strutture classi e oggetti Dal C al C++ Una piccola introduzione
Definizione di strutture Raggruppamento di variabili dello stesso tipo racchiuse nello stesso nome Es di dichiarazione di una struttura: struct date{ char mese[10]; int giorno; int anno}; In generale: struct nomestringa{ elenco membri};
Inizializzazione di una struttura Per dichiarare un elemento particolare, una struttura particolare: struct date data1; struct date data2; …………………. Per accedere ai membri della struttura: data1.mese[10]; // mese della struttura data1 data2.mese[10]; // mese della struttura data2 data1.giorno; //giorno della struttura data1 data2.giorno; //giorno della struttura data2 ………………………………
Secondo metodo per dichiarare una struttura struct date{ char mese[10]; int giorno; int anno} date1, date2; Oltre alla struttura date, si inizializzano anche date1 e date2 Per accedere ai membri, si utilizza lo stesso metodo della slide precedente
Esempio: distanza tra due punti int main(void){ int dx,dy; float distanza; struct punto{ int x,y}; struct punto A; struct punto B; printf(“Inserisci le coordinate del punto A e del punto B”); scanf(“%d %d %d %d”, &A.x, &A.y, B.x, B.y); dx=A.x-B.x; d.y=A.y-B.y; distanza=sqrt(d.x*d.x+d.y*d.y); printf(“%f”,distanza);}
Dichiarazione di una struttura La struttura è un insieme di dati raccolti secondo una determinata logica Come tutte le variabili, può essere dichiarata localmente o globalmente Se in programma ci sono delle function che utilizzano i membri della struttura, la struttura deve essere dichiarata globalmente fuori dal main
Classi e oggetti La classe è la definizione di un tipo di variabile che racchiude sia i dati (membri) che il codice, le funzioni (metodi) È quindi, un elenco di membri di tipo differente che di metodi Un oggetto è un caso particolare di oggetti Esempio: la classe di alunni è catratterizzata dai seguenti membri: voti in storia, matematica..; altezza dei ragazzi; data di nascita; luogo di nascita. I membri sono: fa i compiti, arriva in orario a scuola….. L’oggetto è il singolo allievo Gennaro, Maria… Si dice che l’oggetto è l’istanza della classe
Le classi e le strutture Una classe si dichiara con class allo stesso modo della dichiarazione di una struttura Classe e struttura sono fondamentalmente la stessa cosa; la differenza essenziale è che i membri di una struttura sono sempre pubblici mentre quelli di una classe privati
Le classi I membri e i metodi di una classe possono essere: Public, accessibili all’esterno Private, non accessibili all’esterno Protect, protetti
Dichiarazione di una classe Supponiamo di voler dichiarare la classe dog class dog{ public: char razza[20]; char color[10]; int eta; int peso; };
Esempio completo # include <iostream> using namespace std; class dog{ public: char razza[20]; char color[10]; int eta; int peso; }; int main(){ dog rintintin; cout<<“inserisci la razza, il colore, l’età e il peso di rintintin\n”; cin>>rintintin.razza[]>>rintintn.color[]>>rintintin.eta>>rintintin.peso; return 0;}
IEsempio con i metodi Esempio punto su assi cartesiani e distanza dall’origine # include <iostream> using namespace std; class punto{ int x,y; public: float dist(int a, int b){ float distanza; distanza=sqrt(a*a+b*b); return distanza;} }; int main(){ punto a, b; cin>>a.x>>a.y>>b.x>>b.y; cout<<a.dintanza(x,y); return 0;}
II Esempio con i metodi I metodi possono essere dichiarati solo nella classe e definiti fuori. Rifacciamo lo stesso esempio di prima ma definiamo i metodi fuori la classe # include <iostream> using namespace std; class punto{ int x,y; public: float dist(int a, int b); }; float punto::dist(int a, int b){ float distanza; distanza=sqrt(a*a+b*b); return distanza;} int main(){ punto a, b; cin>>a.x>>a.y>>b.x>>b.y; cout<<a.dintanza(x,y); return 0;}
esempio classe in un file .h class cliente { public: char nome[20]; char cognome[20]; char indirizzo[30]; void ins_nome( ); void ins_cognome( ); void ins_indirizzo( ); };
Main #include <iostream.h> include "cliente.h" void cliente::ins_nome( ){ cout << Inserisci il nome del cliete"; cin >> nome; } void cliente::ins_cognome( ) {cout << Inserisci il cognome del cliente "; cin >> cognome; void cliente::ins_indirizzo( ) {cout << Inserisci l' indirizzo del cliente: "; cin >> indirizzo; main() { cliente cliente1; cliente1.ins_nome( ); cliente1.ins_cognome( ); cliente1.ins_indirizzo( ); cout << "Il nome del cliente è: " << cliente1.nome << “\n”; cout << "Il cognome del cliente è: " << cliente1.cognome << “\”; cout << "L' indirizzo del cliente è: " << cliente1.indirizzo << endl;