Const, friend, static,this
|
|
|
- Virginia Fusco
- 10 anni fa
- Visualizzazioni
Transcript
1 Const, friend, static,this
2 Sommario Lo speficatore const per gli oggetti e le funzioni membro Le funzioni friend I membri static di una classe Il puntatore this
3 Oggetti const Alcuni oggetti devono poter essere modificati, altri no E possibile dichiarare un oggetto costante (immodificabile) con const Tempo mid(12,0); Ad es. l oggetto mid che rappresenta mezzogiorno può essere utilizzato come costante in operazioni di confronto Un oggetto costante può essere solo inizializzato Qualsiasi tentativo di modificare un oggetto const genera un errore in fase di compilazione
4 Oggetti const Utilizzare oggetti const è una buona norma di ingegneria del software (codice più sicuro) Utilizzare oggetti const migliora l efficienza: i compilatori riescono a ottimizzare il codice che opera su oggetti const
5 Dati membro const Anche i dati membro possono essere di tipo costante Un dato membro di una classe dichiarato come const non può essere usato a sinistra di operazioni di assegnamento Un dato membro const può solo essere inizializzato Un costruttore non può pertanto usare un operazione di assegnamento per attribuire un valore ad un dato const! class Data{ public: Data(int usr_dat=0){ dat=usr_dat; //ERRORE } const int dat; };
6 Dati membro const Come fare una inizializzazione in una classe? Un costruttore deve essere modificato nel seguente modo: class Data{ public: Data(int usr_dat=0):dat(usr_dat){} const int dat; }; La notazione :dat(usr_dat) inizializza dat con usr_dat NOTA: Non inizializzare un dato membro const è un errore
7 Dati membro const Se è necessario inizializzare più di una variabile lo si fa separando tramite virgole le varie inizializzazioni: class Data{ public: Data(int usr_dat1=0, int usr_dat2=0) :dat1(usr_dat1), dat2(usr_dat2){} const int dat1; const int dat2; };
8 Funzioni membro const Accedere alle funzioni membro per un oggetto dichiarato const potrebbe significare permettere che i dati membro (che devono rimanere costanti) siano alterati Il compilatore pertanto impedisce l accesso a funzioni membro const ma come utilizzare allora funzioni membro che (correttamente) non alterano i dati membro di un oggetto costante?
9 Funzioni membro const Non è possibile chiamare funzioni membro per oggetti const a meno che le funzioni non siano dichiarate const una funzione membro si dichiara const sia nel prototipo che nella definizione secondo la seguente sintassi: //nella dichiarazione di classe int restituisci_ora() const; //nella definizione int Tempo::restituisci_ora() const { return ora; }
10 Funzioni membro const E un errore se una funzione membro costante tenta di modificare un qualsiasi dato membro cioè: una funzione membro costante non può modificare dati membro di alcun tipo..ma internamente alla funzione possono essere dichiarate e modificate variabili locali int Tempo::restituisci_ora() const { int a; a=ora+2; return a; }
11 Funzioni membro const Non è possibile invocare funzioni const che a loro volto chiamino funzioni membro non-const una funzione const puo' usare solo altre funzioni const Non si deve dichiarare const un costruttore o distruttore! non e' di nessuna utilita' un costruttore o un distruttore che non puo' alterare i dati! Solo il costruttore di un oggetto costante può chiamare altre funzioni non costanti un costruttore ha una deroga speciale: lui lavora in un momento dell'esistenza dei dati simile alla inizializzazione e puo' pertanto usare ad es. funzioni set Nota: questo caso è differente dal inizializzare dei dati membro costanti; l'inizializzazione ha una sintassi speciale, in questo caso si usano funzioni nel corpo del costruttore
12 Esempio Class Dat{ public: Dat(int usr_dat=0){set(usr_dat);} void set(int usr_dat){dat=usr_dat;} void print()const{cout<<dat;} private: int dat; }; void main(){ const Dat my_dat(12); //OK my_dat.set(2); //ERROR my_dat.print();//ok }
13 Le funzioni friend Lo specificatore friend permette di definire funzioni al di fuori del campo di visibilità di una classe che possono accedere ai membri privati di tale classe Una classe B può essere dichiarata friend di una classe A in pratica tutti i dati membro e le funzioni membro private della classe A che concede l amicizia a B diventano accessibili per le funzioni membro di B in genere non si dichiarano classi friend ma si ricorre al concetto di ereditarietà (vedremo)
14 Le funzioni friend Dichiarazione: per dichiarare una funzione (classe) come friend di una classe basta precedere con la parola friend il prototipo della funzione (classe) nella dichiarazione della classe la definizione della funzione è di tipo usuale (non compare cioe' la parola friend)
15 A cosa servono le funzioni friend Quando non e' possibile modificare una classe Quando si vuole creare metodi comuni che operino su classi diverse Esempi di uso frequente: overloading di operatori iteratori
16 Esempio #include <iostream> class Count { friend void setx( Count &, int ); // friend declaration public: Count() { x = 0; } // constructor void print() const { cout << x << endl; } //output private: int x; // data member }; // Can modify private data of Count because // setx is declared as a friend function of Count void setx( Count &c, int val ){ c.x = val; // legal: setx is a friend of Count }
17 int main() { Count counter; } cout << "counter.x after instantiation: "; counter.print(); cout << "counter.x after call to setx friend function: "; setx( counter, 8 ); // set x with a friend counter.print(); return 0;
18 Le funzioni friend L amicizia è concessa non presa: all interno della classe si deve dichiarare esplicitamente quali funzioni sono considerate friend non è possibile dichiarare una funzione friend fuori da una dichiarazione di classe la dichiarazione friend non costituisce una dichiarazione della funzione, questa deve essere dichiarata nel modo ordinario Per accedere ad un membro di un oggetto la funzione deve ricevere l oggetto come parametro (in genere per riferimento)
19 Il puntatore this Ogni oggetto ha accesso al proprio indirizzo tramite il puntatore predefinito this: class Dat{ public: Dat(int a){x=a;} void print() const { cout<< x <<endl; cout<< this->x <<endl; cout<< (*this).x <<endl; } private: int x; }
20 Il puntatore this Un uso importante del puntatore this è di consentire la chiamata a cascata di funzioni membro Questo si realizza con una funzione membro che restituisce un alias a se stessa
21 Esempio class Tempo{ public: Tempo(int h=0, int m=0){set(h,m);} void set(int h, int m){seth(h);setm(m);} Tempo & seth(int h); Tempo & setm(int m); void print(){cout<<ora<< : <<min;} private: int ora, min; };
22 Tempo & Tempo::setH(int h){ ora=h; return *this; } Tempo & Tempo::setM(int m){ min=m; return *this; } void main{ } Tempo t(10,20); t.seth(11).setm(15); t.seth(2).print(); //OK t.print().setm(2); //ERROR
23 Spiegazione Ecco cosa accade quando viene eseguita l istruzione t.seth(11).setm(15); l operatore. associa da sinistra a destra (t.seth(11)).setm(15); viene creato un oggetto temporaneo senza nome per contenere il risultato restituito da t.seth(11) tale oggetto è un alias di t che adesso ha il dato membro ora modificato di tale oggetto (t) viene invocato il metodo t.setm(15); che nuovamente restituisce un oggetto temporaneo che è un alias di t
24 Ma quando un oggetto temporaneo viene distrutto non si invoca il distruttore? Quando l'alias temporaneo si distrugge non viene invocato alcun distruttore per la copia originale (si consideri il concetto di puntatore) Un alias è un puntatore (cambia solo la sintassi per riferirsi ad esso ed al dato puntato) pertanto quando viene deallocato si distrugge la variabile che conteneva l indirizzo dell oggetto solo quando si deve distruggere l oggetto si richiama il distruttore
25 Spiegazione Nel caso di t.print().setm(2); invece si ha: (t.print()).setm(2); ma t.print() restituisce un tipo void che non possiede alcuna funzione membro, tantomeno la funzione setm( )
26 Membri static di una classe Ogni oggetto possiede una copia dei dati membro della sua classe In alcuni casi si può volere che un dato sia condiviso da tutti gli oggetti appartenenti alla classe Per realizzare questo si dichiara il dato membro come static Un dato static e una specie di variabile globale ma con visibilità e accesso limitato agli oggetti di una unica specifica classe
27 Membri static di una classe Un membro static esiste anche quando non è stato ancora istanziato alcun oggetto della classe per accedervi: se il membro è public si usa: NomeClasse::nomeVariabile se il membro è private si devono usare le funzioni public (o friend) di un oggetto istanziato, oppure tramite una funzione membro static
28 Funzioni membro static Possono essere dichiarati static sia i dati membro che le funzioni membro Una funzione static può accedere solo ai membri static di una classe infatti si puo' chiamare una funzione static anche se non e' stato istanziato alcun oggetto e dunque quando ancora non esistono i dati membro
29 Esempio #ifndef EMPLOY1_H #define EMPLOY1_H class Employee { public: Employee( const char*, const char* ); // constructor ~Employee(); // destructor const char * getfirstname() const; // return first name const char * getlastname() const; // return last name static int getcount(); // return # objects instantiated private: char *firstname; char *lastname; // static data member static int count; // number of objects instantiated }; #endif
30 Esempio // Member function definitions for class Employee #include <iostream> #include <cstring> #include <cassert> #include "employ1.h" int Employee::count = 0; int Employee::getCount() { return count; } Employee::Employee( const char *first, const char *last ){ firstname = new char[ strlen( first ) + 1 ]; assert( firstname!= 0 ); // ensure memory allocated strcpy( firstname, first ); lastname = new char[ strlen( last ) + 1 ]; assert( lastname!= 0 ); // ensure memory allocated strcpy( lastname, last ); ++count; // increment static count of employees cout << "Employee constructor for " << firstname << ' ' << lastname << " called." << endl; }
31 Employee::~Employee() { cout << "~Employee() called for " << firstname << ' ' << lastname << endl; delete [] firstname; // recapture memory delete [] lastname; // recapture memory --count; // decrement static count of employees } const char * Employee::getFirstName() const{ // Const before return type prevents client from modifying // private data. Client should copy returned string before // destructor deletes storage to prevent undefined pointer return firstname; } const char * Employee::getLastName() const {return lastname;}
32 Esempio #include <iostream> #include "employ1.h" int main() { cout << "Number of employees before instantiation is " << Employee::getCount() << endl; // use class name Employee *e1ptr = new Employee( "Susan", "Baker" ); Employee *e2ptr = new Employee( "Robert", "Jones" ); cout << "Number of employees after instantiation is " << e1ptr->getcount(); cout << "\n\nemployee 1: " << e1ptr->getfirstname() << " " << e1ptr->getlastname() << "\nemployee 2: " << e2ptr->getfirstname() << " " << e2ptr->getlastname() << "\n\n";
33 delete e1ptr; // recapture memory e1ptr = 0; cout << "Number of employees after deletion is " << Employee::getCount() << endl; delete e2ptr; // recapture memory e2ptr = 0; cout << "Number of employees after deletion is " << Employee::getCount() << endl; } return 0;
34 Note La macro assert è definita in <cassert> assert(cond); verifica la condizione cond se è vera il programma continua se è falsa viene chiamata la funzione abort() che termina l esecuzione del programma e indica nel messaggio di errore la linea di codice in cui si è verificata la falsità di cond assert è utile in fase di debugging una volta terminata la fase di debugging basta aggiungere #define NDEBUG perché il preprocessore elimini il codice relativo a tutti gli utilizzi di assert
Inizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
Visibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
costruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
Concetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili 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
void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
dall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
Allocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
Java: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
VARIABILI LOCALI E GLOBALI (ESTERNE)
VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al
Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
Generalizzazione di funzioni e di classi. Macro come funzioni generiche
Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)
Oggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
Le operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015
Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle
http://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
Laboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo [email protected] 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi
Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi
Corso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Introduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
I file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
Test di unità con JUnit4
Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
GESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy [email protected] Rudimenti di programmazione Programming
Programmazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
Variabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
Modulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete
La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication
Sottoprogrammi: astrazione procedurale
Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j
Le stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
strutturare dati e codice
Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;
Codifica: dal diagramma a blocchi al linguaggio C++
Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU
Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica
Dynamic Linking Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica Dynamic Linking Il linking tra i moduli di un programma e le librerie da esso utilizzate può essere Statico
Linguaggio C - Stringhe
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai
Esercizi della lezione 5 di Java
Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore
Programmazione in Java Parte I: Fondamenti
Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice
Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni
Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili
Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
Le variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione
Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento
Record in C: il costruttore struct.
Record in C: il costruttore struct. Le variabili di tipo record e i nuovi tipi record si dichiarano in C tramite il costruttore di tipo struct:. ::= ;
Parola chiave extends
Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi
10 - Programmare con gli Array
10 - Programmare con gli 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
Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)
Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Informatica 3 Lezione 7 -
Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Programmazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Funzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
Programmazione a Oggetti Modulo B
Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione
INFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)
Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dell ambiente di sviluppo, compilazione ed esecuzione 1 Introduzione Java è un linguaggio
Arduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
Linguaggio C - Funzioni
Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche
Gestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
Realizzazione di una classe con un associazione
Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe
Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise
Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3
I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.
UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d
obiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati
obiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati puntatori ( strutture dinamiche collegate) strutture dinamiche collegate (liste, pile,
Introduzione a Classi e Oggetti
Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto
http://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
Esercitazione n 4. Obiettivi
Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:
GESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
Workland CRM. Workland CRM Rel 2570 21/11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX
Attività Attività --> FIX In alcuni casi, in precedenza, sulla finestra trova attività non funzionava bene la gestione dei limiti tra date impostati tramite il menu a discesa (Oggi, Tutte, Ultima Settimana,
Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe [email protected]. È qualcosa che abbiamo già visto varie volte
Java riutilizzo delle classi G. Prencipe [email protected] Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi
Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1
Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro [email protected] Programmazione, lezione 18 19 gennaio
Excel. A cura di Luigi Labonia. e-mail: [email protected]
Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist
20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist Esamina il codice seguente, eseguilo passo passo (F11) e rispondi ai quesiti: using System; using System.Collections; class Program
Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate
Sequence Diagram e Collaboration Diagram
Sequence Diagram e Collaboration Diagram Ing. Orazio Tomarchio [email protected] Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Sommario Interaction
Memory Management. Local Storage. Global Storage. Delete esplicite
Memory Management Costruzione di Interfacce Lezione 13 Dal Java al C++ [email protected] http://vcg.iei.pi.cnr.it/~cignoni Due grandi categorie di storage: Local, memoria valida solo all interno di
Grammatica di base: Pointers
Grammatica di base: Pointers Esistono I puntatori a funzioni. Bisogna esplicitare esattamente il tipo di ritorno e il tipo di argomento. Per evitare ambiguità con il prefisso * nel declarator, il nome
Utilizzo e scrittura di classi
Utilizzo e scrittura di classi Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 14 novembre, 2001 Gino Perna Implementazione di classi in C++ UN ESEMPIO DI CLASSE: RISULTATI
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.
www.playnet.it agg. Documento 1/03/2007 REGOLE DEL CLIENT Le regole del client sono un sistema di smistamento dei messaggi (arrivati) fra le varie cartelle di posta presenti sul server. Possono essere
Lezione 10: Librerie e compilazione separata
Lezione 10: Librerie e compilazione separata Laboratorio di Elementi di Architettura e Sistemi Operativi 16 Maggio 2012 Calendario della parte finale del corso Mer 23 Maggio ultima lezione sul C Gio 24
LA GESTIONE DELLE VISITE CLIENTI VIA WEB
LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL
Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,
Laboratorio di Algoritmi e Strutture Dati
Realizzazione di Liste Laboratorio di Algoritmi e Strutture Dati Domenico Redavid [email protected] Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di Bari
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 20 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 20 Ottobre 2014 1 Tipi non Predefiniti Abbiamo visto: Tipi elementari (int, float, char,...) Tipi composti (arrays e tipi non predefiniti) C++ permette
Corso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
Progettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli [email protected] 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
