Il paradigma OO e le Classi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il paradigma OO e le Classi"

Transcript

1 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 seguenti concetti: 1. astrazione 2. encapsulation e data hiding 3. polimorfismo 4. inheritance 5. riutilizzo del codice la classe incarna in pieno la filosofia OO: permette di tradurre una astrazione in un tipo definito dall utente; incorpora la rappresentazione dei dati e dei metodi per la loro manipolazione (interfaccia con l utilizzatore).

2 Progettazione di una classe in C++ Supponiamo di disegnare una classe che permette di gestire gli studenti iscritti al corso di Laurea in Fisica. Le operazioni (semplificate) che uno studente può fare sono: iscriversi al primo anno di un corso di laurea; rinnovare la propria iscrizione ad un anno successivo (se il numero di CFU sostenuti lo permettono); PUBLIC INTERFACE sostenere e registrare degli esami; mostrare la propria matricola (ove richiesta); visualizzare il numero di CFU acquisiti. Le informazioni che devono essere memorizzate sono: il numero di matricola; i dati anagrafici (nome e cognome); il numero di CFU sostenuti; l anno di corso al quale è iscritto. INTERNAL DATA Creazione di una Classe Per scrivere una classe è necessario fornire: 1. una dichiarazione della classe che descrive le componenti dei dati in termini dei data members, e realizza l interfaccia pubblica in termini di function members (chiamati anche semplicemente metodi). 2. le definizioni dei metodi della classe che forniscono l implementazione delle funzioni, metodi della classe. Data Hiding Public Interface class classname private: data member declarations public: member function prototypes ;

3 Class Declaration: Studente // Dichiarazione Classe Studente #include <cstring> class Studente private: int matricola; char nome[30]; char cognome[50]; int anno_corso; int cfu_acquisiti; public: void iscrivi_i_anno(int matricola, const char * cognome, const char * nome); void registra_esame( int cfu ); int get_matricola( ); int get_cfu( ); void stampa_sommario( ); ; Class Members Implementation: Studente (parte 1) // Member Functions per la Classe Studente void Studente::iscrivi_I_anno( int c, const char * cg, const char * nm) std::strncpy( nome, nm, 30 ); nome[29] = \0 ; std::strncpy( cognome, cg, 50 ); cognome[49] = \0 ; matricola = codice; cfu_acquisiti = 0; void Studente::stampa_sommario( ) using namespace std; cout << "cognome: " << cognome; cout << " nome: " << nome << endl; cout << " matricola: " << matricola << endl; cout << " anno di corso: " << anno_corso << endl; cout << " CFU superati: " << cfu_acquisiti << endl;

4 Class Members Implementation: Studente (parte 2) // Registra un nuovo esame int Studente::registra_esame( int cfu ) if ( cfu < 0 ) return; cfu_acquisiti += cfu; // Ritorna il numero di matricola dello Studente int Studente::get_matricola( ) return matricola; // Ritorna il CFU acquisiti int Studente::get_cfu( ) return cfu_acquisiti; // Esempio di utilizzo della classe Studente Studente iscritto cognome: Rossi nome: Aldo int main( ) matricola: 5432 anno di corso: I using namespace std; CFU superati: 0 Dopo il primo esame - CFU: 12 Studente aldo; aldo.iscrivi_i_anno(5432, "Rossi", "Aldo" ); cout << "Studente iscritto" << endl; aldo.stampa_sommario( ); // Registra Sperimentazioni I aldo.registra_esame( 12 ); cout << "Dopo il primo esame -"; << "CFU: " << aldo.get_cfu( ) << endl; return 0;

5 I metodi Costruttori Una volta definita la classe è possibile dichiarare degli oggetti Studente aldo; Ma non è possibile inizializzare direttamente i suoi dati, come si farebbe per altri tipi: int year = 2009; // codice valido struct point double x, y; ; point origin = 0, 0; // valido Studente s = , "Rossi", "Mario"; // Errato! Per inizializzare i dati di una classe è necessario invocare un metodo speciale chiamato costruttore. Perchè soltanto all interno di un metodo è possibile accedere alla parte privata della classe. Definiamo un costruttore per la classe Studente // Costruttore per la Classe Studente Studente::Studente( int c, const char * cg, const char * nm) std::strncpy( nome, nm, 30 ); nome[29] = \0 ; std::strncpy( cognome, cg, 50 ); cognome[49] = \0 ; matricola = codice; cfu_acquisiti = 0; // Default Constructor Studente::Studente( ) nome[0] = \0 ; cognome[0] = \0 ; matricola = 0; cfu_acquisiti = 0; Il compilatore crea un Default Constructor vuoto se non è fornito dal programmatore Studente::Studente( )

6 La Classe Studente rivista // Dichiarazione Classe Studente #include <cstring> class Studente private: int matricola; char nome[30]; char cognome[50]; int anno_corso; int cfu_acquisiti; public: Studente( ); Studente(int matr, const char * cognome, const char * nome); void registra_esame( int cfu ); int get_matricola( ); int get_cfu( ); void stampa_sommario( ); ; Utilizzo dei costruttori della classe Studente In che modo è possibile creare e inizializzare un oggetto: Studente a(23,"rossi","aldo"); Studente a = Studente(544,"Verdi","Carla"); È possibile anche creare un oggetto dinamicamente: Studente *p = new Studente(23,"Rossi","Aldo"); A volte viene invocato il default constructor : Studente f; Il costruttore di default viene sempre invocato per array di oggetti Studente lista[120]; anche se si inizializzano chiamando esplicitamente il costruttore Studente lista[2] = Studente(543,"Rossi","Aldo"), Studente(544,"Verdi","Carla") ;

7 Il metodo Destructor Una volta che un oggetto viene creato invocando il suo Costruttore, il programma si prende la responsibilità di tenere traccia dell oggetto fino a quando deve essere eliminato. A questo punto viene invocato un metodo chiamato Distruttore che si occupa di liberare tutte le risorse occupate dall oggetto. nella maggior parte dei casi il Distruttore è vuoto ma nel caso in cui si creasse dinamicamente della memoria all interno del Costruttore, questa deve essere liberata nel Distruttore Studente::Studente( int c, const char * cg, const char * nm) int n = strlen( cg ); cognome = new char[ n+1 ]; std::strncpy( cognome, cg, n ); cognome[n] = \0 ;... Studente::~Studente( ) delete [] cognome;... La Classe Studente rivista (2) // Dichiarazione Classe Studente #include <cstring> class Studente private: int matricola; char * nome; char * cognome; int anno_corso; int cfu_acquisiti; public: Studente( ); Studente(int matr, const char * cognome, const char * nome); ~Studente( ); void registra_esame( int cfu ); int get_matricola( ); int get_cfu( ); void stampa_sommario( ); ;

8 // Esempio di utilizzo della classe Studente Studente iscritto cognome: Rossi nome: Aldo int main( ) matricola: 5432 anno di corso: I using namespace std; CFU superati: 0 Dopo il primo esame - CFU: 12 Studente aldo( 5432, "Rossi", "Aldo" ); cout << "Studente iscritto" << endl; aldo.stampa_sommario( ); // Registra Sperimentazioni I aldo.registra_esame( 12 ); cout << "Dopo il primo esame -"; << "CFU: " << aldo.get_cfu( ) << endl; return 0;

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

4. Accesso diretto per gli archivi con record a lunghezza costante

4. Accesso diretto per gli archivi con record a lunghezza costante 4. Accesso diretto per gli archivi con record a lunghezza costante Nell accesso diretto (in inglese, random) al file binario, le operazioni di lettura o scrittura devono essere precedute dall operazione

Dettagli

Esempio: Costruttori ed ereditarietà

Esempio: Costruttori ed ereditarietà Esempio: 1 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il costruttore di default (quello senza parametri) Se in un costruttore

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

La classe std::vector della Standard Template Library del C++

La classe std::vector della Standard Template Library del C++ La classe std::vector della Standard Template Library del C++ Alberto Garfagnini Università degli studi di Padova 23 Ottobre 2013 Programmazione generica in C++ : i Template I templates sono probabilmente

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

INPUT: 2 parametri. double atan2( double y, double x) OUTPUT: risultato del calcolo. Le funzioni. Implementazioni di funzioni dell utente

INPUT: 2 parametri. double atan2( double y, double x) OUTPUT: risultato del calcolo. Le funzioni. Implementazioni di funzioni dell utente Le funzioni in C++ (CAP 6) Alberto Garfagnini e Marco Mazzocco Università degli studi di Padova A.A. 14/15 Le funzioni Sono i mattoni fondamentali per la costruzione dei programmi in C++ (e C) Il prototipo

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

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

Classi e oggetti Seconda parte. Oggetti dinamici

Classi e oggetti Seconda parte. Oggetti dinamici Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Classi e oggetti Seconda parte Paolo Trunfio * * DEIS, Università della Calabria

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Operatore? Tipo di dato: struct La ricorsione Funzioni ricorsive Esercizi proposti 26/04/2012 2 Operatore? L'operatore? può essere

Dettagli

Linguaggio C++ Linguaggi di terza generazione

Linguaggio C++ Linguaggi di terza generazione Linguaggio C++ Linguaggi di terza generazione Insieme di primitive ad alto livello, ognuna traducibile in una sequenza di primitive in linguaggio macchina Es.: pesolordo pesocarico + pesoveicolo Due load,

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

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Le classi. Costruttori

Le classi. Costruttori Costruttori Le classi Usare una funzione per inizializzare membri di una classe viene considerato poco elegante. Ci si potrebbe dimenticare di invocare la funzione di inizializzaione o, peggio, chiamarla

Dettagli

Il C nel C++: Funzioni

Il C nel C++: Funzioni Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma

Dettagli

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++ Informatica 3 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 Lezione 7 -

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Dizionari

Laboratorio di Algoritmi e Strutture Dati. Dizionari Laboratorio di Algoritmi e Strutture Dati Dizionari Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso dal

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

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

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

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

Laboratorio di Programmazione e Calcolo

Laboratorio di Programmazione e Calcolo UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2016-17 0) Struttura del Corso 1) Trattamento

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

Programmazione orientata agli oggetti. Ivan Lanese

Programmazione orientata agli oggetti. Ivan Lanese Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows

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

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

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

Dettagli

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco Sperimentazioni I Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 10 Novembre 2011 La scrittura di un programma Modellizzazione programma Flowcharts Pseudocode Scrittura del codice

Dettagli

Programmazione Orientata agli Oggetti

Programmazione Orientata agli Oggetti Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato

Dettagli

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco Sperimentazioni I Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Ottobre 2013 La scrittura di un programma Modellizzazione programma Flowcharts Pseudocode Scrittura del codice Esercizi

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

Ereditarietà e polimorfismo

Ereditarietà e polimorfismo Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Ereditarietà e polimorfismo Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi

Dettagli

Introduzione alle classi

Introduzione alle classi Introduzione alle classi Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 23 ottobre, 2001 Gino Perna Esempi di semplici classi in C++ INTRODUZIONE AGLI OGGETTI Fin dall'inizio

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

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

Introduzione al polimorfismo. Il polimorfismo è la possibilità di utilizzare una unica interfaccia per più metodi

Introduzione al polimorfismo. Il polimorfismo è la possibilità di utilizzare una unica interfaccia per più metodi Polimorfismo Introduzione al polimorfismo Il polimorfismo è la possibilità di utilizzare una unica interfaccia per più metodi Polimorfismo Il polimorfismo al momento della compilazione si ottiene con con

Dettagli

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso

Dettagli

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S.

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S. 1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S. Molinari 4: Il programma gestisce gli articoli di un negozio

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Realizzazione di Liste 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 Bari

Dettagli

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

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 31 Ottobre 2014 Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 31 Ottobre 2014 1 Reimpiego di Codice Un punto fondamentale nei linguaggi di programmazione moderni è la possibilità di riutilizzo del codice. Nel

Dettagli

Sommario. Le strutture Le classi

Sommario. Le strutture Le classi Le Classi in C++ Sommario Le strutture Le classi Introduzione Iniziamo a parlare di strutture dati di tipo struct cioè di aggregati di dati Muoveremo poi dalla analisi dei limiti di queste strutture per

Dettagli

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Catia Trubiani. Laboratorio di Ingegneria del Software a.a 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

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

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Strutture di dati Laboratorio di Informatica 5. Strutture / Array di oggetti / Pila&Coda in C++ Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna

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

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

Passaggio parametri puntatore

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

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Dettagli

Laboratorio di Programmazione e Calcolo

Laboratorio di Programmazione e Calcolo UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI Laboratorio di Programmazione e Calcolo 6 crediti a cura di Severino Bussino Anno Accademico 2016-17 0) Struttura del Corso 1) Trattamento

Dettagli

Introduzione al C++ Corso di C++ INFN LNS 13 Dicembre Corrado Santoro

Introduzione al C++ Corso di C++ INFN LNS 13 Dicembre Corrado Santoro Introduzione al C++ Corso di C++ INFN LNS 13 Dicembre 2010 Corrado Santoro Concetto di Oggetto Proposto del 1966 nell'ambito dell'ai per rappresentare l' universo del discorso (ambiente di riferimento

Dettagli

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C tipi di dati definiti dall utente Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Tipi di dati in C Predefiniti

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

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico Francesco Tortorella Le strutture Gli array permettono la sola aggregazione di variabili dello stesso tipo. Quindi

Dettagli

Esercizi. Cosa fa questa linea di codice: while (*a++=*b++); Costruiamo una funzione che la utilizzi (hint. Usiamo I char..)

Esercizi. Cosa fa questa linea di codice: while (*a++=*b++); Costruiamo una funzione che la utilizzi (hint. Usiamo I char..) Esercizi Cosa fa questa linea di codice: while (*a++=*b++); Costruiamo una funzione che la utilizzi (hint. Usiamo I char..) F.S. Cafagna, Linguaggi di programmazione avanzati: C++, XXIII ciclo 160 Esercizi

Dettagli

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una classe Modulo

Dettagli

Ereditarietà e Polimorfismo

Ereditarietà e Polimorfismo Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

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

IL CONCETTO DI CLASSE

IL CONCETTO DI CLASSE IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi

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

Gestione di stringhe. Le stringhe in C/C++

Gestione di stringhe. Le stringhe in C/C++ Alessio Bechini - Corso di - Gestione di stringhe Parte del materiale proposto è stato gentilmente fornito da G. Lipari Le stringhe in C/C++ In C e in C++ non esiste un vero e proprio tipo stringa. Una

Dettagli

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi: Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi: Vettore(int n): crea un oggetto Vettore contente n elementi, inizializzati

Dettagli

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5 Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare

Dettagli

Sommario. Le differenze fra C e C++ Funzioni. Varie. Memoria. commenti. parametri per funzioni funzioni inline overloading di funzione

Sommario. Le differenze fra C e C++ Funzioni. Varie. Memoria. commenti. parametri per funzioni funzioni inline overloading di funzione Introduzione al C++ Sommario Le differenze fra C e C++ commenti Funzioni parametri per funzioni funzioni inline overloading di funzione Varie input/output nuovi header punto di dichiarazione delle variabili

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

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 2

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

Fondamenti di Informatica

Fondamenti di Informatica Passaggio di parametri in C++ Il passaggio dei parametri tra funzione chiamante e funzione chiamata in C++ avviene secondo due modalità: Fondamenti di Informatica 16. Funzioni in C++ (parte 2) per valore

Dettagli

Fondamenti di Informatica T-1. Classi & vettori

Fondamenti di Informatica T-1. Classi & vettori Classi & vettori 2 Array Un vettore (array) è un insieme ordinato, di dimensione fissa, di oggetti dello stesso tipo. Esempio: array capace di contenere al più 10 numeri interi int[] arrayinteri = new

Dettagli

L organizzazione dei programmi

L organizzazione dei programmi L organizzazione dei programmi Lo sviluppo top-down L.S. Touschek - A.S. 2015/2016 - I fondamenti del Linguaggio C F. Cardarelli Lo sviluppo top-down I problemi complessi Blocco 1 Istruzione 1 Istruzione

Dettagli

I Template in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di: Giancarlo Cherchi

I Template in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di: Giancarlo Cherchi I Template in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di: Giancarlo Cherchi Introduzione Cosa sono i Template? TEMPLATE? MODELLI Funzionalità non presenti nelle prime versioni del

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

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

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

Programmazione modulare

Programmazione modulare Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere

Dettagli

Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Commenti Non aumentano la dimensione del programma eseguibile ma si rivelano utili per riassumere il comportamento

Dettagli

Introduzione agli oggetti

Introduzione agli oggetti Introduzione agli oggetti Raffaella Brighi, a.a. 2007/08 Corso di Algoritmi e programmazione. A.A. 2007-08 CdL Operatore Informatico Giuridico. L astrazione L assembler e i linguaggi imperativi (fortran,

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

DICHIARAZIONI, FUNZIONI E PASSAGGIO DEI PARAMETRI. Cosimo Laneve

DICHIARAZIONI, FUNZIONI E PASSAGGIO DEI PARAMETRI. Cosimo Laneve DICHIARAZIONI, FUNZIONI E PASSAGGIO DEI PARAMETRI Cosimo Laneve 2 ARGOMENTI (CAP 4 E 5 DI SAVITCH) 1. dichiarazioni e definizioni 2. portata di una dichiarazione 3. funzioni 4. passaggio dei parametri

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

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 Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO

Dettagli

Approfondimento su PHP

Approfondimento su PHP Approfondimento su PHP UniversiBO www.universibo.unibo.it 9 maggio 2011 UniversiBO www.universibo.unibo.it Approfondimento su PHP 1 / 12 Outline OOP in PHP 1 OOP in PHP Introduzione Esempio di classe Class

Dettagli

Dizionari. Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 5 dicembre, Gino Perna

Dizionari. Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 5 dicembre, Gino Perna Dizionari Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 5 dicembre, 2001 Gino Perna Uso ed utilizzo di tabelle di Hash PREFAZIONE I Dizionari sono strutture di dati che

Dettagli

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++ Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde vers.0 in lavorazione Docente SAFFI FABIO Contenuti Struttura del file sorgente...2 Organizzazione della directory di lavoro...2 Esercizi sulle funzione

Dettagli

Oggetti. Oggetti e classi. Utilizzo di classi. Classe

Oggetti. Oggetti e classi. Utilizzo di classi. Classe Oggetti Oggetti e classi Oggetto: entità che può essere manipolata nel programma mediante l invocazione di metodi Black box dotato di:! Interfaccia pubblica " Metodi visibili " Comportamento dell oggetto!

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

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 Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,

Dettagli

Dispensa di Informatica III.1

Dispensa di Informatica III.1 PROGRAMMAZIONE AD OGGETTO (OOP) La dispensa di seguito proposta si pone come tutorial per poter porre le basi per la realizzazione di MODULI SOFTWARE che vengano realizzati con un paradigma di programmazione

Dettagli

Introduzione ai Dati Astratti. Giuliano Armano 1

Introduzione ai Dati Astratti. Giuliano Armano 1 Introduzione ai Dati Astratti Giuliano Armano 1 Terminologia Tipica Perché i dati astratti? A, B, C: procedure S: struttura dati Per accedere ad S le procedure A, B e C devono conoscerne i dettagli! Si

Dettagli

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie 16 - Ereditarietà, tipi e gerarchie 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

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1 Informatica 3 Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una

Dettagli