Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi"

Transcript

1 Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1

2 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi e/o metodi in modo da evitare di reimplementare caratteristiche condivise In C++ questo è possibile grazie alla derivazione di classe: la classe da cui si eredita è detta classe base; la nuova classe è detta classe derivata; l insieme delle istanze di classi base e derivate è denominata gerarchia di ereditarietà di classi. 2

3 Introduzione Ereditare da una libreria di classi già esistente consente il riuso del codice con un meccanismo che va ben oltre la copia e modifica di quanto scritto precedentemente. Si creano nuove classi, non partendo da zero, ma sfruttando ed estendendo altre classi che qualcuno ha creato e collaudato 3

4 Definire una gerarchia di classi Supponiamo di voler costruire un programma che gestisce i dipendenti di un azienda. Potremmo avere strutture dati del tipo: struct Dipendente { char *nome, *cognome; int dipartimento; Data data_assunzione; /* */ }; struct Manager { Dipendente dip; Dipendente * gruppo[]; // persone gestite int livello; /* */ }; 4

5 Definire una gerarchia di classi Un Manager è un Dipendente L affermazione può sembrare ovvia per un umano ma, lasciando le strutture indipendenti, il compilatore non è in grado di capire questa relazione In particolare, non è possibile inserire un Manager (o un suo puntatore) in una lista di Dipendenti Si potrebbe effettuare una conversione esplicita da Manager* a Dipendente* o inserire un puntatore al campo dip in una lista di Dipendenti, ma la soluzione è confusa e inelegante. 5

6 Definire una gerarchia di classi Cambiando la definizione di Manager, mediante l aggiunta di un po di informazione, è possibile informare il compilatore della dipendenza desiderata: struct Manager : public Dipendente { Dipendente * gruppo[]; int livello; /* */ }; Manager è derivato da Dipendente e possiede i membri della sua classe base oltre ai suoi membri proprietari. 6

7 Definire una gerarchia di classi La derivazione si rappresenta comunemente con una freccia che va dalla classe derivata verso la classe base: Dipendente Manager Talvolta la classe base è chiamata superclasse e quella derivata sottoclasse; Tuttavia, la classe derivata è più grande della classe base poiché contiene più dati e fornisce più funzionalità 7

8 Definire una gerarchia di classi L operazione di derivazione illustrata rende Manager un sottotipo di Dipendente: un Manager può essere utilizzato ogni qualvolta si può utilizzare un Dipendente. Esempio: Dipendente * dip[10]; Manager m1, m2; Dipendente d1, d2, d3; dip[0] = &d1; dip[1] = &m1; // corretto! dip[2] = &d3; 8

9 Definire una gerarchia di classi Quindi: un Manager è anche un Dipendente e un Manager* può essere usato dove è richiesto un Dipendente*. NON è vero il viceversa! Un Manager è un caso particolare di Dipendente e usare Dipendente* al posto di Manager* richiede una conversione esplicita: Dipendente* pdip = &m1; // ok: man. è dip. Manager* pman = &d1; // errore: dip. non man. pman->livello = 2; // disastro! d1 non ha livello pman = (Manager*)pdip; // conv. Esplicita pman->livello = 2; // ok: man ha un livello 9

10 Definire una gerarchia di classi Generalizzando: se una classe Derivata ha Base come classe base, il puntatore Derivata* può essere assegnato a un puntatore di tipo Base* senza conversione esplicita: Derivata * pd; Base * pb = pd; l assegnamento opposto, da Base* a Derivata* richiede una conversione esplicita (tramite cast) Base * pb; Derivata * pd = static_cast<derivata *>(pb); 10

11 Definire una gerarchia di classi NOTA: una classe deve essere definita prima di poter essere utilizzata come base: class Dipendente; class Manager: public Dipendente { // errore!! }; Una classe derivata può diventare a sua volta una classe base per un altra classe. Grazie anche all eredità multipla, il C++ consente di definire gerarchie di classe rappresentabili con grafi aciclici diretti 11

12 Accesso ai membri Una classe derivata può accedere ai membri pubblici (e protetti) di una classe base ma non ai membri privati: class Dipendente { char *nome, *cognome; public: void stampa() const; char * nome() const; /* */ }; class Manager: public Dipendente { /* */ public: void stampa() const; }; 12

13 Accesso ai membri Esempio di codice corretto: void Manager::stampa() { cout << Il nome è << nome() << endl; } Esempio di codice errato: void Manager::stampa() { cout << cognome: << cognome << endl; } 13

14 Accesso ai membri Una soluzione tipica è usare i membri pubblici della classe base: void Manager::stampa() { Dipendente::stampa(); cout << livello; }; NOTA: riuso la stampa definita nella classe base e lo indico con Dipendente:: Scrivere soltanto stampa() significherebbe una chiamata ricorsiva (la ridefinizione del metodo in Manager maschera quella di Dipendente)! 14

15 Accesso ai membri Attenzione all overloading! Infatti, dichiarare: class Manager: public Dipendente { void stampa(ostream & s); // }; la stampa di Manager nasconde comunque la stampa di Dipendente, nonostante abbia una signature diversa! 15

16 Accesso ai membri La soluzione può essere: class Manager: public Dipendente { public: void stampa() { Dipendente::stampa(); } // oppure: using Dipendente::stampa; }; cioè: creare una semplice inline che richiama la funzione della base oppure importare il simbolo dalla classe base (specificandone però solo il nome senza parametri). 16

17 Accesso ai membri In una progettazione Object-Oriented tipicamente vi è un fornitore (chi progetta e implementa la classe) e gli utenti (che utilizzano l interfaccia pubblica del fornitore) Il fornitore decide cosa rendere visibile all esterno e cosa nascondere; La classe viene perciò divisa in due livelli di accesso: public e private 17

18 Accesso ai membri Con l eredità possono esserci vari fornitori di classi; ad esempio un fornitore di classe base e altri fornitori di classi da questa derivate Il fornitore di un sottotipo può avere la necessità di accedere all implementazione della classe base Per rendere possibile questa operazione, pur continuando ad impedire l accesso generale all implementazione, il C++ fornisce un ulteriore livello d accesso: protected 18

19 Livello d accesso protected Se un membro è dichiarato protected, il suo nome può essere utilizzato soltanto dalle funzioni membro della classe in cui è stato dichiarato (analogamente a private) o nelle funzioni membro delle classi da questa derivate NOTA IMPORTANTE: le classi derivate NON hanno accesso alla sezione private della classe base 19

20 Costruttori e loro attivazione Le classi derivate possono aver bisogno di uno o più costruttori Se la classe base ha dei costruttori, un costruttore deve essere invocato dalla classe derivata Possono essere invocati implicitamente soltanto i costruttori di default Se tutti i costruttori della classe base richiedono argomenti, uno di questi deve essere esplicitamente invocato. 20

21 Costruttori e loro attivazione Consideriamo ad esempio: class Dipendente { char * nome; public: Dipendente(const char * n); }; class Manager: public Dipendente { public: Manager(const char *n, int liv); }; 21

22 Costruttori e loro attivazione Gli argomenti del costruttore della classe base saranno specificati nella definizione del costruttore della classe derivata: Dipendente::Dipendente(const char * n) { // } Manager::Manager(const char *n, int liv) : Dipendente (n), livello (liv) { // } 22

23 Costruttori e loro attivazione Un costruttore di una classe derivata può specificare come inizializzare i suoi membri e richiamare un costruttore della base immediatamente superiore Non può inizializzare direttamente i membri della classe base, nemmeno se dichiarati protetti (questa operazione deve essere fatta mediante nel costruttore della classe base) Gli oggetti sono costruiti in ordine: prima il costruttore della base, poi i membri della classe derivata (nell ordine in cui sono stati definiti nella classe e non nell ordine in cui sono elencati) 23

24 Costruttori e loro attivazione Esempio: class B { int eta; public: B(int e) : eta (e) { } }; class D: public B { float peso; float altezza; public: D(int d, float p, float a) }; 24

25 Costruttori e loro attivazione D::D(int d, float p, float a) : altezza(a), peso(p), B(d) { // inizializzazioni varie di D } L ordine sarà: costruttore di B col parametro intero d inizializzazione del membro peso al valore p inizializzazione di altezza al valore a parte restante del costruttore di D 25

26 Costruttori e loro attivazione L unico caso in cui si può richiamare implicitamente il costruttore di default è quando la classe base NON ha costruttori: class B { protected: int n; }; class D : public B { float f; public: D (float v) : f (v) { } // B() è richiamato implic. }; 26

27 Distruttori In generale, l ordine di invocazione dei distruttori per un oggetto di una classe derivata è il contrario dell invocazione dell ordine dei costruttori Se non è stato definito dall utente, il compilatore utilizza un distruttore di default Attenzione a quando si distrugge in una classe derivata un oggetto tramite un puntatore della classe base! 27

28 Distruttori Manager::~Manager() { delete pdip1; delete pman1; delete pdip2; } se pdip1 punta a un Manager (cosa possibile), occorre chiamare il distruttore opportuno (di Manager) e non quello della classe base! Questo problema si risolve dichiarando i distruttori come virtuali. 28

29 Copia e assegnamento E possibile assegnare un istanza di una sottoclasse ad un istanza della sua classe base o richiamare il costruttore di copia della base con un oggetto della classe derivata: Manager m1, m2; Dipendente d = m1; // Costruttore di copia d = m2; // Assegnamento L operazione è lecita ma l operatore = e il costruttore di copia di Dipendente non conoscono i dettagli di Manager! 29

30 Copia e assegnamento Cosa accade? Viene copiata (o costruita) soltanto la parte Dipendente di Manager, ovvero la parte condivisa tra classe base e derivata. Questo fenomeno prende il nome di slicing ed è spesso fonte di sorprese. Per questo motivo (oltre che per ragioni di efficienza) è preferibile l uso di puntatori e/o referenze. NOTA: Gli operatori di assegnamento NON sono ereditati, così come i costruttori. 30

31 Funzioni Virtuali Nell utilizzo delle gerarchie, ci si scontra con questo problema: Dato un puntatore Base*, a quale tipo (tra i derivati da Base) corrisponde effettivamente l oggetto puntato? Esistono fondamentalmente 4 soluzioni: Assicurarsi di puntare ad oggetti di un solo tipo Inserire nella classe base un campo identificativo del tipo puntato Usare dynamic_cast Usare le funzioni virtuali 31

32 Funzioni Virtuali Il primo caso è poco flessibile, e costringe all uso di liste omogenee Il secondo caso è funzionale ma ha come punto debole l impossibilità di controllo dei tipi da parte del compilatore ed è difficilmente applicabile (ed è difficile da aggiornare) nel caso di gerarchie con molti tipi Il terzo caso è una variante del secondo supportata dal linguaggio L ultimo è una potente variante del secondo, ma stavolta type-safe e gestita dal linguaggio. 32

33 Funzioni Virtuali Esempio del secondo metodo: class Dipendente { public: enum TipoDip { M, D }; TipoDip tipo; Dipendente() : tipo (D) { } }; char nome[30]; class Manager: public Dipendente { int level; public: Manager() : tipo(m) { } }; 33

34 Funzioni Virtuali Si potrebbe avere una funzione per la stampa: void stampa_dip (const Dipendente * pd) { switch (pd->tipo) { } case Dipendente::D: cout << nome: << pd->nome << endl; break; case Dipendente::M: cout << nome: << pd->nome << endl; const Manager * pm = static_cast<manager*>(pd); cout << livello: << pm->level << endl; break; 34

35 Funzioni Virtuali Il problema principale è che potrebbero esistere molti funzioni e/o metodi sparsi tra vari file sorgenti che effettuano test sul campo tipo La loro modifica potrebbe risultare difficoltosa, soprattutto quando si aggiungono nuovi tipi da gestire in seguito ad un estensione della gerarchia di classe 35

36 Funzioni Virtuali Le funzioni virtuali superano elegantemente il problema, consentendo al programmatore di dichiarare nella classe base dei metodi che saranno ridefiniti nelle classi derivate La corretta associazione tra il metodo chiamato tramite un puntatore ad una classe base e il metodo effettivo dell istanza appartenente alla gerarchia è effettuata in fase di esecuzione (meccanismo noto come dynamic binding) 36

37 Funzioni Virtuali Esempio: class Dipendente { char *nome, *cognome; public: virtual void stampa() const; /* */ }; La keyword virtual indica che stampa() è una sorta di interfaccia tra la funzione stampa() definita in questa classe e le funzioni stampa() definite nelle classi da questa derivate 37

38 Funzioni Virtuali Gli argomenti della funzione definita nella classe derivata non possono differire dagli argomenti della corrispondente funzione (dichiarata virtual) nella classe base Una funzione virtuale deve essere definita nella classe in cui essa è dichiarata per la prima volta (unica eccezione: caso in cui essa è dichiarata virtuale pura) Si può usare una funzione virtuale anche se non vi sono classi derivate da essa e non è necessario che le derivate ne forniscano versioni personalizzate 38

39 Funzioni Virtuali Grazie al meccanismo funzioni virtuali, posso richiamarle con un puntatore generico: Manager m1; Dipendente *pdip = &m1; pdip->stampa(); // viene richiamata la stampa() di Manager Nota: se stampa() non fosse stata dichiarata virtual, l istruzione precedente avrebbe richiamato stampa() di Dipendente! (meccanismo di static binding) 39

40 Funzioni Virtuali pure Alcune classi rappresentano dei concetti astratti, a cui non possono essere associate istanze di oggetti reali In altre parole, hanno senso solo come base per derivare altre classi, fornendo una sorta di interfaccia Generalmente, le classi astratte sono caratterizzate da funzioni virtuali pure: class Shape { public: virtual void rotate(float) = 0; virtual void draw() = 0; }; 40

41 Funzioni Virtuali pure Non è possibile avere istanze di classi astratte: Shape s; // errore di compilazione! Le funzioni virtuali pure DEVONO essere implementate in una classe derivata, altrimenti si hanno ancora classi astratte (e come tali non istanziabili) Un importante uso delle classi astratte è quello di fornire un interfaccia senza esporre dettagli di implementazione Le classi da essa derivate implementeranno le funzionalità specifiche 41

42 Funzioni Virtuali pure Esempio: Class Rectangle: public Shape { public: void rotate (float); void draw(); }; void Rectangle::draw() { // implementazione specifica per il rettangolo } void Rectangle::rotate(float degree) { // implementazione specifica per il rettangolo } 42

43 Eredità pubblica, privata e protetta La forma generale per derivare la classe D dalla classe B è la seguente: class D : specificatore B { // }; dove specificatore (opzionale) può essere private (per default), protected o public e indica il tipo di accesso che la classe derivata avrà nei confronti della classe base 43

44 Eredità pubblica, privata e protetta Se D deriva da B secondo lo specificatore public (è il più comune): le sezioni public e protected di B lo saranno anche in D protected: le sezioni public e protected di B diventeranno sezioni protected in D (chiusura verso l esterno ma non verso la gerarchia di eredità) private (default): le sezioni public e protected di B diventeranno sezioni private in D (chiusura totale) Nota: il private di B NON è mai accessibile dalla classe derivata D! 44

45 Conversioni personalizzate Il C++ consiste di ridefinire il comportamento degli operatori del linguaggio quando lavorano su tipi definiti dall utente Anche il cast (esplicito o meno) è un operatore, e come tale è ammessa la sua ridefinizione E dunque possibile definire come avviene la conversione tra un tipo ed un altro La sintassi generale è: operator tipo(); 45

46 Conversioni personalizzate Esempio: class Real { protected: float value; public: Real() : value(0) { } /* */ operator float() { return value; } }; Con la definizione precedente è possibile: Real a; float b = (float)a; // conversione esplicita float b = a + 3.5f; // conv. impl. di a in float 46

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter

Dettagli

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti Alessio Bechini - Corso di - Il paradigma OO e le relative metodologie di progettazione Metodologie OO Programmazione orientata agli oggetti La programmazione ad oggetti (OOP) è un paradigma di programmazione

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 11 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

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

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 20 Ottobre 2014 Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 20 Ottobre 2014 1 Tipi non Predefiniti Abbiamo visto: Tipi elementari (int, float, char,...) Tipi composti (arrays e tipi non predefiniti) C++ permette

Dettagli

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Corso Programmazione 1 Capitolo 01: Concetti Elementari

Corso Programmazione 1 Capitolo 01: Concetti Elementari Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it

Dettagli

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Le operazioni di allocazione e deallocazione sono a carico del sistema. Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore 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

Corso di Grafica Computazionale

Corso di Grafica Computazionale Corso di Grafica Computazionale Note di C++ Docente: Massimiliano Corsini Laurea Specialistica in Ing. Informatica Università degli Studi di Siena Note Iniziali Il C++ non ha il concetto dei packages In

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

Generalizzazione di funzioni e di classi. Macro come funzioni generiche Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)

Dettagli

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Informatica 3 Lezione 7 -

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI IL LINGUAGGIO JAVA Dispense per il corso di laboratorio di sistemi I.T.I.S. ABACUS A.S. 2008/2009 Autore: Roberto Amadini Testo di riferimento: La programmazione ad oggetti C++ Java (Lorenzi, Moriggia,

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages 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 Corso di

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 14 - Packages 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 Corso di

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Progettazione del Software

Progettazione del Software L4.4 Progettazione del Software Emiliano Casalicchio Dipartimento di Informatica e Sistemistica SAPIENZA Università di Roma Sede di Rieti http://www.ce.uniroma2.it/courses/psw Seconda Parte La fase di

Dettagli

Protezione. Sistemi Operativi mod. B 16.1

Protezione. Sistemi Operativi mod. B 16.1 Protezione Scopi della Protezione Dominio di Protezione Matrice d Accesso Implementazione della Matrice d Accesso Revoca dei Diritti d Accesso Sistemi Basati su Abilitazioni Protezione basata sul linguaggio

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche. Testo Esercizio Un negozio di musica vende anche libri e riviste musicali. Si intende automatizzare l intero processo, dall approvvigionamento alla vendita. Si analizzino i requisiti e se ne rappresentino

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI SPECIFICI DI APPRENDIMENTO Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)

Dettagli

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione Gerarchie di Tipi Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione Notazione UML Relazione Simbolo Significato Ereditarietà Implementazione Aggregazione Dipendenza

Dettagli

Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a. 2013-2014

Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a. 2013-2014 Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM)- Università degli Studi

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB

SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB Relatore Chiarissimo

Dettagli

progettare buone gerarchie

progettare buone gerarchie progettare buone gerarchie 1 generalizzazione permette di definire dettagli del modello a vari livelli di astrazione 2 generalizzazione le istanze delle classi più specifiche sono istanze anche delle classi

Dettagli

Definizione di classi con array di oggetti

Definizione di classi con array di oggetti Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

VARIABILI LOCALI E GLOBALI (ESTERNE)

VARIABILI LOCALI E GLOBALI (ESTERNE) VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al

Dettagli

BARRA LATERALE AD APERTURA AUTOMATICA...

BARRA LATERALE AD APERTURA AUTOMATICA... INDICE 1) SOMMARIO... 1 2) PRIMO AVVIO... 1 3) BARRA LATERALE AD APERTURA AUTOMATICA... 2 4) DATI AZIENDALI... 3 5) CONFIGURAZIONE DEL PROGRAMMA... 4 6) ARCHIVIO CLIENTI E FORNITORI... 5 7) CREAZIONE PREVENTIVO...

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

Livelli di astrazione

Livelli di astrazione Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

Introduzione a ROOT. 1. Informazioni generali

Introduzione a ROOT. 1. Informazioni generali Introduzione a ROOT 1. Informazioni generali ROOT è un ambiente visualizzazione e trattamento dati interattivo sviluppato al CERN (si veda il sito ufficiale http://root.cern.ch interamente sviluppato in

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE ELEMENTI STATICI E CLASSI STATICHE DISPENSA 15.03 15-03_OOP_Static_[15] Questa dispensa è rilasciata sotto la licenza Creative

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008 UNIVERSITÀ DEGLI STUDI DI BRESCIA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA DIPARTIMENTO DI ELETTRONICA PER L'AUTOMAZIONE Il Pattern PROXY Ex presentazione realizzata

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

Const, friend, static,this

Const, friend, static,this Const, friend, static,this Sommario Lo speficatore const per gli oggetti e le funzioni membro Le funzioni friend I membri static di una classe Il puntatore this Oggetti const Alcuni oggetti devono poter

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Capitolo 12 ereditarietà multipla in C++

Capitolo 12 ereditarietà multipla in C++ Capitolo 12 ereditarietà multipla in C++ Ereditarietà Multipla Shape ReferenceCounted Rectangle RefCounted Rectangle In questo modo si ereditano funzionalità indipendenti che possono cooperare per nuove

Dettagli

2. Strutture dei Sistemi Operativi

2. Strutture dei Sistemi Operativi 1 2. Strutture dei Sistemi Operativi Quali servizi un generico sistema operativo mette a disposizione degli utenti, e dei programmi che gli utenti vogliono eseguire? interfaccia col sistema operativo stesso

Dettagli

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente

Dettagli

Utilizzo e scrittura di classi

Utilizzo e scrittura di classi Utilizzo e scrittura di classi Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 14 novembre, 2001 Gino Perna Implementazione di classi in C++ UN ESEMPIO DI CLASSE: RISULTATI

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale didattico,

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli