Calcolatori Elettronici III

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Calcolatori Elettronici III"

Transcript

1 Slide 1 Politecnico di Torino sede di Alessandria Calcolatori Elettronici III ing. Dino Canonico dip. di Automatica e Informatica telefono: posta elettronica: dino@polito.it

2 Slide 2 Indice Parte I dai linguaggi procedurali al paradigma ad oggetti Introduzione Linguaggi procedurali Linguaggi ad oggetti Classi Ereditarietà Ridefinizione Classi virtuali Parte II: implementazione C++ Implementazione C++ Il costrutto class Regole di visibilità Implementazione dei metodi Costruttori e distruttori Overloading dei metodi Allocazione statica di oggetti Allcoazione dinamica di oggetti Ereditarietà in C++ Overloading degli operatori Slide

3 Slide 72 implementazione C++ il C++ implementa i meccanismi del paradigma ad oggetti con costrutti appositi le classi descrivono le potenzialità degli oggetti da essi instanziati vengono supportati i meccanismi di ereditarietà (semplice e multipla) data hiding overloading di operatori e funzioni vengono mantenuti inoltre i costrutti e le caratteristiche del linguaggio C

4 Slide 73 il costrutto class... il costrutto class definisce una classe è idealmente simile al costrutto struct del C, con due differenze sostanziali permette di raggruppare in una struttura non solo variabili ma anche funzioni permette di dividere le variabili e li funzioni in pubbliche (visibili ed utilizzabili da elementi esterni alla classe) e private (utilizzabili solo all interno della classe) viene scritto all interno di un file (generalmente.h), eventualmente insieme al resto del codice

5 Slide il costrutto class... esempio sia data una classe che modelli un semplice contatore, capace di incrementare e decrementare il proprio valore fornire il proprio valore all esterno se ne scriva l implementazione C++

6 Slide il costrutto class... dichiarazione del nome dichiarazione componenti private class counter int valore; public: void incrementa (); void decrementa (); int leggi (); dichiarazione componenti pubbliche

7 Slide il costrutto class le definizioni delle componenti pubbliche e private seguono la sintassi del costrutto struct l insieme delle componenti pubbliche della classe corrisponde all interfaccia della classe stessa le componenti private sono invece funzioni e variabili di servizio, utilizzabili liberamente all interno della classe e quindi da metodi (funzioni) sia pubblici che privati, ma vengono nascosti agli utilizzatori terzi della classe questo procedimento si dice data hiding

8 Slide 77 regole di visibilità gli elementi (metodi e membri) di una classe possono essere dichiarati come public: visibili a chi fa uso della classe private: visibili solo alla classe stessa ma invisibili all esterno i membri possono anche esseer definiti protected: sono visibili alla classe stessa e alle classi che ereditano da essa le variabili comuni mantengono le regole di visibilià del C

9 Slide 78 funzioni friend è possibile definire funzioni che, pur essendo esterne ad una classe, ne possono manipolare i valori privati queste funzioni, pur essendo definite all interno dell interfaccia della classe non ne fanno parte queste funzioni devono essere definite tramite la keyword friend è possibile definire friend anche intere classi è una metodologia molto usata nel campo dell overloading degli operatori

10 Slide 79 implementazione dei metodi... dopo aver definito i metodi pubblici e privati occorre scriverne l implemetazione i membri vengono implementati separatamente rispetto alla definizione della classe e vi si collegano tramite la dichiarazione <nome_classe>:: anteposta al nome del metodo

11 Slide implementazione dei metodi... si scriva l implementazione dei metodi della classe counter void counter::incrementa () valore ++; void counter::decrementa () valore ; int counter::leggi () return valore;

12 Slide implementazione dei metodi i metodi vengono implementati all interno del listato tutti i metodi (pubblici e privati) possono "maneggiare" le variabili pubbliche e private all esterno però sono visibili solo i metodi pubblici e le variabili (o membri o attributi) pubbliche

13 Slide 82 costruttori e distruttori... la maniera nella quale vengono create le istanze di una classe non è automatica, ma va specificata in un apposito metodo (o in una apposita serie di metodi) detto costruttore allo stesso modo, alla fine dell elaborazione, le variabili oggetto allocate devono liberare le risorse impiegate nelle modalità espresse dal distruttore in una classe possono esistere più costruttori, tra i quali chi istanzia l oggetto (il programmatore) sceglie volta per volta quello che ritiene opportuno, ma un solo distruttore

14 Slide costruttori e distruttori... il costruttore che non richiede alcun parametro in ingresso è detto costruttore di default il costruttore viene richiamato automaticamente se non si fa una allocazione esplicita discorso è analogo per quanto riguarda il distruttore i costruttori hanno lo stesso nome della classe, il distruttore ha lo stesso nome della classe preceduto dal simbolo tilde costruttori e distruttore non hanno un valore di ritorno

15 Slide costruttori e distruttori class counter... public: counter (); counter (int); ~counter ();... counter::counter () printf ("costruttore\n"); valore = 0; counter::counter (int init) printf ("costruttore a %d\n", init); valore = init; counter::~counter () printf ("distruttore\n");

16 Slide 85 membri statici di una classe un membro statico di una classe è un membro in cui indirizzo è condiviso da tutte le istanze della classe in questione class counter static valore; public: void incrementa (); void decrementa (); int leggi (); int counter::valore = 0 counter c1 valore counter c1 counter c1

17 Slide 86 overloading dei metodi... è possibile che una classe abbia più metodi, identici per quanto riguarda nome e tipo del valore di ritorno, ma che accettino in ingresso parametri diversi questo comportamento (detto polimorfismo o overloading dei metodi) aggiunge flessibiltà agli oggetti scritti in C++

18 Slide overloading dei metodi class counter... nome e valore di ritorno non cambiano public: void reset (); void reset (int);... cambiano invece i parametri in gioco

19 Slide 88 primo programma completo #include <stdio.h> class counter int valore; public: counter (); counter (int); ~counter (); void incrementa (); void decrementa (); int leggi (); void reset (); void reset (int); ; file counter.h counter::counter () printf ("chiamo il costruttore\n"); valore = 0; counter::counter (int val) printf ("chiamo il costruttore a valore %d\n", val); valore = val; counter::~counter () printf ("chiamo il distruttore\n"); Void counter::incrementa () valore ++; void counter::decrementa () valore ; int counter::leggi () return valore; void counter::reset () valore = 0; void counter::reset (int val) valore = val;

20 Slide 89 allocazione statica di oggetti... come le variabili allocate staticamente nel C gli oggetti possono essere allocati staticamente nel C++ i membri e i metodi pubblici sono accessibili con una sintassi simile a quella utilizzata per le strutture void main () counter c1, c2 (20);... c1.incrementa (); printf ("valore di c2: %d\n", c2.leggi ());

21 Slide allocazione statica di oggetti #include <stdio.h> #include "counter.h" file myprogram.cpp void main () counter c1, c2 (10); c1.incrementa (); c1.incrementa (); printf ("c1 vale %d\n", c1.leggi ()); c2.reset (20); printf ("c2 vale %d\n", c2.leggi ()); shell di sistema dino ~/docs/poli/c3> gcc myprogram.cpp dino ~/docs/poli/c3>./a.out chiamo il costruttore chiamo il costruttore a valore 10 c1 vale 2 c2 vale 20 chiamo il distruttore chiamo il distruttore dino ~/docs/poli/c3>_

22 Slide 91 allocazione dinamica di oggetti... come anche le variabili del C, nel C++ è possibile allocare dinamincamente gli oggetti mediante l utilizzo di puntatori come nel C è necessario riservare esplicitamente la memoria da utilizzare; a differenza del C non si usa la funzione malloc (int) ma la keyword new, seguita dai parametri del costruttore per deallocare un oggetto non si usa la funzione free ma il costrutto delete, che invoca il distruttore specifico per la classe

23 Slide allocazione dinamica di oggetti... anche in questo caso la sintassi è simile a quella usata per le strutture void main () counter *c1, *c2; c1 = new counter (); c2 = new counter (10);... c2 >incrementa (); printf ("valore di c1: %d\n", c1 >leggi ());... delete c1; delete c2;

24 Slide allocazione dinamica di oggetti file myprogram.cpp #include <stdio.h> #include "counter.h" void main () counter *c1; counter *c2; c1 = new counter; c2 = new counter (10); c1 >incrementa (); c1 >incrementa (); printf ("c1 vale %d\n", c1 >leggi ()); c2 >reset (20); printf ("c2 vale %d\n", c2 >leggi ()); delete c1; delete c2; shell di sistema dino ~/docs/poli/c3> gcc myprogram.cpp dino ~/docs/poli/c3>./a.out chiamo il costruttore chiamo il costruttore a valore 10 c1 vale 2 c2 vale 20 chiamo il distruttore chiamo il distruttore dino ~/docs/poli/c3>_

25 Slide 94 creazione per copia normalmente gli oggetti vengono creati mediante l uso degli appositi costruttori esiste però un meccanismo collaterale detto "creazione per copia" che permette di creare un clone di un oggetto questo si ottiene utilizzando l oggetto da clonare come parametro del costruttore dell oggetto da creare void main () counter c1, c2 (10), c3 (c2);...

26 Slide 95 passaggio di parametri per valore e per riferimento... analogamente al C un oggetto può essere passato per valore o per riferimento: nel primo caso la funzione destinazione elabora una copia dell oggetto passato, nel secondo ne manipola effettivamente il contenuto valgono le stesse considerazioni fatte a suo tempo per il C (un puntatore passato per valore è come una variabile passata per riferimento...)

27 Slide passaggio di parametri per valore e per riferimento void test::aumenta (counter c) c.incrementa (); void test::aumenta (counter* c) c >incrementa (); void main () counter c1, c2 (10); test t;... t.aumenta (c1); t.aumenta (&c2);

28 Slide 97 Esercizio... si implementi in C++ la classe Stringa, che permetta di inizializzare una stringa vuota, oppure di inizializzare una stringa a partire da un array di caratteri conoscere la lunghezza della stringa confrontare la stringa con un array di caratteri dato (uguale/diversa) trasformare i caratteri minuscoli in maiuscoli concatenare la stringa con un altra data

29 Slide esercizio #include <string.h> #include <malloc.h> class Stringa char* valore; int dimensione; public: Stringa (); Stringa (char *); ~Stringa (); int lunghezza (); int ugualea (char *); void inmaiuscolo (); char* leggi (); void concatena (char*); ; Stringa::Stringa () valore = (char*) malloc (0); dimensione = 0; Stringa::Stringa (char *val) valore = (char*) malloc (sizeof (val) + 1); valore [strlen (val) 1] = \0 ; strcpy (valore, val); dimensione = strlen (valore); Stringa::~Stringa () free (valore); int Stringa::lunghezza () return dimensione; int Stringa::ugualeA (char* val) if (strcmp (val, valore) == 0) return 0; else return 1; void Stringa::inMaiuscolo () for (int a = 0; a < dimensione; a ++) if (valore [a] <= z && valore [a] >= a ) valore [a] = valore [a] a + A ; char* Stringa::leggi () return valore; void Stringa::concatena (char* altro) strcat (valore, altro); dimensione = strlen (valore);

30 Slide 99 esercizio si scriva il programma teststring che svolga le seguenti operazioni: allocazione statica e dinamica di due oggetti Stringa inizializzazione degli stessi dove necessario manipolazione distruzione dove necessario

31 Slide 100 Esercizio... si scrivano le classi ritenute necessarie per implementare un sistema di archivio produttori / prodotti / ordini si identifichino i produttori mediante nome e indirizzo si identifichino i prodotti mediante nome si identifichino gli ordini in base a produttore, prodotto ordinato e quntità di quest ultimo per semplicità si assuma che ogni ordine comprenda un solo prodotto

32 Slide esercizio ordine prodotto produttore quantità produttore prodotto getnome () getindirizzo () getnome ()

33 Slide 102 Esercizio... si scrivano le classi necessarie per implementare un simulatore di pizzeria, comprendente clienti, tavoli, camerieri e forno si assuma per semplicità che non esistano tavoli separati ma un unica tavolata e che i clienti arrivino singolarmente si prevedano per ogni classe parametri che descrivano il comportamento della classe stessa con il passare del tempo

34 Slide esercizio... class cliente int preferenza; int pazienza_minuti; int pasto_minuti; public: cliente (int, int); ~cliente (); class cameriere tavolo servizio; public: cameriere (tavolo); ~cameriere (); void interroga_cliente (cliente); void passa_ordine (forno); class tavolo int n_posti; int n_posti_liberi; public: tavolo (int); ~tavolo (); void occupa (); void rilascia (); int get_num_posti_liberi (); class forno int tempo_preparazione; int *coda; public: forno (); ~forno (); void accoda (int); void prepara (int);

35 Slide esercizio classe cliente ogni cliente ha una preferenza sulla pizza da scegliere e questa è codificata con un numero intero. Inoltre ha un determinato "tempo di pasto" che è quello durante il quale occupa un posto di un tavolo classe tavolo un tavolo è caratterizzato dal numero totale di posti e dal numero di quelli liberi classe cameriere ogni cameriere è assegnato ad un tavolo (ipotesi semplicistica) il cameriere può interrogare un cliente sulle sue preferenze e passare l ordinazione così ad un forno classe forno un forno può accettare una serie di ordinazioni e accodarle in un array è caratterizzato inoltre da un tempo tipico di preparazione

36 Slide 105 ereditarietà in C++... secondo il paradigma ad oggetti, è possibile da una classe generale derivare una classe più particolare, aggiungendo nuovo metodi o ridefinendone alcuni della classe principale la classe derivata eredita dalla classe principale tutti i membri (anche quelli privati) tutti i metodi propri della classe tranne costruttori e distruttori overloading di operatori

37 Slide ereditarietà in C++ per definire che una classe ne estende un altra occorre modificare il costrutto class in particolare occorre definire le regole che indichino quali parti originariamente private sono "raggiungibili" dalle classi derivate e quali no

38 Slide 107 esempio class scaffale int altezza, larghezza; int numero_ripiani; public: scaffale (); ~scaffale (); eredita da... void setaltezza (int); void setlarghezza (int); void setnumeroripiani (int); int getaltezza (void); int getlarghezza (void); int getnumeroripiani (void); non è il caso di ridefinire i metodi di scaffale class armadio : public scaffale int numero_ante; public: armadio (); ~armadio (); void setnumeroante (int); int getnumeroante (void);

39 Slide 108 Costruttori nelle classi derivate Se una classe B deriva da una classe A, può essere necessario dover invocare un costruttore specifico della classe A e non quello di default. In questo caso si specifica la chiamata al construttore richiesto direttamente nella definizione del costruttore della classe derivata La chiamata al costruttore della classe A va indicata immediatamente dopo la definizione del costruttore della classe B e va preceduta da un carattere ":"

40 Slide 109 Esempio... si scriva una classe veicolo che esporti i seguenti metodi: int leggi_num_ruote (void); int leggi_peso (void); si scriva una classe auto che aggiunga alla classe veicolo il metodo int leggi_num_posti (void);

41 Slide 110 file veicolo.h... esempio class veicolo int num_ruote; int peso; public: veicolo (int, int); ~veicolo (); int leggi_num_ruote (void); int leggi_peso (void); ; veicolo::veicolo (int r, int p) num_ruote = r; peso = p; veicolo::~veicolo (void) return; int veicolo::leggi_num_ruote (void) return num_ruote; #include "veicolo.h" file automobile.cpp class automobile : public veicolo int num_posti; public: uutomobile (int, int, int); ~automobile (); int leggi_num_posti (); ; automobile::automobile (int nruote, int peso, int nposti) :veicolo (nruote, peso) num_posti = nposti; int veicolo::leggi_peso (void) return peso; automobile::~automobile () int automobile::leggi_num_posti () return num_posti; richiesta di un costruttore specifico

42 Slide 111 Overloading degli operatori... è possibile definire il comportamento degli operatori standard del C per compiere operazioni specifiche su particolari oggetti il comportamento di un operatore si definisce come un metodo, con nome dato dall operatore stesso e preceduto dalla keyword operator generalmente è richiesta la dichiarazione friend dell operatore per poter maneggiare i dati interni

43 Slide overloading degli operatori (esempio) class complex private: int real; int imag; public:... friend complex operator + (complex, complex);... ;... complex operator + (complex a, complex b) complex temp; temp.real = a.real + b.real; temp.imag = a.imag + b.imag; return temp;

Dichiarazione di una classe. Dichiarazione ereditarietà

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

Dettagli

Il linguaggio C++ Ugo de Liguoro

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

Dettagli

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

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

Dettagli

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

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

Dettagli

Definizione di classi

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

Dettagli

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

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

Dettagli

IL TEMA DELLA RIUSABILITÀ

IL TEMA DELLA RIUSABILITÀ IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice già funzionante e corretto il cui sviluppo ha richiesto

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici. Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene

Dettagli

Programmazione orientata agli oggetti Ereditarietà

Programmazione orientata agli oggetti Ereditarietà Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra

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

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

Reti di Connessione e Instradamento AA

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

Dettagli

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

Allocazione dinamica memoria

Allocazione 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

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

Dettagli

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

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

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Linguaggio C - Stringhe

Linguaggio C - Stringhe ISTITUTO SECONDARIO DI ISTRUZIONE SUPERIORE "Guido Tassinari" di POZZUOLI Informatica Prof. A.S. 2011/2012 Linguaggio C - Stringhe 27/04/2012 Array di caratteri Una stringa è: Un array di caratteri Termina

Dettagli

Programmazione orientata agli oggetti Ereditarietà

Programmazione orientata agli oggetti Ereditarietà Programmazione orientata agli oggetti Ereditarietà Fondamenti di Informatica L-B 1 Programmazione basata su oggetti Il modello visto finora costituisce un sottoinsieme del modello orientato agli oggetti

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

Programmazione orientata agli oggetti Ereditarietà

Programmazione orientata agli oggetti Ereditarietà Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra

Dettagli

Progettazione Object-Oriented

Progettazione Object-Oriented Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

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

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni 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

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Esercizi

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

Dettagli

Gestione dinamica della memoria

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

Dettagli

public class Counter2 extends Counter { public void dec() { val--; }

public class Counter2 extends Counter { public void dec() { val--; } public class Main public class Counter2 extends Counter public void dec() val--; public class Counter public Counter() System.out.println("Counter : costruttore di default!"); val = 1; System.out.println("Counter

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

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

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

Dettagli

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) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo 1 Esempio 1: Costruttori ed ereditarietà Costruttori ed ereditarietà 2 Introduzione Java prevede due automatismi legati

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

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Esempio 2: Subtyping

Esempio 2: Subtyping Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione

Dettagli

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

INFORMATICA OOP Relazioni tra classi Roberta Gerboni 2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi

Dettagli

costruttori e distruttori

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

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni 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

Dettagli

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

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

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

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

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

Dettagli

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti

Dettagli

Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover

Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente la loro esistenza deve essere prevista e dichiarata a priori Questo può rappresentare un problema

Dettagli

Allocazione dinamica della memoria

Allocazione 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

Dettagli

Il paradigma OO e le Classi

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

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Analisi e Progettazione OO Origini Le metodologie ad oggetti nascono negli anni 70 ma si affermano solo negli anni 80 grazie alla nascita dei linguaggi di programmazione ad oggetti

Dettagli

La programmazione ad oggetti (OOP)

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

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 9 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 01 Aprile 2008 ADT param. in C ADT param.

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

Esempio di costruzione di una classe: un dizionario

Esempio di costruzione di una classe: un dizionario Esempio di costruzione di una classe: un dizionario Problema: si vuole disporre di un dizionario per tradurre parole dall italiano in un altra lingua e viceversa. Il dizionario deve consentire di ottenere

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Classi e Oggetti Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2016/2017 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 19 CLASSE: definizione Costrutto

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti Programmazione orientata agli oggetti Oggetti Composti 1 - 1 Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

I Metodi. Fondamenti di Informatica A-K

I Metodi. Fondamenti di Informatica A-K I Metodi Fondamenti di Informatica A-K Esercitazione 3 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti, costruttori,

Dettagli

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in

Dettagli

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

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

Dettagli

Operazioni sulle stringhe

Operazioni sulle stringhe Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

Variabili e Funzioni. Informatica 1 / 19

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

Dettagli

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

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

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 11 Corso di Informatica 2009-2010 Lezione 11 1 Utilizzo dei puntatori Funzioni Perche i Puntatori? I puntatori hanno tre importanti applicazioni: 1. Passaggio

Dettagli

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti Programmazione orientata agli oggetti Oggetti Composti 1 - 1 Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi

Dettagli

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT Abstact Data Type 2 Abstact Data Type Ver. 2.4 ADT, definisce un concetto astratto e il suo comportamento Viene utilizzato come una scatola nera (oggetto) di cui è visibile solo che cosa fa e non come

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli

Dettagli

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14 Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà e Polimorfismo Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà L ereditarietà è lo strumento che permette di costruire nuove classi utilizzando

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

Programmazione orientata agli oggetti Ereditarietà

Programmazione orientata agli oggetti Ereditarietà Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra

Dettagli

Ereditarietà: concetti di base

Ereditarietà: 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

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

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

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

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10 Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione. Obiettivi Unità B2 Gli oggetti: concetti avanzati Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione Ereditarietà L ereditarietà permette

Dettagli

Strutture come parametri di funzioni

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

Dettagli

Classi ed Oggetti. Fondamenti di Informatica A-K

Classi ed Oggetti. Fondamenti di Informatica A-K Classi ed Oggetti Fondamenti di Informatica A-K Esercitazione 5 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti,

Dettagli

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria Uso avanzato dei puntatori 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

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

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

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine) La copia di un file Nell'esercizio di oggi cerchiamo di implementare un programma che permetta di effettuare la copia di un file di testo. L'operazione di copia, oltre a permettere di creare un nuovo file

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA4 A2 Utilizzo di classi 1 Prerequisiti Implementazione di classi Funzionamento di una classe Parametri formali e attuali di una funzione 2 1 Introduzione In questa

Dettagli

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

Puntatori. Grazie ai puntatori:

Puntatori. Grazie ai puntatori: Puntatori Grazie ai puntatori: 1) è possibile permettere ad una funzione di modificare il contenuto di un area di memoria; 2) invece di passare ad una funzione tutto un blocco di memoria, si passa alla

Dettagli

Aritmetica dei puntatori

Aritmetica dei puntatori Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore

Dettagli

Componenti software. Obiettivi

Componenti software. Obiettivi Componenti software Obiettivi Introdurre le tipologie di componente software e la nozione di Abstract Data Type Mostrare come realizzare un ADT in linguaggio C 1 Componenti software Librerie Astrazioni

Dettagli

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

Passaggio dei parametri

Passaggio dei parametri Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment

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

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