Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo"

Transcript

1 Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo

2 Il C++ permette la definizione di nuovi tipi (oltre a int, float, double ), detti tipi definiti dall utente (UDT) L Object Orientation è implementata in C++ attraverso il concetto di classe: Idati membro (o attributi) di una classe definiscono lo stato dell oggetto Lefunzioni membro (o metodi) di una classe implementano la risposta ai messaggi Corso di Fondamenti di Informatica II 41

3 Point2D.h class Point2D { public: Point2D(double x, double y); double x(); double y(); double norm(); double phi(); private: double m_x; double m_y; ; dati membro Punto e virgola! Point2D.cpp costruttore funzioni membro #include Point2D.h Point2D::Point2D(double x, double y) : m_x(x), m_y(y){ double Point2D::x() { return m_x; double Point2D::norm() { return sqrt( m_x*m_x + m_y*m_y);... Corso di Fondamenti di Informatica II 42

4 L operatore :: di risoluzione dello scope L operatore binario :: di risoluzione dello scope serve ad indicare al compilatore a quale classe appartiene una data funzione membro // altro codice double Point2D::x() {return m_x; double Point2D::norm() { return sqrt( x()*x() + y()*y()); double Point3D::x() {return m_x; // altro codice Tramite l operatore :: il compilatore è in grado di distinguere tra funzioni membro aventi lo stesso nome ma appartenenti a classi diverse Quando una funzione membro chiama un altra funzione membro appartenente alla stessa classe lo può fare senza utilizzare l operatore :: Corso di Fondamenti di Informatica II 43

5 In C++ è possibile controllare l accesso ai membri di una classe mediante l uso delle seguenti parole chiave public le variabili e le funzioni membro elencate dopo lo specificatore public, e prima dello specificatore successivo, sono accessibili in tutti i punti del programma in cui si può accedere a un oggetto della classe private le variabili e le funzioni membro elencate dopo lo specificatore private, e prima dello specificatore successivo, sono accessibili soltanto all interno delle funzioni membro della classe protected le variabili e le funzioni membro elencate dopo lo specificatore protected, e prima dello specificatore successivo, sono accessibili soltanto all interno delle funzioni membro della classe e delle classi da questa derivate Corso di Fondamenti di Informatica II 44

6 Gli specificatori di accesso ai membri (2) Gli specificatori d accesso sono sempre seguiti dai due punti e possono comparire più volte e in qualunque ordine nella definizione di una classe E comunque preferibile far comparire ciascuno specificatore d accesso una sola volta e per primo lo specificatore public class A { public: int i; void func(); private: char j; float f; ; void main() { A a1; A *a2 = new A; a1.j = 10; // non compila a1.i = 12; // OK a2->j = 10; // non compila a2->func(); // OK ; Corso di Fondamenti di Informatica II 45

7 Per accedere ai membri di una classe si utilizzano gli operatori di accesso ai membri L operatore punto. si usa col nome di un oggetto o con un riferimento a un oggetto L operatore freccia -> si usa con un puntatore a un oggetto counter.h class Counter { int val; public: Counter(int v=0): val(v) { void reset(){val = 0; void incr() {++val; void decr() {--val; int value() {return val; ; #include <iostream> #include counter.h void main() { Counter cntr; cntr.val = 1; // non compila! cntr.incr(); Counter pcntr = new Counter; pcntr->incr(); cout << pcntr->value() << endl; cout << cntr.value() << endl; delete pcntr; Corso di Fondamenti di Informatica II 46

8 I dati membro privati non sono accessibili al di fuori della classe I dati e le funzioni membro pubbliche sono gli unici elementi accessibili dall esterno: essi costituiscono l interfaccia di una classe Point2D.h class Point2D { public: Point2D(double x, double y); double x(); double y(); double norm(); double phi(); private: double m_x; double m_y; ; Point2D.cpp #include Point2D.h Point2D :: Point2D(double x, double y) : m_x(x), m_y(y) { double Point2D::x() { return m_x; double Point2D::norm() { return sqrt(m_x* m_x + m_y* m_y); Corso di Fondamenti di Informatica II 47

9 La struttura interna dei dati (m_x, m_y) di un oggetto della classe Point2D sono nascosti (private) agli utilizzatori della classe. Gli utilizzatori non dipendono dalla struttura interna dei dati: se la struttura interna cambia, ad esempio si decide di rappresentare un punto mediante coordinate polari (m_r, m_phi), il codice che usa Point2D non deve essere modificato. Corso di Fondamenti di Informatica II 48

10 In C++ una struct è semplicemente una classe i cui membri sono pubblicamente accessibili struct MyStruct { int val; void f(); ; class MyStruct { public: int val; void f(); ; In una struct i membri senza specificatore di accesso sono pubblici In una classe i membri senza specificatore d accesso sono privati Corso di Fondamenti di Informatica II 49

11 Un costruttore è un metodo il cui nome è quello della classe a cui appartiene Lo scopo di un costruttore è quello di costruire oggetti del tipo della classe. Questo implica l inizializzazione degli attributi e, frequentemente, allocazione di memoria dallo heap Un costruttore la cui lista di argomenti è vuota o composta di argomenti di default viene normalmente chiamato costruttore di default Point2D::Point2D() {.... // costruttore di default #include Point2D.h... Point2D pt; // oggetto costruito con il // costruttore di default Corso di Fondamenti di Informatica II 50

12 (2) Un costruttore che ha come argomento un riferimento ad un oggetto della stessa classe viene chiamato costruttore di copia Point2D :: Point2D(const Point2D & pt) : m_x(pt.m_x), m_y(pt.m_y) { Il costruttore di copia viene normalmente utilizzato: quando un oggetto è inizializzato per assegnazione Point2D pt1(1,3), pt2(pt1); Point2D pt3 = pt1; // pt3 e pt2 vengono inizializzati con il costruttore di copia quando un oggetto è passato come argomento ad una funzione quando un oggetto è ritornato da una funzione Se il costruttore di copia non viene fornito esplicitamente, il compilatore ne genererà uno automaticamente Corso di Fondamenti di Informatica II 51

13 (3) I dati membro di una classe possono essere inizializzati nel costruttore per mezzo di una lista di inizializzatori, che precede il corpo della funzione Point2D::Point2D(double x, double y) : m_x(x), m_y(y) Lista di inizializzatori { I dati membro (non statici) che siano o riferimenti o const devono essere inizializzati nella lista di inizializzatori I dati membro sono inizializzati nell ordine della loro dichiarazione nella classe, non nell ordine in cui compaiono nella lista di inizializzatori Corso di Fondamenti di Informatica II 52

14 (4) Quando uno dei dati membro è esso stesso un oggetto, il costruttore appropriato viene scelto sulla base dei parametri forniti nell inizializzazione. class A { public: A(int x = 0) : m_x(x) { // altri metodi private: int m_x; class B { public: B(const A &a1, int z); // altri metodi private: A m_a1, m_a2, m_a3; B::B(const A &a1, int z) : m_a1(a1), m_a3(z) { // m_a1 : costruttore di copia // m_a2, m_a3 : costruttore di default Ogni dato membro che non compare nella lista di inizializzatori viene inizializzato chiamando il costruttore di default della classe a cui il dato membro appartiene Corso di Fondamenti di Informatica II 53

15 (5) Il distruttore è un metodo il cui nome è quello della classe a cui appartiene preceduto da una tilde (~) Il distruttore viene chiamato automaticamente quando un oggetto sta per essere distrutto (sia perchè delete è stato invocato sia perchè l oggetto è finito fuori scope Il compito del distruttore è di assicurarsi che l oggetto per cui è invocato verrà distrutto senza conseguenze. In particolare, se memoria è stata allocata nel costruttore, il distruttore dovrà assicurarsi di restituirla allo heap Point2D::~Point2D() { // vuoto, in questo caso Corso di Fondamenti di Informatica II 54

16 (6) Icostruttori con un solo parametro sono automaticamente trattati come operatori di conversione Point2D:: Point2D(int i) {... // costruisce un punto a partire da un intero, ma puo // essere usato per convertire un intero in un punto p = Point2D(i); Per evitare la conversione si può usare explicit explicit Point2D(int); // solo costruttore Corso di Fondamenti di Informatica II 55

17 Una classe che ha dei membri di tipo puntatore deve sempre definire un costruttore di copia class IVector { public: IVector(int len=100):m_len(len){ m_data = new int[m_len]; for (int i=0; i<m_len; ++i) m_data[i] = 0; ~IVector() { delete [] m_data; int size() { return m_len; int & item(int index) { return m_data[index]; private: int m_len; int *m_data; ; int main() { IVector v1(10), v2 = v1; v1.item(0) = 10; // v2[0]==10! return 0; // crash! Soluzione: costruttore di copia IVector::IVector(const IVector &src) : m_len(src.m_len) { m_data = new int[m_len]; for (int i=0; i<m_len; ++i) m_data[i] = src.m_data[i]; Corso di Fondamenti di Informatica II 56

18 La parola chiave friend può essere usata per permettere che una certa funzione o classe abbia libero accesso ai dati privati della classe class A { private: int m_x; friend int fun(const A &); friend void C::f(int); ; class B { private: int m_y; friend class C; ; class C { void f(int i); void g(); ; int fun(const A & a) { return a.m_x; // OK perché friend void C::f(int i) { A a; a.m_x = i*10; // OK perché friend void C::g() { A a; a.m_x = 12; //errore: g non è friend Corso di Fondamenti di Informatica II 57

19 (2) friend e nemico dell incapsulamento e quindi dell OOP Un uso eccessivo di friend è quasi sempre sintomo di un cattivo disegno Esistono anche situazioni in cui l uso di friend può essere accettabile Overloading di operatori binari Considerazioni di efficienza Relazione speciale fra due classi Corso di Fondamenti di Informatica II 58

20 Variabili membro dichiarate static in una classe sono condivise da tutti gli oggetti di quella classe Funzioni membro dichiarate static non possono accedere a membri non statici della classe Variabili membro statiche possono essere usate e modificate soltanto da funzioni membro statiche I membri static possono essere public, private, o protected Corso di Fondamenti di Informatica II 59

21 Un esempio: un contatore di istanze Class MyClass { private: static int instancecount; static void incrementcount() {instancecount++; static void decrementcount() {instancecount--; public: MyClass() {incrementcount(); ~MyClass() {decrementcount(); static int getinstancecount() { return instancecount; ; #include <iostream.h> #include MyClass.h int MyClass:: instancecount=0; int main() { MyClass a,b,c; MyClass *p=new MyClass; Un membro statico deve essere inizializzato una e una sola volta nel codice eseguibile Un metodo statico puo essere invocato cosi... cout<< How many? << MyClass::getInstanceCount() <<endl; delete p; cout<< and now? << a.getinstancecount() <<endl; return 0; o cosi`... Corso di Fondamenti di Informatica II 60

22 In un progetto C++ il codice è organizzato in Header files (.h o.hh) contengono dichiarazioni di classe e prototipi di funzioni un dato header file non deve essere incluso più volte nello stesso file sorgente File sorgente (.C,.cxx,.cpp,.cc) #ifndef MyClass_H #define MyClass_H // dichiarazioni.. #endif contengono l implementazione di funzioni e metodi includono gli header files mediante la direttiva #include del precompilatore Gli utilizzatori di una classe devono solo includere l header file contenente la dichiarazione della classe (chi utilizza una classe non ha bisogno di sapere come questa è implementata ma solo di conoscere la sua interfaccia) Corso di Fondamenti di Informatica II 61

23 In C++ è possibile effettuare l overloading degli operatori per utilizzarli sugli oggetti delle classi definite dagli utenti complex.h class Complex { double m_re, m_im; public : Complex(double re, double im) : m_re(re), m_im(im) { // ; #include complex.h void main { Complex c1(1, 2), c2(3,4); Complex c3 = c1 + c2; ridefinizione di + Obiettivo: scrivere le espressioni in cui compaiono gli oggetti con la stessa concisione delle espressioni in cui compaiono i tipi predefiniti Corso di Fondamenti di Informatica II 62

24 (2) Permette di utilizzare tipi definiti dall utente come se fossero tipi fondamentali E possibile effettuare l overloading di qualunque operatore ad eccezione di..* ::? sizeof La cardinalità, l associatività e la precedenza di un operatore non possono essere modificati Non è possibile creare nuovi operatori ma solo ridefinire quelli esistenti L overloading di un operatore è effettuato mediante la definizione di una funzione operatore Corso di Fondamenti di Informatica II 63

25 (3) Le funzioni operatore possono essere implementate come Funzioni membro tipo_di_ritorno nome_classe::operator op(argomenti) op è l operatore da ridefinire Funzioni non membro tipo_di_ritorno operator op(argomenti) Non sempre è possibile ridefinire un operatore come funzione membro #include <iostream> #include complex.h void main { Complex c1(1, 2); cout << c1; // operando sx non di tipo Complex ostream & operator << (ostream & os, const Complex & c); Corso di Fondamenti di Informatica II 64

26 Operatori unari sono implementati come (4) metodi senza argomenti (l oggetto è l argomento implicito) class Date { public: Date(int d, int m, int y); Date & operator++(); //preincr. ; void main() { Date d(12,03,2002); ++d; // d.operator++(); funzioni friend a un solo argomento class Date { public: Date(int d, int m, int y); friend Date & operator++(date &); ; void main() { Date d(12,03,2002); ++d; // operator++(d); Date & operator++(date &); Corso di Fondamenti di Informatica II 65

27 Overloading di operatori (5) Operatori binari possono essere implementati come metodi con un argomento (il primo argomento, implicito, è l oggetto il cui operatore agisce) class Complex { double m_re, m_im; public: Complex(double re, double im); const Complex operator+(const Complex & c) { return Complex(m_re + c.m_re, m_im + c.m_im); ; funzioni friend a due argomenti. class Complex { public: Complex(double re, double im); friend const Complex operator+(const Complex &c1, const Complex &c2); ; const Complex operator+(const Complex & c1, const Complex & c2); Corso di Fondamenti di Informatica II 66

28 Ogni oggetto puo accedere al proprio indirizzo tramite un puntatore di nome this Il valore di this non puo essere cambiato per una classe A il tipo di this e A* const o const A* const E particolarmente utile quando si definisce un operatore di assegnazione (=) o, in generale, quando si vuole restituire una copia o un riferimento all oggetto stesso class Time { public: Time(int h, int m, int s); Time & sethour(int h); Time & setmin(int m); private: int hh, mm, ss; ; Time & Time::setHour(int h) { hh = (h>0 && h <24)? h : 0; return *this; void main() { Time t(12,03,58); t.sethour(11).setmin(8); Corso di Fondamenti di Informatica II 67

29 L overload dell operatore di assegnazione L operatore di assegnazione e un operatore binario invocato dal compilatore quando compare un istruzione di assegnazione fra variabili non utilizzata per inizializzare un oggetto class MyClass {/*..*/; void main() { MyClass b; MyClass a = b; // costruttore di copia a = b; // a.operator=(b); In assenza di overload, il compilatore crea una veersione di default di tale operatore che effettua una copia degli oggetti membro a membro Corso di Fondamenti di Informatica II 68

30 L overload dell operatore di assegnazione (2) Una classe che ha dei membri di tipo puntatore deve sempre ridefinire l operatore = In assenza di overload, dopo l assegnazione la memoria puntata prima dell assegnazione dalla variabile puntatore dell operando sinistro non e piu accessibile i due oggetti hanno un puntatore alla stessa area di memoria L overload dell operatore = permette di eseguire la copia dell area puntata e non del puntatore. La memoria precedentemente puntata dall operando sinistro deve comunque essere deallocata e nuova memoria deve essere allocata Corso di Fondamenti di Informatica II 69

31 L overload dell operatore di assegnazione (3) Senza overload di = class IVector { public: IVector(int len=100):m_len(len) void main() { { /* */ IVector v1(10), v2(20); ~IVector() {/* */ v2 = v1; /* */ for (int i=0; i<v1.size(); ++i) int & operator [] (int i) { v1[i] = i; // v2[i]==i! assert(i>0 && i<m_len); // crash! return m_data[i] IVector & operator(const IVector &); Soluzione: overload di = private: int m_len; int *m_data; ; IVector & IVector::operator=(const IVector &src) { if (this == &src) return *this; if (m_data) delete [] m_data; m_len = src.m_len m_data = new int[m_len]; for (int i=0; i<m_len; ++i) m_data[i] = src.m_data[i]; return *this; Corso di Fondamenti di Informatica II 70

32 Overload degli operatori di I/O su stream Gli operatori << e >> possono essere ridefiniti per consentire operazioni del tipo: IVector v(10); for (int i=0; i<v.size(); ++i) v[i] = i; cout << Il vettore v vale << v << endl; Si utilizza una funzione friend: class IVector { friend ostream& operator<<(ostream& os, const IVector & v); /* */ ; ostream& operator <<(ostream& os, const IVector & v){ for (int i=0; i<v.size(); ++i) os << v[i] <<, ; return os ; // consente di scrivere cout << v1 << v2 Corso di Fondamenti di Informatica II 71

33 Un esempio, la classe Complex // complex.h #ifndef COMPLEX_H_INCLUDED #define COMPLEX_H_INCLUDED // definizione della classe Complex class Complex { public: Complex(double re=0, double im=0) : m_re(re), m_im(im) { Complex(const Complex & c) : m_re(c.m_re), m_im(c.m_im) { ~Complex() { double real() { return m_re; double imag() { return m_im; Complex & operator= (const Complex & c); Complex & operator+=(const Complex & c); Complex & operator-=(const Complex & c); Complex & operator*=(const Complex & c); Complex operator+ (); Complex operator- (); Complex operator+ (double x); Complex operator- (double x); Complex operator* (double x); bool operator==(double x); bool operator!=(double x); friend Complex operator+(double x, const Complex & c); friend Complex operator-(double x, const Complex & c); friend Complex operator*(double x, const Complex & c); friend bool operator==(double x, const Complex& c); friend bool operator==(const Complex & c1, const Complex & c2); friend bool operator!=(const Complex & c1, const Complex & c2); friend bool operator!=(double x, const Complex& c); friend const Complex operator+(const Complex& c1, const Complex& c2); friend const Complex operator-(const Complex & c1, const Complex & c2); friend const Complex operator*(const Complex & c1, const Complex & c2); private: double m_re, m_im; ; 72

34 // continua complex.h // dichiarazione delle funzioni operatore non membro Complex operator+(double x, const Complex & c); Complex operator-(double x, const Complex & c); Complex operator*(double x, const Complex & c); bool operator==(double x, const Complex& c); bool operator==(const Complex & c1, const Complex & c2); bool operator!=(const Complex & c1, const Complex & c2); bool operator!=(double x, const Complex& c); const Complex operator+(const Complex& c1, const Complex& c2); const Complex operator-(const Complex & c1, const Complex & c2); const Complex operator*(const Complex & c1, const Complex & c2); #endif // fine di complex.h 73

35 // complex.cpp #include complex.h // implementazione delle funzioni membro della classe Complex Complex & Complex::operator=(const Complex & c) { m_re = c.m_re; m_im = c.m_im; Complex & Complex::operator+=(const Complex & c) { m_re += c.m_re; m_im += c.m_im; return *this; Complex & Complex::operator-= (const Complex & c){ m_re -= c.m_re; m_im -= c.m_im; return *this; Complex & Complex::operator*= (const Complex & c){ m_re *= c.m_re; m_im *= c.m_im; return *this; Complex Complex::operator+() { return *this; Complex Complex::operator-() { return Complex(-m_re, -m_im); Complex Complex::operator+(double x) { return Complex(m_re + x, m_im); Complex Complex::operator-(double x) { return Complex(m_re - x, m_im); Complex Complex::operator*(double x) { return Complex(m_re * x, m_im * x); bool Complex::operator==(double x) { return m_re == x && m_im == 0; bool Complex::operator!=(double x) { return!operator==(x); 74

36 // continua complex.cpp // implementazione delle funzioni operatore non membro Complex operator+(double x, const Complex & c) { return Complex(x + c.m_re, c.m_im); Complex operator-(double x, const Complex & c) { return Complex(x - c.m_re, -c.m_im); Complex operator*(double x, const Complex & c) { return Complex(x * c.m_re, x * c.m_im); const Complex operator+(const Complex & c1, const Complex & c2) { return Complex(c1.m_re + c2.m_re, c1.m_im + c2.m_im); const Complex operator-(const Complex & c1, const Complex& c2) { return Complex(c1.m_re - c2.m_re, c1.m_im - c2.m_im); const Complex operator*(const Complex& c1, const Complex& c2) { return Complex(c1.m_re * c2.m_re - c1.m_im * c2.m_im, c1.m_re * c2.m_im + c1.m_im * c2.m_re); bool operator==(const Complex& c1, const Complex& c2) { return c1.m_re == c2.m_re && c1.m_im == c2.m_im; bool operator==(double x, const Complex& c) { return x == c.m_re && 0 == c.m_im; bool operator!=(const Complex& c1, const Complex& c2) { return c1.m_re!= c2.m_re c1.m_im!= c2.m_im; bool operator!=(double x, const Complex& c) { return x!= c.m_re 0!= c.m_im; 75

Overloading di operatori

Overloading di operatori Overloading di operatori In C++ è possibile effettuare l overloading degli operatori per utilizzarli sugli oggetti delle classi definite dagli utenti complex.h class Complex { double m_re, m_im; public

Dettagli

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 27 Ottobre 2014

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 27 Ottobre 2014 Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 27 Ottobre 2014 1 AVVISO Nuovo calendario turni di laboratorio : I prova: 11, 12, 13 Novembre 2014 ore 9-12 II prova: 18, 19, 20 Novembre 2014 ore

Dettagli

La programmazione ad oggetti (OOP)

La programmazione ad oggetti (OOP) Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente

Dettagli

Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo

Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo In C++ è possibile distinguere due aree distinte di memoria: memoria stack e memoria heap E

Dettagli

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Esercizi

Laboratorio di Algoritmi e Strutture Dati. Esercizi Laboratorio di Algoritmi e Strutture Dati Esercizi Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro 1 Operatori Indispensabili Ogni Classe che

Dettagli

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 24 Ottobre 2014

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 24 Ottobre 2014 Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 24 Ottobre 2014 1 Una funzione membro importante: il costruttore In logica OOP l accesso allo stato interno di un istanza deve avvenire solo attraverso

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1

Dettagli

Overloading di Operatore

Overloading di Operatore Overloading di Operatore Perche' In C++ si creano e manipolano dei tipi di dato creati dall utente (il programmatore) Il C++ mette a disposizione degli strumenti per creare e distruggere gli oggetti creati

Dettagli

Costruttori/distruttori. Sovraccarico degli operatori. Costruttori/distruttori. Necessità di un cotruttore

Costruttori/distruttori. Sovraccarico degli operatori. Costruttori/distruttori. Necessità di un cotruttore Costruttori/distruttori. Sovraccarico degli operatori. Costruttori/distruttori Quando un oggetto viene allocato viene eseguita una routine di inizializzazione: il costruttore. Quando viene deallocato si

Dettagli

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono

Dettagli

Il linguaggio C++ Ugo de Liguoro

Il linguaggio C++ Ugo de Liguoro Il linguaggio C++ Ugo de Liguoro Caratteristiche Il C++ è class based; interpreta le classi come tipi; il subtyping coincide con la (chiusura transitiva della) relazione di sottoclasse; è basato sul C

Dettagli

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

Dettagli

Indice. Il qualificatore const Le funzioni friend Il puntatore this Gli operatori new e delete I membri static La composizione di classi

Indice. Il qualificatore const Le funzioni friend Il puntatore this Gli operatori new e delete I membri static La composizione di classi Le Classi II Parte Indice Il qualificatore const Le funzioni friend Il puntatore this Gli operatori new e delete I membri static La composizione di classi Le classi ed il qualificatore const Il qualificatore

Dettagli

Il creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto. L owner di un oggetto è l entità responsabile della sua distruzione

Il creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto. L owner di un oggetto è l entità responsabile della sua distruzione Il creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto L owner di un oggetto è l entità responsabile della sua distruzione Creator e owner in generale non coincidono class ExprParser

Dettagli

Overloading degli operatori

Overloading degli operatori Overloading degli operatori Indice L overloading degli operatori Restrizioni sull overloading degli operatori L overloading degli operatori: le funzioni membro L overloading degli operatori: le funzioni

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di

Dettagli

Strutture come parametri di funzioni

Strutture come parametri di funzioni Strutture come parametri di funzioni int main() { struct PolReg { int numlati; float lunghezzalato; PolReg p1; p1.numlati = 3; p1.lunghezzalato = 10.0; float perimetro = p1.numlati * p1.lunghezzalato;

Dettagli

costruttori e distruttori

costruttori e distruttori Costruttore costruttori e distruttori E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW C++ funzioni Alberto Ferrari http://en.cppreference.com FUNZIONI le funzioni caratterizzate da nome, parametri (numero, ordine e tipo) e tipo di ritorno le funzioni hanno un prototipo il prototipo non

Dettagli

Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti

Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti int sumvector(int *array, int n) { int sum(0); for (int i = 0; i < n; ++i) sum

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

Dettagli

Reti di Connessione e Instradamento AA

Reti di Connessione e Instradamento AA Politecnico di Milano Dipartimento di Elettronica e Informazione Reti di Connessione e Instradamento AA. 2010-2011 Cenni sulla programmazione a oggetti con il C++ Massimo Tornatore (Autore delle slide:

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it. Sommario 2 2» Struttura

Dettagli

Dichiarazione di una classe. Dichiarazione ereditarietà

Dichiarazione di una classe. Dichiarazione ereditarietà Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Oggetti. Definizioni di Classi II

Oggetti. Definizioni di Classi II Programmazione a Oggetti Definizioni di Classi II Sommario Costruzioni di oggetti Campi e metodi di classe Overloading Istanziazione di oggetti Costruzione di un oggetto Processo complesso che comprende

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Funzioni e classi friend Overloading di operatori aa 2008/2009 Claudio De Stefano 1 Le funzioni friend Nella definzione di una classe è possibile elencare quali funzioni,

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Il paradigma OO e le Classi

Il paradigma OO e le Classi Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui

Dettagli

Programmazione a Oggetti Lezione 8. Definizioni di Classi II

Programmazione a Oggetti Lezione 8. Definizioni di Classi II Programmazione a Oggetti Lezione 8 Definizioni di Classi II Sommario Costruzione di un oggetto Processo complesso che comprende varie fasi: 1. Allocare spazio per ogni campo - in ordine testuale - inizializza

Dettagli

Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari

Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari oggetti o in C++ la definizione della classe è separata dalla implementazione dei metodi o definizione fornita

Dettagli

Gli oggetti. Ogni oggetto ha un interfaccia e ogni oggetto ha un tipo. Incapsulamento. Oggetti. Contatore. Invio di Messaggi

Gli oggetti. Ogni oggetto ha un interfaccia e ogni oggetto ha un tipo. Incapsulamento. Oggetti. Contatore. Invio di Messaggi Gli oggetti Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-149 Torino Ogni

Dettagli

Operatore di indirizzo

Operatore di indirizzo Operatore di indirizzo L operatore unario di indirizzo & restituisce l indirizzo della locazione di memoria dell operando Il valore restituito non va usato come l- value (in quanto l indirizzo di memoria

Dettagli

Corso di Programmazione a oggetti

Corso di Programmazione a oggetti Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

La programmazione ad oggetti (Parte 1)

La programmazione ad oggetti (Parte 1) La programmazione ad oggetti (Parte 1) Algoritmicamente November 21, 2009 http://algoritmicamente.wordpress.com/ 1 Introduzione Una proprietà importante del C++ è quella che denisce questo linguaggio come

Dettagli

Lezione 4. Costruttori

Lezione 4. Costruttori Lezione 4 Costruttori e distruttori Costruttori Quando si crea un oggetto di una classe è possibile inizializzarne i membri tramite il costruttore di classe Il costruttore è una funzione membro che ha

Dettagli

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...

Dettagli

Definizione di classi

Definizione di classi Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Struttura di un programma C++

Struttura di un programma C++ Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Corso di Programmazione a oggetti

Corso di Programmazione a oggetti Corso di Programmazione a oggetti Introduzione alla programmazione a oggetti aa 2014/2015 Francesco Fontanella La Programmazione Modulare Un programma può essere visto come un insieme di moduli che interagiscono

Dettagli

UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA

UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo Cognome:... A.A. 2017-18 Nome:... Test Finale con Soluzioni Matricola:... Roma, 18 gennaio 2018

Dettagli

Sommario. Esempio. Esempio: Canzone.h #ifndef CANZONE_H #define CANZONE_H. Esempio: Canzone.cpp

Sommario. Esempio. Esempio: Canzone.h #ifndef CANZONE_H #define CANZONE_H. Esempio: Canzone.cpp Sommario Classi e oggetti, un esempio: Oggetti in memoria stack e in memoria heap Oggetti e funzioni Oggetti ed array Il puntatore implicito this Costruttore: Lista di inizializzazione dei membri Tipo

Dettagli

Fondamenti di Informatica II 3. Funzioni in C++ (parte 1)

Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Introduzione alle funzioni in C++ Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Corso di Laurea in Ingegneria Informatica A.A. 2008-2009 2 Semestre Corso (A-M) int main() int n, fattoriale=1;

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 10 Lezione 10 1 Inside C : Puntatori Puntatori Referenziazione e Dereferenziazione Pointers: Puntatori Le variabili finora incontrate sono caratterizzate da

Dettagli

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti Fondamenti di Programmazione Prof.ssa Elisa Tiezzi Programmazione orientata a oggetti 1 Programmazione OO Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Record Laboratorio di Informatica Ingegneria Meccanica Lezione 9, 6 dicembre 2007 versione 18 dicembre 2007 Renato Menicocci Array: collezione di dati omogenei

Dettagli

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2;

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Array Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Il C supporta questo uso attraverso il tipo di dati array (o vettore): int

Dettagli

Funzioni matematiche

Funzioni matematiche int int main() main() double r, theta, phi; return return 0; 0; Funzioni matematiche In C++ non esistono funzioni predefinite #include #include cin >> r >> theta >> phi ; double x =

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione X Tatiana Zolo tatiana.zolo@libero.it 1 Proprietà fondamentale dei linguaggi object-oriented. Classe A classe base (o superclasse) classe da cui si eredita Classe

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Realizzazione di Liste (II) Laboratorio di Algoritmi e Strutture Dati Domenico Redavid redavid@di.uniba.it Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Lllezione 12 Template. Template. Lezione 12

Lllezione 12 Template. Template. Lezione 12 Lezione 12 Cosa è un Il template è un meccanismo che consente di creare uno schema generico di funzione o di classe, che non fa esplicito riferimento a nessun particolare tipo di dati utile quando si devono

Dettagli

Lllezione 12 Template

Lllezione 12 Template Lezione 12 Cosa è un Il template è un meccanismo che consente di creare uno schema generico di funzione o di classe, che non fa esplicito riferimento a nessun particolare tipo di dati utile quando si devono

Dettagli

Laboratorio di Programmazione Anno Accademico

Laboratorio di Programmazione Anno Accademico Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Laboratorio di Programmazione Anno Accademico 2004-2005 Corso di Laurea in Ingegneria Informatica Prof. Giuseppe De Giacomo (A L) & Prof.

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti I Template a.a. 2008/2009 Claudio De Stefano 1 Programmazione generica E una tecnica di programmazione che permette di definire una classe di oggetti (o una funzione)

Dettagli

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Esercitazioni sulle classi

Esercitazioni sulle classi Esercitazioni sulle classi Armando Stellato stellato@info.uniroma2.it 1 Classi Possiamo vederle, da un punto di vista sintattico, come una estensione delle strutture, ma sono caratterizzate da notevoli

Dettagli

AGGIORNAMENTI RECENTI IN C++ Programmazione ad Oggetti Corso di Laurea in Informatica Università della Calabria

AGGIORNAMENTI RECENTI IN C++ Programmazione ad Oggetti Corso di Laurea in Informatica Università della Calabria AGGIORNAMENTI RECENTI IN C++ Programmazione ad Oggetti Corso di Laurea in Informatica Università della Calabria C++0x/C++11/C++14/C++17 : Cosa sono? C++ ha subito molti miglioramenti da quando è stato

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

Progettazione del Software Anno Accademico Tipi di dato in Java

Progettazione del Software Anno Accademico Tipi di dato in Java Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Progettazione del Software Anno Accademico 2003-2004 Corso di Laurea in Ingegneria Gestionale Prof. Monica Scannapieco (A L) & Prof. Giuseppe

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

Il puntatore alla classe base e le funzioni virtuali

Il puntatore alla classe base e le funzioni virtuali Polimorfismo Indice Le funzioni virtuali e il puntatore alla classe base Le funzioni virtuali pure Classi astratte: interfaccia Commenti sugli strumenti del C++ e l OOD Il puntatore alla classe base e

Dettagli

Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo

Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo Strutture, Unioni, Enumerazioni in C Emilio Di Giacomo Strutture Una struttura è una collezione di variabili raggruppate sotto uno stesso nome da questo punto di vista è simile a un array Le variabili

Dettagli

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati Oggetti Le classi in Java Corso di laurea in Un oggetto è definito dal suo stato - descrive le sue caratteristiche comportamento - quello che può fare Ad esempio: il modello di una moneta Una moneta può

Dettagli

I numeri razionali. Specifica: la sintassi. Specifica: la semantica

I numeri razionali. Specifica: la sintassi. Specifica: la semantica Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti

Dettagli

Fondamenti di Informatica Ing. Biomedica

Fondamenti di Informatica Ing. Biomedica Fondamenti di Informatica Ing. Biomedica Esercitazione n.10 Strutture Antonio Arena antonio.arena@ing.unipi.it Ripresa esercizio per casa Fondamenti di Informatica - Esercitazione n.10 2 Scrivere una funzione

Dettagli

Ereditarietà gerarchica

Ereditarietà gerarchica Ereditarietà Ereditarietà L ereditarietà è importante per la creazione di software riutilizzabile e per controllare la complessita del codice Le classi nuove sono progettate sulla base di classi pre-esistenti

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main() Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

SEZIONE 2 Introduzione al copy constructor e ad operator overloading

SEZIONE 2 Introduzione al copy constructor e ad operator overloading SEZIONE 2 Introduzione al copy constructor e ad operator overloading void f(pila s) { s.estrai(); s.inserisci(3); cout

Dettagli

Ancora sulle Classi in C++ e Java. this

Ancora sulle Classi in C++ e Java. this Ancora sulle Classi in C++ e Java this Classe: riepilogo gestione memoria ogg1: oggetto di invocazione del metodo ogg: parametro fornito al metodo!"# ogg1 ogg2 ogg metodoa metodob varv varw varx varv varw

Dettagli

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07 Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri

Dettagli

Capitolo 10 - Strutture

Capitolo 10 - Strutture 1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli