Oggetti e classi. La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando:
|
|
- Margherita Donati
- 5 anni fa
- Visualizzazioni
Transcript
1 Classi
2 Oggetti e classi La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando: Come è fatto (i dati) Quali operazioni si possono fare con- e sull oggetto (le funzioni) Esempio: Un libro è una classe, che descrive un insieme di oggetti che hanno ognuno le loro specificità, ma che hanno una descrizione e degli usi in comune. Guerra e Pace è un oggetto che appartiene alla classe di oggetti libro
3 Forma di una classe: membri In C++ la classe è una struttura dati che viene definita attraverso la parola riservata class: class Libro{ private: } public: int ISSBN; string Titolo; string Autore; string CasaEd; Questo codice crea una classe che si chiama Libro. Tutti gli oggetti che appartengono a questa classe, contengono al loro interno le informazioni su titolo, autore, casa editrice, codice ISSBN
4 Membri pubblici e privati class Libro{ private: }; public: int ISSBN; string Titolo; string Autore; string CasaEd; Attenzione al punto e virgola! private: indica che i dati e le funzioni che seguono sono privati della classe, cioè non vi si può accedere se non dall interno della classe. public: indica che i dati e le funzioni che seguono sono pubblici: sono accessibili a qualsiasi parte del programma
5 Creazione di oggetti di una classe Una volta definita una classe, questa si comporta come un qualsiasi altro tipo di dato. Per creare un oggetto della classe Libro dovrò scrivere: #include Libro.h #include <iostream> using namespace std; // Nel file Libro.h devo avere la definizione della classe Libro int main() { // Dichiaro una variabile iliade che appartiene alla classe libro Libro iliade; // Dichiaro una variabile odissea che appartiene alla classe libro Libro odissea; }; return 0;
6 Accesso ai membri di una classe Si ha accesso ai membri di una classe attraverso l operatore. class Libro{ private: }; public: int ISSBN; string Autore; string CasaEd; string Titolo; int main() { Libro odissea; } cout << odissea.titolo << \n ; cout << odissea.autore << \n ; return 0; Cosa c è che non va?
7 Accesso ai membri di una classe Si ha accesso ai membri di una classe attraverso l operatore. class Libro{ private: }; public: int ISSBN; string Autore; string CasaEd; string Titolo; OK: Titolo è un membro pubblico della classe Libro. int main() { Libro odissea; } cout << odissea.titolo << \n ; cout << odissea.autore << \n ; return 0; NO! Autore è un membro privato della classe Libro.
8 Aggiunta di funzioni membro Una funzione membro deve avere almeno il prototipo definito all interno della struttura della classe. class Libro{ private: }; public: int ISSBN; string Titolo; string Autore; string CasaEd; string GetTitolo(); GetTitolo è dichiarata come una funzione membro della classe Libro. Non ha nessun parametro di ingresso e deve restituire una stringa.
9 Aggiunta di funzioni membro Per definire il corpo di una funzione membro ho due scelte: 1) scrivere il codice del corpo concomitantemente alla dichiarazione 2) scrivere il codice separatamente
10 Aggiunta di funzioni membro: soluzione 1 class Libro{ private: }; public: int ISSBN; string Titolo; string Autore; string CasaEd; string GetTitolo() {return Titolo; } Va bene per le funzioni che contengono poche istruzioni
11 Aggiunta di funzioni membro: soluzione 2 class Libro{ private: public: }; int ISSBN; string Titolo; string Autore; string CasaEd; string GetTitolo(); string Libro::GetTitolo() { return Titolo; }
12 Aggiunta di funzioni membro: soluzione 2 string Libro::GetTitolo() { return Titolo; } L operatore :: serve a indicare che la funzione che sto definendo è membro della classe Libro. Se scrivessi la funzione: string GetTitolo() { } return Titolo; Essa verrebbe interpretata come la definizione di una generica funzione GetTitolo(), e non della funzione membro della classe Libro.
13 Funzioni di interfaccia Le funzioni pubbliche che servono per dare accesso ai membri privati di una classe a dati e funzioni esterni alla classe (non-membri), si chiamano funzioni di interfaccia. class Libro{ private: public: }; int ISSBN; string Titolo; string Autore; string CasaEd; string GetTitolo() { return Titolo; } void SetTitolo(string s){ Titolo=s; } string GetAutore() { return Autore; } void SetAutore(string s){ autore=s; } Alcune funzioni di interfaccia
14 Accesso alle funzioni membro Allo stesso modo dei dati membro di una classe, si effettua l accesso alle funzioni membro: int main() { Libro odissea; odissea.settitolo( Odissea ); odissea.setautore( Omero ); cout << odissea.gettitolo(); } return 0;
15 Accesso i membri da puntatori Se ho un puntatore ad un oggetto, posso accedere ai membri dell oggetto tramite l operatore -> int main() { Libro odissea; Libro *pl; pl=&odissea; pl->settitolo( Odissea ); pl->setautore( Omero ); cout << pl->gettitolo(); } return 0;
16 Costruttore di default di una classe Un costruttore è una funzione che inizializza un oggetto di una classe nel momento in cui viene creato. L istruzione: Libro odissea; invoca automaticamente il costruttore di default della classe libro, che costruisce l oggetto odissea, senza inizializzarne il contenuto.
17 Costruttore di una classe La forma generale con cui posso definire un costruttore è: nome_classe() {. } In questo modo posso definire esplicitamente il comportamento del costruttore
18 Costruttore class Libro{ private: public: }; Libro::Libro() { } int ISSBN; string Titolo; string Autore; string CasaEd; Libro(); ISSBN=0; Titolo= ; Autore= ; CasaEd= ; Costruttore
19 Costruttori parametrizzati Posso definire dei costruttori che accetti dei parametri di ingresso, in modo da inizializzare i dati membri della classe a dei valori particolari: class Libro{ private: }; public:.. Libro(int cod, string tit, string aut, string ed).. Libro::Libro(int cod, string tit, string aut, string ed) { ISSBN=cod; Titolo=tit; Autore=aut; CasaEd=ed; }
20 Invocazione dei costruttori parametrizzati Ci sono due modi per invocare il costruttore visto: 1) int main() { Libro odissea(0, Odissea, Omero, BUR ); return 0; } 2) int main() { Libro odissea = Libro(0, Odissea, Omero, BUR ) return 0; }
21 Distruttore Quando un oggetto di una classe esce dal campo di visibilità in cui è stato definito, deve essere eliminato, e la memoria occupata deve essere liberata. La funzione che si occupa di cancellare un oggetto è il distruttore, ed è l esatto complementare del costruttore. La forma generale è: ~nome_classe() {. }
22 Es.: Classe biblioteca Se vogliamo definire una classe Biblioteca, una possibilità è utilizzare la possibilità di allocare dinamicamente una array di oggetti Libro. #include Libro.h // definizione della classe libro class Biblioteca{ public: }; public: Libro *collezione; Biblioteca(); Biblioteca(int dim); Biblioteca::Biblioteca(int dim) { collezione = new Libro[dim]; }
23 Es.: Classe biblioteca #include <iostream> #include Libro.h // definizione della classe libro #include Biblioteca.h // definizione della classe biblioteca using namespace std; int main() { int dim; cout << Qual e il numero di libri da inserire? ; cin >> dim; Biblioteca b(dim); Creo una biblioteca di dimensione dim Scrivo i titoli di alcuni libri presenti nella biblioteca } (b[0]).settitolo= Odissea ; (b[1]).settitolo= Iliade ; (b[2]).settitolo= Lisistrata ; return 0; La funzione termina e invoca i distruttori per le variabili dichiarate al suo interno
24 b Libro * collezione Biblioteca collezione[0] collezione[1] ISSBN 0 Titolo: Odissea Autore: Omero CasaEd: BUR collezione[dim-] collezione[dim-1]
25 Invocazione del distruttore di b Libro * collezione Biblioteca collezione[0] collezione[1] ISSBN 0 Titolo: Odissea Autore: Omero CasaEd: BUR Il contenuto di b viene cancellato: L indirizzo contenuto in collezione viene cancellato, ma tutto ciò a cui punta no! collezione[dim-] collezione[dim-1]
26 Memory leakage Se riservo dello spazio in memoria con new int *a; a=new int[dim]; a a[0] a[1] a[dim-1] e poi il programma cancellasse solo il puntatore all array ma non l array, otterrei che la memoria occupata dall array rimane tale, ma il programma non potrebbe più accedervi, avendo eliminato il puntatore. a=0; a a[0] a[1] a[dim-1]
27 Memory leakage Nei casi in cui si sia riservata della memoria, ma non si sia più in grado di liberarla (ad es. si è cancellato o modificato il puntatore a quall area di memoria), si parla di memory leakage
28 Definizione del distruttore di Biblioteca Per non generare del memory leakage quando fosse invocato il distruttore della classe Biblioteca, Bisogna fare in modo che l intero array di oggetti Libro sia cancellato. Bisogna dunque ridefinire il distruttore: #include Libro.h // definizione della classe libro class Biblioteca{ public: };.. ~Biblioteca() Biblioteca::~Biblioteca() { delete [] collezione; }
29 Biblioteca come lista L utilizzo di array per gestire una collezione di oggetti come una biblioteca non è molto agevole. Quandunque dovessi aggiungere o eliminare libri dovrei ridimensionare l array di libri, o almeno gestire i buchi che si creerebbero nell array. Una soluzione è quella di utilizzare oggetti che siano legati l uno all altro, cioè che contengano l informazione se dopo un libro ne esista un altro nella biblioteca oppure no
30 Biblioteca come lista Biblioteca Libro 1 Libro 2 Libro 3 0
31 Modifica della classe Libro per l utilizzo in una lista class Libro{ private: public: }; class Biblioteca{ private: public: };.. Libro *pnext;.. Libro *collezione; Con la semplice aggiunte alla classe Libro di un puntatore a Libro, ottengo la possibilità di creare una lista
32 Gestione della lista: aggiunta di un oggetto 1 L idea è di inserire un nuovo oggetto all inizio della lista, semplicemente aggiustando i puntatori collezione della Biblioteca, e pnext dell oggetto da inserire Biblioteca Libro 1 Libro nuovo 0 Libro 2 Libro 3 0
33 Gestione della lista: aggiunta di un oggetto 2 L idea è di inserire un nuovo oggetto all inizio della lista, semplicemente aggiustando i puntatori collezione della Biblioteca, e pnext dell oggetto da inserire Biblioteca Libro 1 Libro nuovo Libro 2 Libro 3 0
34 Gestione della lista: aggiunta di un oggetto 3 L idea è di inserire un nuovo oggetto all inizio della lista, semplicemente aggiustando i puntatori collezione della Biblioteca, e pnext dell oggetto da inserire Biblioteca Libro 1 Libro nuovo Libro 2 Libro 3 0
35 Gestione della lista: aggiunta di un oggetto 4 void Biblioteca::AddLibro(Libro *pl) { pl->next=biblioteca.collezione; Biblioteca.collezione=pl; }
36 Gestione della lista: eliminazione di un oggetto 1 Anche per eliminare un oggetto vorrei semplicemente spostare dei puntatori, ma quello che manca è la conoscenza dell oggetto che precede quello che voglio eliminare. Devo dunque prima trovare questo, poi operare il cambio dei puntatori. Biblioteca Libro 1 Libro da eliminare Libro 2 Libro 3 0
37 Gestione della lista: eliminazione di un oggetto 2 Anche per eliminare un oggetto vorrei semplicemente spostare dei puntatori, ma quello che manca è la conoscenza dell oggetto che precede quello che voglio eliminare. Devo dunque prima trovare questo, poi operare il cambio dei puntatori. Biblioteca Libro 1 Ricerca del precedente Libro 2 Libro 3 0
38 Gestione della lista: eliminazione di un oggetto 3 Anche per eliminare un oggetto vorrei semplicemente spostare dei puntatori, ma quello che manca è la conoscenza dell oggetto che precede quello che voglio eliminare. Devo dunque prima trovare questo, poi operare il cambio dei puntatori. Biblioteca Libro 1 Libro 2 Aggiornamento del puntatore Libro 3 0
39 Gestione della lista: eliminazione di un oggetto 4 Anche per eliminare un oggetto vorrei semplicemente spostare dei puntatori, ma quello che manca è la conoscenza dell oggetto che precede quello che voglio eliminare. Devo dunque prima trovare questo, poi operare il cambio dei puntatori. Biblioteca Libro 1 Libro 2 Eliminazione dell oggetto Libro 3 0
40 void Biblioteca::DelLibro(Libro *pl) { Libro *pprec; pprec=cercaprec(pl); if(pprec!=null) { pprec->next=pl->next; delete pl; } } Gestione della lista: eliminazione di un oggetto 5 Libro* Biblioteca::CercaPrec(Libro *pl) { Libro *pcur=collezione; if(pcur==null) return 0; while((pcur->next)!=pl occur->next==null) pcur=pcur->next; } return pcur;
41 Lista concatenata Un modo ancora più semplice di gestire le liste è di utilizzare per ogni oggetto sia un puntatore all elemento successivo, che uno all elemento precedente. Biblioteca Libro 1 Libro 2 Libro 3 0
42 Strutture dati: la coda La coda è una struttura di dati sequenziali in cui sono definite due funzioni: 1) enqueue : inserimento nella coda 2) dequeue : estrazione dalla coda che devono essere costruite in modo tale che gli elementi in coda vengono estratti nell ordine con cui sono stati inseriti. Coda FIFO (first in first out)
43 Strutture dati: lo stack Lo stack (pila) è una struttura di dati sequenziali in cui sono definite due funzioni: 1) push : inserimento nello stack 2) pop : estrazione dallo stack che devono essere costruite in modo tale che gli elementi in coda vengono estratti nell ordine inverso in cui sono stati inseriti. Stack LIFO (last in first out) E possibile pensare allo stack come ad un tubo di palle da tennis. Quando inserisco la prima, essa rotola sul fondo. Se ne inserisco una seconda, essa rotolerà sulla prima. In tal modo le prime palle inserite sono bloccate nel tubo fino a che non siano rimosse tutte le palle inserite successivamente.
Fondamenti di Informatica
Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste
DettagliIl 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
DettagliLaboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome
Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato
DettagliLa 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
DettagliLaboratorio 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
Dettaglitipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
DettagliFondamenti 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
DettagliLaboratorio 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
DettagliIntroduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p
Introduzione Liste DD p. 449-474 KP p.397-424 Abbiamo fin ora studiato strutture dati con dimensione fissa: vettori e matrici strutture Introduciamo ora le strutture dati dinamiche (liste concatenate):
DettagliAGGIORNAMENTI 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
DettagliClasse Squadra. #include <iostream> using namespace std;
Classe Squadra Si vuole scrivere un programma che gestisce la classifica di un campionato tra squadre di calcio, ognuna identificata dal proprio nome. Il programma deve essere in grado di assegnare un
DettagliInformatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda
Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema
DettagliEsercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list
Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza
DettagliFile: /home/peppino/area_lavori/ese enti/oggetti/timbro_classe.cpp Pagina 1 di 5
File: /home/peppino/area_lavori/ese enti/oggetti/timbro_classe.cpp Pagina 1 di 5 * esempi_c++/sorgenti/timbro_classe.cpp * * Una classe semplice per apprendere la programmazione * ad oggetti ( OOP ). *
DettagliStandard Template Library
Standard Template Library Standard Template Library Progettata per gestire insiemi di dati in modo comodo ed efficiente senza conoscere dettagli implementativi Fa parte dello standard C++ È basata a sulla
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista
DettagliCORSO DI PROGRAMMAZIONE
ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE PILE E CODE DI DATI DISPENSA 11.02 11-02_Pile_Code_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative Common CC BY-NC-SA.
DettagliAllocazione dinamica memoria
Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo
DettagliADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)
ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente
DettagliArchitetture dei Calcolatori
Architetture dei Calcolatori Lezione 8 -- 01/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Create da: F. Lo Presti Modificate da: E.Casalicchio Le procedure q In ogni linguaggio
DettagliLaboratorio di Programmazione Lezione 3. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello
DettagliCorso 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
DettagliLaboratorio 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
DettagliOOP 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
DettagliStrutture 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
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
Dettagliin più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...
ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... una stringa è qualcosa che si può concatenare, spezzare in più stringhe,...
DettagliGestire le situazioni di errore
Gestire le situazioni di errore #include using namespace std; Classe VettoreDiInteri const int MAX = 10; class VettoreInteri { int v[max]; public: ; Gestire le situazioni di errore Ottenere
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Inserimento in ordine
DettagliEsercizio. Vogliamo scrivere delle funzioni che ci permettano di estrarre delle informazioni statistiche da un vettore (array) di dati:
Esercizio Vogliamo scrivere delle funzioni che ci permettano di estrarre delle informazioni statistiche da un vettore (array) di dati: Media e deviazione standard Mediana Vogliamo poi provare l utilizzo
DettagliI costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard
I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei
DettagliListe con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }
Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio
DettagliLa programmazione Object Oriented e le sue applicazioni in Fisica.
La programmazione Object Oriented e le sue applicazioni in Fisica. Gabriella Cataldi, INFN Lecce Daniele Martello, dip. Fisica & INFN Lecce definizione di variabili Un metodo per automatizzare il processo
DettagliLaboratorio 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
DettagliLa 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
DettagliProgrammazione orientata agli oggetti: le classi
Programmazione orientata agli oggetti: le classi Oggetti e tipi di dati La programmazione che abbiamo visto finora agisce su variabili che appartengono a tipi di dati predefiniti: interi, floating point,
Dettaglicostruttori 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,
DettagliCorso 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
DettagliSommario. Collezioni. Collezioni: Liste: Pile (stack) Collezioni. Collezioni. Collezioni Struttura indicizzata (array) Nodi
Sommario : Array e liste. Nodi: dati e riferimenti. Liste: LinkedList: specifica e implementazione. Prestazioni. Pile (stack) Informatica Medica, I semestre, C++ 1 Una collezione (contenitore) è un oggetto
DettagliProgrammazione 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
DettagliListe. Costo operazioni Tutte le operazioni hanno costo O(1)
Liste Liste (List, Linked List) Una sequenza di nodi, contenenti dati arbitrari e 1-2 puntatori all'elemento successivo e/o precedente Contiguità nella lista contiguità nella memoria Costo operazioni Tutte
DettagliConcetto di stream. c i a o \0. c i a o \0. c i a o \0
Concetto di stream Uno stream è un flusso di byte che permette al programma di comunicare con l esterno (es. con periferiche di input/output) c i a o \0 c i a o \0 c i a o \0 Stream di uscita standard
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliEsercizi su strutture dati
Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliLezione 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
DettagliListe concatenate e allocazione dinamica
Liste concatenate e allocazione dinamica 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, e seguita
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Capitolo 4 - Strutture di dati elementari This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit
DettagliLa programmazione nel linguaggio C. Liste
Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 28 3) sequenza di caratteri ( x r f ) sequenza di
DettagliVariabili. Programma principale: funzione main. Funzioni
Un programma descrive al computer, in estremo dettaglio, la sequenza di passi (istruzioni) necessari a svolgere un determinato compito o risolvere un particolare problema. Un linguaggio di programmazione
DettagliCesare Rota. Programmare con C++
Cesare Rota Programmare con C++ Questo fascicolo deve essere allegato al volume Programmare con C++ di Cesare Rota ISBN 978-88-203-4248-7, ne è parte integrante e non può essere venduto separatamente EDITORE
DettagliDefinizione 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
DettagliAssembly IV Le procedure
rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliDefinizione 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
DettagliProgrammazione 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.
DettagliProgrammazione orientata agli oggetti. Ivan Lanese e Cosimo Laneve
Programmazione orientata agli oggetti Ivan Lanese e Cosimo Laneve Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Programmazione orientata agli oggetti È un paradigma di programmazione
Dettagli10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica
Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli
Dettagli1 Strutture di dati dinamiche. 2 Vector come esempio di array dinamico
1 Strutture di dati dinamiche Le strutture dinamiche servono per memorizzare i dati dei quali non si sa a priori la loro dimensione. Ad esempio non sappiamo a priori quanti contatti avremo nella nostra
DettagliUniversità 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
DettagliC++ 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
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliAlberi Binari Alberi Binari
Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliFunzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)
Funzioni di libreria Richiedono tutte #include x x a x fabs(x) sqrt(x) pow(x,a) x e ln(x) exp(x) log(x) log 10 ( x ) log10(x) sen(x) cos(x) tg(x) arcsen(x) arccos(x) arctg(x) senh(x) cosh(x) tgh(x)
DettagliEsercizi Strutture dati di tipo astratto
Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata
DettagliI PUNTATORI E LE STRUTTURE DATI DINAMICHE. Cosimo Laneve/Ivan Lanese
I PUNTATORI E LE STRUTTURE DATI DINAMICHE Cosimo Laneve/Ivan Lanese argomenti 1. dichiarazioni di puntatori 2. le operazione su puntatori (NULL, new, delete, &, *) 3. puntatori passati come parametri e
DettagliLaboratorio 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
DettagliCorso 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
DettagliLaboratorio di Algoritmi e Strutture Dati. Pile
Laboratorio di Algoritmi e Strutture Dati Pile Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso dal dott.
DettagliIntroduzione 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
DettagliFondamenti 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
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Memoria stack ed heap (1) L'area di memoria stack é quella in cui viene allocato un pacchetto di dati non appena l'esecuzione passa dal programma chiamante a una funzione.
DettagliEsercizio 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
DettagliOrario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati
Orario delle lezioni LABORATORIO martedì 15.00-18.00 TEORIA mercoledì 16.00 18.00 lab Turing aula P/4 Libro di testo Data Structures & Algorithms in Java Michael T. Goodrich Roberto Tamassia John Wiley
DettagliNella scorsa lezione: Array multidimensionali. Mappa di memorizzazione. Esempio: ordinamento di parole. Argomenti di main.
Nella scorsa lezione: Array multidimensionali. Mappa di memorizzazione. Esempio: ordinamento di parole. Argomenti di main. Puntatori a funzioni. Array di puntatori a funzioni. Esempio: ordinamento di parole
Dettaglialgoritmi e strutture di dati
algoritmi e strutture di dati tipi astratti di dato (pile, code, liste implementate tramite array) m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
DettagliProgrammazione template
Programmazione template Funzionalità ed operatori Anche se con comportamenti simili, i vari tipi (int, float, double) in C++ non sono interscambiabili automaticamente una medesima azione (es. la somma)
DettagliUNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo A.A. 2018-19 Test Finale Roma, 17 gennaio 2019 1) Le variabili A, B e C sono dichiarate int.
DettagliFondamenti di Informatica Ing. Biomedica
Fondamenti di Informatica Ing. Biomedica Esercitazione n.8 Matrici Antonio Arena antonio.arena@ing.unipi.it Fondamenti di Informatica - Esercitazione n.8 2 Matrici In C++ viene trattata come array multi-dimesionale.
DettagliLE STRUTTURE DATI DINAMICHE
LE TRUTTURE DTI DIMICHE Talvolta è necessario allocare spazio di memoria durante l esecuzione di un programma oppure creare variabili di durata temporanea. Esempio: Leggere e memorizzare dei numeri interi
DettagliIngegneria 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
DettagliAncora 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
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char
DettagliAlgoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2001/2002 APA - 2 1 Sommario ADT Pile Code. A.A. 2001/2002 APA - 3 ADT Le regole che
DettagliFondamenti 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
DettagliLe procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)
Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo
DettagliSommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano
Tipo stringa Tipo booleano Sommario Ricorsione: Definizione Chiamata di funzione Ricorsione in coda Ricorsione non in coda Ricorsionei eccessiva Esempio di ricorsione: ricerca binaria Tipo stringa Il C++
Dettaglidott. Sabrina Senatore
dott. Sabrina Senatore Dipartimento di Informatica Riepilogo strutture 1 Sintassi della dichiarazione: typedef struct nome_tipo { Dichiarazione dei campi nome_tipo; typedef struct point{ int x; int y;
DettagliEreditarietà: concetti di base
: concetti di base L ereditarietà è uno dei concetti base della programmazione ad oggetti Concetto di base: l ereditarietà permette di usare una classe precedentemente definita per la definizione di una
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce
DettagliPile e code. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Pile e code Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2002/2003 APA - Pile e code 2 Politecnico di Torino Pagina 1 di 23 Sommario
DettagliESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100
ESERCIZIO 1 Scrivete un programma per la gestione delle informazioni relative ai voli giornalieri in partenza da un certo aeroporto. Il programma deve leggere da file le informazioni relative ai voli,
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 09 ADT: Lista, Pila, Coda A. Miola Marzo 2007 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti Tipo
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dettagli