Corso di Programmazione ad Oggetti
|
|
- Serafina Calo
- 6 anni fa
- Visualizzazioni
Transcript
1 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
2 Richiami sui Costruttori Un costruttore è una particolare funzione membro di una classe che porta lo stesso nome della classe Per le funzioni costruttore non deve essere specificato il tipo restituito, in quanto in C++ le funzioni costruttore non possono restituire valore I costruttori possono avere anche uno o più parametri Esempio class Contatore public: Contatore(); ; Contatore::Contatore() value = 0; Contatore::Contatore(int val) value = val; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 2
3 Richiami sui Costruttori Il costruttore di un oggetto viene chiamato automaticamente nel momento in cui deve essere creato l'oggetto Esempi #include Contatoreh Contatore cont1, cont2(100); Contatore cont_ptr1, cont_ptr2; cont_ptr1 = new Contatore; cont_ptr2 = new Contatore(10); Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 3
4 Richiami sui Distruttori Un distruttore è una funzione membro che: è necessaria solo se l oggetto presenta un estensione dinamica ha lo stesso nome della classe, preceduto da ~ (tilde) non restituisce risultato (neanche void) non ha alcun parametro Generalmente lo scopo dei distruttori è quello di deallocare l estensione dinamica di un oggetto NON può essere invocata esplicitamente dal programma utente, ma viene invocata implicitamente dal compilatore quando viene deallocato lo spazio di memoria assegnato all'oggetto Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 4
5 Esempio di distruttore Per quanto detto in precedenza, il costruttore serve per deallocare le estensioni dinamiche degli oggetti Esempio Class Stack public: Stack(); ~Stack(); private: int *st_ptr; int num; ; // Costruttore Stack::Stack() st_ptr = new int[size]; num = 0; // Distruttore Stack::~Stack() delete [] st_ptr; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 5
6 Esecuzione dei distruttori I distruttori vengono eseguiti anche quando vengono deallocati oggetti precedentemente allocati dinamicamente Esempio void funz() Stack *st_ptr; delete st_ptr; Viene invocato il distruttore di stack Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 6
7 Il costruttore di copia Crea un oggetto a partire da un altro oggetto della classe (i valori delle variabili membro vengono copiati) La sintassi dei costruttori di copia è la seguente: class Myclass Myclass(const Myclass &oggetto); ; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 7
8 Chiamata dei costruttori di copia I costruttori di copia sono chiamati in maniera implicita: All atto della definizione di un oggetto per inizializzarlo con il valore di un altro oggetto: Myclass m2=m1; oppure Myclass m2(m1); All atto della chiamata di una funzione per inizializzare un argomento (oggetto) passato per valore All atto del ritorno da una funzione, per restituire un oggetto per valore La definzione di un costruttore di copia consente di risolvere tutti i problemi visti in precedenza relativi alla copia di oggetti che hanno un'estensione Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 8
9 Confronto tra costruttori di copia In mancanza della definizione del costruttore di copia, il compilatore richiama un costruttore di copia di default Il costruttore di copia di default esegue una copia copia bit a bit, limitata alla sola parte base Nel caso esista una estensione dinamica il costruttore di copia deve essere esplicitamente definito dal progettista della classe Costrutture di copia di default (bit a bit) Costrutture di copia di ad hoc obj Estensione di obj obj Estensione di obj Copia di obj Copia di obj Copia dell'estensione Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 9
10 Un esempio: la classe stack Poniamo di avere la seguente classe: Class Stack public: Stack(); Stack(int dim); ~Stack(); Stack(const &Stack) private: int *st_ptr; int num; int size: ; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
11 la classe stack // Costruttore 1: alloca un array con una dimensione di default Stack::Stack() st_ptr = new int[stack_size]; num = 0; size = STACK_SIZE; // Costruttore 2: alloca un array di dimensione dim Stack::Stack(int dim) st_ptr = new int[dim]; num = 0; size = dim; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
12 la classe stack // Costruttore di copia Stack::Stack(const Stack &s) int i; num = snum; dim = sdim; s_ptr = new int[dim]; for (i=0; i < num; ++i) s_ptr[i] = ss_ptr[i]; // Distruttore Stack::~Stack() delete [] st_ptr; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
13 Variabili static Le variabili di una classe possono essere dichiarati static Quando la dichiarazione di una variabile membro è preceduta dalla parola static, si chiede al compilatore di creare una sola copia di quella variabile per tutti gli oggetti della classe Questo significa che tutti gli oggetti di quella classe utilizzeranno la stessa variabile (per individuarla si usa il nome della classe con l'operatore :: ); in questo modo è possibile condividere la stessa informazione tra più oggetti della stessa classe Quando si dichiarano variabili static non si alloca spazio di memoria all'interno degli oggetti della classe per tali variabili L'utilità delle variabili static deriva dal fatto che in questo modo è possibile condividere la stessa informazione tra più oggetti della stessa classe Tutte le variabili static vengono inizializzate a zero nel momento in cui viene creato il primo oggetto Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
14 Variabili static Le variabili static non vengono create tramite istanze della classe a cui appartengono, ma devono essere definite all esterno della classe ma nello stesso ambito in cui è definita la classe Nei rari casi, però, in cui la classe è definita in un block scope, le variabili static non sono ammesse Pertanto una variabile static può essere definita solo in un namespace (se la classe è definita in quel namespace) o nel namespace globale Le variabili static possono essere private o pubbliche; se una variabile di classe static è privata, tale variabile potrà essere gestita solo da un metodo della classe a cui appartiene Le variabili static sono molto utili per gestire informazioni comuni a tutti gli oggetti di una classe (per esempio possono fornire i dati di default per l'inizializzazione degli oggetti), ma nel contempo, essendo esse stesse membri della classe, permettono di evitare il ricorso a variabili esterne, salvaguardando così il data hiding e l'indipendenza del codice di implementazione della classe dalle altre parti del programma Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
15 Variabili static: esempio 1 Le variabili di tipo static possono essere usate per contare il numero di oggetti istanziati di un certa classe: class Counter public: static int count; Counter()++count;; ~Counter()--count;; ; int Counter::Count; main() Counter count_array[100]; cout<<endl<< oggetti esistenti: <<Counter::count; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
16 Variabili static: esempio 2 class ShareVar static int num; public: void setnum(int i) num = i; ; void shownum() cout << num << " "; ; int ShareVar::num; // definisce num int main() ShareVar a, b; ashownum(); // visualizza 0 bshownum(); // visualizza 0 asetnum(10); // imposta static num a 10 ashownum(); // visualizza 10 bshownum(); // anche questa istruzione visualizza 10 return 0; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
17 Variabili static: esempio 3 Le variabili di tipo static possono essere usate per condividere risorse comuni a tutti gli oggetti di una classe: class Myclass static int resource; public: Myclass(); bool get_resource(); void free_resource() resource = 0; ; void shownum() cout << num << " "; ; bool cl::get_resource() if (resource == 0) resource = 1; return true; else return false; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
18 Variabili static: esempio 3 main() Myclass m1, m2; if (m1get_resource()) cout<< la risorsa è di m1 ; if (!m2get_resource()) cout<< m2 non può utilizzare la risorsa ; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
19 Funzioni membro di tipo static Anche le funzioni membro possono essere di tipo static Le funzioni definite static possono accedere solo alle variabili static della classe Non hanno inoltre il puntatore this; L'uso di queste funzioni è piuttosto limitato Vengono di solito usate per inizializzare le variabili static di una classe class A static int conta( ) ; ; (prototipo) int A::conta( ) (definizione) Nel prog chiamante: int n = A::conta( ); Nella chiamata di una funzione-membro static, bisogna qualificare il suo nome con quello della classe di appartenenza Si noti che, nella definizione della funzione, lo specificatore static non va messo (per lo stesso motivo per cui non va messo davanti alla definizione di un dato-membro static) Se una funzione-membro static deve operare su un oggetto, questo deve essere trasmesso esplicitamente come argomento quando un metodo deve operare direttamente su un oggetto (uno e uno solo alla volta), è più conveniente che sia incapsulato nell'oggetto stesso e quindi non venga dichiarato static Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
20 Funzioni di accesso alle variabili membro: lettura Sappiamo che lo stato di un oggetto è determinato dal valore delle variabili da esso contenuto È buona norma della programmazione OO definire tali variabili private Per consentire agli utenti di una classe di visualizzare lo stato di un oggetto istanziato è necessario quindi definire delle funzioni che consentono di accedere alle sue variabili Una tipica definizione di funzione di accesso è del tipo: Tipo get_value()return value; Tipicamente queste funzioni sono definite all'interno della dichiarazione della classe Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
21 Funzioni di accesso alle variabili membro: modifica Oltre che leggere lo stato di un oggetto è anche necessario modificarlo Pertanto bisogna definire anche delle funzioni che consentono la modifica delle variabili di un oggetto Una tipica definizione di funzione di modifica è del tipo: void set_value(tipo val)var = val; NOTA La scelta di nomi del tipo get_nomevar e set_nomevar è una buona norma di programmazione, ma non è assolutamente prescritta dal linguaggio C++ Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
22 Esempio Class Myclass public: // Funzioni Costruttore Myclass(); // Funzioni di accesso int get_n()return N;; //restituisce il valore di N char get_ch()return ch;; //restituisce il valore di ch void set_n(int val)n = val;; // assegna valore a N void set_ch(char c)char = c;; // assegna valore a ch private: int N; char ch; float x; ; Le funzioni membro definite nella dichiarazione de vengono automaticamente trasformate in funzioni inline dal compilatore Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
23 L'accesso ai membri di una classe Quando definiamo una funzione membro di una classe, possiamo fare riferimento alle variabili membro della classe senza ambiguità Class Myclass public: Myclass(); funz(tipo val); private: Tipo1 var1; Tipo1 var2; ; Myclass::funz(Tipo val) var2 = pow(x, 2); main() Myclass m1, m2; m1funz(); // modifica le variabili di m1 m2funz(); // modifica le variabili di m2 Domanda ma qual'è il meccanismo che consente alla funzione membro di individuare le variabili specifiche dell'oggetto sul quale è stata chiamata? Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
24 Meccanismo di accesso ai membri di una classe Nella chiamata di una funzione membro il compilatore introduce un primo parametro nascosto che è l indirizzo dell oggetto proprio a cui f viene applicata Tale parametro e un puntatore costante il cui nome è this Myclassh Class Myclass Tipo funz(tipo val); ; Viene trasformata dal compilatore in Class Myclass Tipo funz(myclass* const this, Tipo val); ; Myclassh modificato Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
25 Il puntatore This Il ruolo del puntatore this è quello di identificare l'oggetto istanziato al quale applicare una certa funzione della classe Infatti quando si definisce una funzione membro non si specifica in alcun modo l'oggetto sul quale la funzione verrà chiamata Questa operazione viene fatta in maniera automatica dal compilatore Il quale, modifica i riferimenti alle variabili di classe aggiungendo il puntatore this Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
26 Esempio Ovviamente la traformazione interessa anche il file cpp: Tipo Myclass::funz(Tipo1 val) var1 = pow(2, val); ; Myclasscpp Compilatore Myclasscpp modificato Tipo Myclass::funz(Myclass* const this, Tipo1 val) this->var1 = pow(2, val); ; Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
27 Chiamata delle funzioni membro L'istruzione di chiamata di una funzione membro su una specifica istanza di una classe viene anch'essa trasformata dal compilatore In pratica l'indirizzo dell'oggetto (tramite l'operatore &) viene ricopiato in this e attraverso tale puntatore la funzione opera sull oggetto proprio: main () Myclass m, *mp; Tipo1 x; mfunz(x); mp->funz(x); compilatore main () Myclass m; Tipo1 x; funz(&m, x); funz(mp, x); Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/
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
DettagliCorso di Fondamenti di Informatica II
Corso di Fondamenti di Informatica II Introduzione alla programmazione orientata agli oggetti a.a. 2009/2010 Francesco Fontanella Esercitazione 3 Rendere il progetto indipendente dalla struttura dati utilizzata
DettagliCorso 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
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
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
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
DettagliGestione 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.
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
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
DettagliIntroduzione ai puntatori
Introduzione ai puntatori Algoritmicamente November 19, 2009 http://algoritmicamente.wordpress.com/ 1 Concetti fondamentali Nei linguaggi quali C, C++, il concetto e l'uso dei puntatori è estremamente
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliInformatica 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)
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
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
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
Dettagli14 - 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
DettagliIntroduzione al C++ (continua)
Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x
DettagliLa 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
DettagliIntroduzione alla Programmazione in Java attraverso un esempio commentato
Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria
DettagliIl 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
DettagliProgrammazione 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:
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
DettagliLa Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliAllocazione dinamica
Allocazione dinamica Quando non si sa a priori quanto un array debba essere grande allocazione dinamica di array Quando si deve restituire un array come risultato di una funzione (a meno di non barare
DettagliOgni 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
DettagliClassi 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
DettagliFunzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri
Funzioni (Passaggio dei parametri per riferimento) Passaggio dei parametri Per passaggio dei parametri si intende l associazione fra parametri attuali e parametri formali che avviene al momento della chiamata
DettagliVariabili e Metodi di classe Interfacce e Package Gestione di File in Java
Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe
DettagliParametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi
Funzioni Introduzione Operatori & e * Passaggio by reference Passaggio di vettori Esercizio strcpy 2 Passaggio dei parametri Il linguaggio C prevede il passaggio di parametri by value Il chiamato non può
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
DettagliIl 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;
DettagliVariabili 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
DettagliC: 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
DettagliCostruttori/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
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliUnità 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;
DettagliAllocazione 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
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili
Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Anno Accademico Francesco Tortorella Il concetto di visibilità Un programma C++ può assumere una struttura complessa grazie
DettagliTempo di vita e scope delle variabili
Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):
DettagliMetodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:
Metodi Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere: invocazione: esecuzione di un metodo assegnamento: cambia lo stato di un campo ripetizione:
DettagliProgrammazione 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
DettagliParametri Formali di una Funzione e Record di Attivazione
Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliUso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Uso di classi e oggetti Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Tipi di dati Tipi primitivi: interi Java fornisce otto tipi primitivi indipendenti dall implementazione
DettagliAbstact 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
DettagliIntroduzione 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 2016
DettagliLe classi. Per questo introduciamo le classi. Una classe è un nuovo tipo di dato che integra insieme i dati e le funzioni che possono agire sui dati.
Le classi Abbiamo visto che le funzioni sono molto utili nella scomposizione top-down di un problema molto complesso; l uso dei parametri ci consente di associare valori diversi alle stesse variabili senza
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
DettagliOperatore di indirizzo
Operatore di indirizzo L operatore unario di indirizzo & restituisce l indirizzo della locazione di memoria dell operando Il valore restituito non va usato come l- value (in quanto l indirizzo di memoria
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliJava: Definire Classi e Creare Oggetti
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito
DettagliAllocazione statica della memoria
2015 - Roberta Gerboni 1 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x=
DettagliLinguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti
LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE Anno Accademico 2000-2001 Alberto Martelli Programmazione ad Oggetti Parte I Linguaggi ad oggetti (object oriented) I linguaggi di programmazione
DettagliTemplate (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
DettagliFUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliQuesti lucidi provengono dal capitolo 2 di:
Questi lucidi provengono dal capitolo 2 di: Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Oggetti e classi Gli oggetti sono entità di un programma che si possono manipolare
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Concetti Avanzati versione 2.5 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliLaboratorio di Informatica
Cosa sono i puntatori? I puntatori sono fondamentalmente delle variabili che non contengono un valore numerico o alfanumerico, ma un puntatore (ossia un indirizzo) alla locazione di memoria dove è memorizzato
DettagliIl linguaggio C funzioni e puntatori
Salvatore Cuomo Il linguaggio C funzioni e puntatori Lezione n. 8 Parole chiave: Linguaggio C, procedure, funzioni. Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio Email
DettagliJava Le stringhe. Stringhe
Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
DettagliLinguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
DettagliEsercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento
Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma
DettagliEsempio: 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
DettagliL'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Funzioni e classi friend Overloading di operatori aa 2008/2009 Claudio De Stefano 1 Le funzioni friend Nella definzione di una classe è possibile elencare quali funzioni,
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliI/O FILE. Sommario I/O FILE. I/O FILE LETTURA DA FILE DI TESTO oggetto di tipo ifstream. I/O FILE: lettura e scrittura su file di testo
Sommario I/O FILE: lettura e scrittura su file di testo Funzioni: Overloading Argomenti di default I/O FILE Per eseguire operazioni di I/O su file, si deve includere nel programma l header Tale
DettagliPassaggio 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
DettagliIntroduzione 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
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
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliObject-Oriented Technology. Giuliano Armano 1
Object-Oriented Technology Giuliano Armano 1 Object Oriented Technology ADT + Eredità + Polimorfismo Object-Orientation Giuliano Armano 2 Terminologia Tipica Classica... Tipo di dato (astratto) = ADT Operazione
DettagliIndirizzi e puntatori
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Richiami sulle variabili Una variabile è costituita da una o più locazioni di memoria (a
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
DettagliUso 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
DettagliSommario. 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
DettagliGli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
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
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! 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 soprattutto per variabili
DettagliSTRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
DettagliDal 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
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
DettagliUnità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa
DettagliLaboratorio di Programmazione Anno Accademico
Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Laboratorio di Programmazione Anno Accademico 2004-2005 Corso di Laurea in Ingegneria Informatica Prof. Giuseppe De Giacomo (A L) & Prof.
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Tipi strutturati: Array Anno Accademico 2010/2011 Francesco Tortorella Gli array In alcuni casi, l informazione che bisogna elaborare consiste di un aggregazione di valori, piuttosto
DettagliProgrammazione 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