Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi
|
|
- Giacomo Carletti
- 8 anni fa
- Visualizzazioni
Transcript
1 Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1
2 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi e/o metodi in modo da evitare di reimplementare caratteristiche condivise In C++ questo è possibile grazie alla derivazione di classe: la classe da cui si eredita è detta classe base; la nuova classe è detta classe derivata; l insieme delle istanze di classi base e derivate è denominata gerarchia di ereditarietà di classi. 2
3 Introduzione Ereditare da una libreria di classi già esistente consente il riuso del codice con un meccanismo che va ben oltre la copia e modifica di quanto scritto precedentemente. Si creano nuove classi, non partendo da zero, ma sfruttando ed estendendo altre classi che qualcuno ha creato e collaudato 3
4 Definire una gerarchia di classi Supponiamo di voler costruire un programma che gestisce i dipendenti di un azienda. Potremmo avere strutture dati del tipo: struct Dipendente { char *nome, *cognome; int dipartimento; Data data_assunzione; /* */ }; struct Manager { Dipendente dip; Dipendente * gruppo[]; // persone gestite int livello; /* */ }; 4
5 Definire una gerarchia di classi Un Manager è un Dipendente L affermazione può sembrare ovvia per un umano ma, lasciando le strutture indipendenti, il compilatore non è in grado di capire questa relazione In particolare, non è possibile inserire un Manager (o un suo puntatore) in una lista di Dipendenti Si potrebbe effettuare una conversione esplicita da Manager* a Dipendente* o inserire un puntatore al campo dip in una lista di Dipendenti, ma la soluzione è confusa e inelegante. 5
6 Definire una gerarchia di classi Cambiando la definizione di Manager, mediante l aggiunta di un po di informazione, è possibile informare il compilatore della dipendenza desiderata: struct Manager : public Dipendente { Dipendente * gruppo[]; int livello; /* */ }; Manager è derivato da Dipendente e possiede i membri della sua classe base oltre ai suoi membri proprietari. 6
7 Definire una gerarchia di classi La derivazione si rappresenta comunemente con una freccia che va dalla classe derivata verso la classe base: Dipendente Manager Talvolta la classe base è chiamata superclasse e quella derivata sottoclasse; Tuttavia, la classe derivata è più grande della classe base poiché contiene più dati e fornisce più funzionalità 7
8 Definire una gerarchia di classi L operazione di derivazione illustrata rende Manager un sottotipo di Dipendente: un Manager può essere utilizzato ogni qualvolta si può utilizzare un Dipendente. Esempio: Dipendente * dip[10]; Manager m1, m2; Dipendente d1, d2, d3; dip[0] = &d1; dip[1] = &m1; // corretto! dip[2] = &d3; 8
9 Definire una gerarchia di classi Quindi: un Manager è anche un Dipendente e un Manager* può essere usato dove è richiesto un Dipendente*. NON è vero il viceversa! Un Manager è un caso particolare di Dipendente e usare Dipendente* al posto di Manager* richiede una conversione esplicita: Dipendente* pdip = &m1; // ok: man. è dip. Manager* pman = &d1; // errore: dip. non man. pman->livello = 2; // disastro! d1 non ha livello pman = (Manager*)pdip; // conv. Esplicita pman->livello = 2; // ok: man ha un livello 9
10 Definire una gerarchia di classi Generalizzando: se una classe Derivata ha Base come classe base, il puntatore Derivata* può essere assegnato a un puntatore di tipo Base* senza conversione esplicita: Derivata * pd; Base * pb = pd; l assegnamento opposto, da Base* a Derivata* richiede una conversione esplicita (tramite cast) Base * pb; Derivata * pd = static_cast<derivata *>(pb); 10
11 Definire una gerarchia di classi NOTA: una classe deve essere definita prima di poter essere utilizzata come base: class Dipendente; class Manager: public Dipendente { // errore!! }; Una classe derivata può diventare a sua volta una classe base per un altra classe. Grazie anche all eredità multipla, il C++ consente di definire gerarchie di classe rappresentabili con grafi aciclici diretti 11
12 Accesso ai membri Una classe derivata può accedere ai membri pubblici (e protetti) di una classe base ma non ai membri privati: class Dipendente { char *nome, *cognome; public: void stampa() const; char * nome() const; /* */ }; class Manager: public Dipendente { /* */ public: void stampa() const; }; 12
13 Accesso ai membri Esempio di codice corretto: void Manager::stampa() { cout << Il nome è << nome() << endl; } Esempio di codice errato: void Manager::stampa() { cout << cognome: << cognome << endl; } 13
14 Accesso ai membri Una soluzione tipica è usare i membri pubblici della classe base: void Manager::stampa() { Dipendente::stampa(); cout << livello; }; NOTA: riuso la stampa definita nella classe base e lo indico con Dipendente:: Scrivere soltanto stampa() significherebbe una chiamata ricorsiva (la ridefinizione del metodo in Manager maschera quella di Dipendente)! 14
15 Accesso ai membri Attenzione all overloading! Infatti, dichiarare: class Manager: public Dipendente { void stampa(ostream & s); // }; la stampa di Manager nasconde comunque la stampa di Dipendente, nonostante abbia una signature diversa! 15
16 Accesso ai membri La soluzione può essere: class Manager: public Dipendente { public: void stampa() { Dipendente::stampa(); } // oppure: using Dipendente::stampa; }; cioè: creare una semplice inline che richiama la funzione della base oppure importare il simbolo dalla classe base (specificandone però solo il nome senza parametri). 16
17 Accesso ai membri In una progettazione Object-Oriented tipicamente vi è un fornitore (chi progetta e implementa la classe) e gli utenti (che utilizzano l interfaccia pubblica del fornitore) Il fornitore decide cosa rendere visibile all esterno e cosa nascondere; La classe viene perciò divisa in due livelli di accesso: public e private 17
18 Accesso ai membri Con l eredità possono esserci vari fornitori di classi; ad esempio un fornitore di classe base e altri fornitori di classi da questa derivate Il fornitore di un sottotipo può avere la necessità di accedere all implementazione della classe base Per rendere possibile questa operazione, pur continuando ad impedire l accesso generale all implementazione, il C++ fornisce un ulteriore livello d accesso: protected 18
19 Livello d accesso protected Se un membro è dichiarato protected, il suo nome può essere utilizzato soltanto dalle funzioni membro della classe in cui è stato dichiarato (analogamente a private) o nelle funzioni membro delle classi da questa derivate NOTA IMPORTANTE: le classi derivate NON hanno accesso alla sezione private della classe base 19
20 Costruttori e loro attivazione Le classi derivate possono aver bisogno di uno o più costruttori Se la classe base ha dei costruttori, un costruttore deve essere invocato dalla classe derivata Possono essere invocati implicitamente soltanto i costruttori di default Se tutti i costruttori della classe base richiedono argomenti, uno di questi deve essere esplicitamente invocato. 20
21 Costruttori e loro attivazione Consideriamo ad esempio: class Dipendente { char * nome; public: Dipendente(const char * n); }; class Manager: public Dipendente { public: Manager(const char *n, int liv); }; 21
22 Costruttori e loro attivazione Gli argomenti del costruttore della classe base saranno specificati nella definizione del costruttore della classe derivata: Dipendente::Dipendente(const char * n) { // } Manager::Manager(const char *n, int liv) : Dipendente (n), livello (liv) { // } 22
23 Costruttori e loro attivazione Un costruttore di una classe derivata può specificare come inizializzare i suoi membri e richiamare un costruttore della base immediatamente superiore Non può inizializzare direttamente i membri della classe base, nemmeno se dichiarati protetti (questa operazione deve essere fatta mediante nel costruttore della classe base) Gli oggetti sono costruiti in ordine: prima il costruttore della base, poi i membri della classe derivata (nell ordine in cui sono stati definiti nella classe e non nell ordine in cui sono elencati) 23
24 Costruttori e loro attivazione Esempio: class B { int eta; public: B(int e) : eta (e) { } }; class D: public B { float peso; float altezza; public: D(int d, float p, float a) }; 24
25 Costruttori e loro attivazione D::D(int d, float p, float a) : altezza(a), peso(p), B(d) { // inizializzazioni varie di D } L ordine sarà: costruttore di B col parametro intero d inizializzazione del membro peso al valore p inizializzazione di altezza al valore a parte restante del costruttore di D 25
26 Costruttori e loro attivazione L unico caso in cui si può richiamare implicitamente il costruttore di default è quando la classe base NON ha costruttori: class B { protected: int n; }; class D : public B { float f; public: D (float v) : f (v) { } // B() è richiamato implic. }; 26
27 Distruttori In generale, l ordine di invocazione dei distruttori per un oggetto di una classe derivata è il contrario dell invocazione dell ordine dei costruttori Se non è stato definito dall utente, il compilatore utilizza un distruttore di default Attenzione a quando si distrugge in una classe derivata un oggetto tramite un puntatore della classe base! 27
28 Distruttori Manager::~Manager() { delete pdip1; delete pman1; delete pdip2; } se pdip1 punta a un Manager (cosa possibile), occorre chiamare il distruttore opportuno (di Manager) e non quello della classe base! Questo problema si risolve dichiarando i distruttori come virtuali. 28
29 Copia e assegnamento E possibile assegnare un istanza di una sottoclasse ad un istanza della sua classe base o richiamare il costruttore di copia della base con un oggetto della classe derivata: Manager m1, m2; Dipendente d = m1; // Costruttore di copia d = m2; // Assegnamento L operazione è lecita ma l operatore = e il costruttore di copia di Dipendente non conoscono i dettagli di Manager! 29
30 Copia e assegnamento Cosa accade? Viene copiata (o costruita) soltanto la parte Dipendente di Manager, ovvero la parte condivisa tra classe base e derivata. Questo fenomeno prende il nome di slicing ed è spesso fonte di sorprese. Per questo motivo (oltre che per ragioni di efficienza) è preferibile l uso di puntatori e/o referenze. NOTA: Gli operatori di assegnamento NON sono ereditati, così come i costruttori. 30
31 Funzioni Virtuali Nell utilizzo delle gerarchie, ci si scontra con questo problema: Dato un puntatore Base*, a quale tipo (tra i derivati da Base) corrisponde effettivamente l oggetto puntato? Esistono fondamentalmente 4 soluzioni: Assicurarsi di puntare ad oggetti di un solo tipo Inserire nella classe base un campo identificativo del tipo puntato Usare dynamic_cast Usare le funzioni virtuali 31
32 Funzioni Virtuali Il primo caso è poco flessibile, e costringe all uso di liste omogenee Il secondo caso è funzionale ma ha come punto debole l impossibilità di controllo dei tipi da parte del compilatore ed è difficilmente applicabile (ed è difficile da aggiornare) nel caso di gerarchie con molti tipi Il terzo caso è una variante del secondo supportata dal linguaggio L ultimo è una potente variante del secondo, ma stavolta type-safe e gestita dal linguaggio. 32
33 Funzioni Virtuali Esempio del secondo metodo: class Dipendente { public: enum TipoDip { M, D }; TipoDip tipo; Dipendente() : tipo (D) { } }; char nome[30]; class Manager: public Dipendente { int level; public: Manager() : tipo(m) { } }; 33
34 Funzioni Virtuali Si potrebbe avere una funzione per la stampa: void stampa_dip (const Dipendente * pd) { switch (pd->tipo) { } case Dipendente::D: cout << nome: << pd->nome << endl; break; case Dipendente::M: cout << nome: << pd->nome << endl; const Manager * pm = static_cast<manager*>(pd); cout << livello: << pm->level << endl; break; 34
35 Funzioni Virtuali Il problema principale è che potrebbero esistere molti funzioni e/o metodi sparsi tra vari file sorgenti che effettuano test sul campo tipo La loro modifica potrebbe risultare difficoltosa, soprattutto quando si aggiungono nuovi tipi da gestire in seguito ad un estensione della gerarchia di classe 35
36 Funzioni Virtuali Le funzioni virtuali superano elegantemente il problema, consentendo al programmatore di dichiarare nella classe base dei metodi che saranno ridefiniti nelle classi derivate La corretta associazione tra il metodo chiamato tramite un puntatore ad una classe base e il metodo effettivo dell istanza appartenente alla gerarchia è effettuata in fase di esecuzione (meccanismo noto come dynamic binding) 36
37 Funzioni Virtuali Esempio: class Dipendente { char *nome, *cognome; public: virtual void stampa() const; /* */ }; La keyword virtual indica che stampa() è una sorta di interfaccia tra la funzione stampa() definita in questa classe e le funzioni stampa() definite nelle classi da questa derivate 37
38 Funzioni Virtuali Gli argomenti della funzione definita nella classe derivata non possono differire dagli argomenti della corrispondente funzione (dichiarata virtual) nella classe base Una funzione virtuale deve essere definita nella classe in cui essa è dichiarata per la prima volta (unica eccezione: caso in cui essa è dichiarata virtuale pura) Si può usare una funzione virtuale anche se non vi sono classi derivate da essa e non è necessario che le derivate ne forniscano versioni personalizzate 38
39 Funzioni Virtuali Grazie al meccanismo funzioni virtuali, posso richiamarle con un puntatore generico: Manager m1; Dipendente *pdip = &m1; pdip->stampa(); // viene richiamata la stampa() di Manager Nota: se stampa() non fosse stata dichiarata virtual, l istruzione precedente avrebbe richiamato stampa() di Dipendente! (meccanismo di static binding) 39
40 Funzioni Virtuali pure Alcune classi rappresentano dei concetti astratti, a cui non possono essere associate istanze di oggetti reali In altre parole, hanno senso solo come base per derivare altre classi, fornendo una sorta di interfaccia Generalmente, le classi astratte sono caratterizzate da funzioni virtuali pure: class Shape { public: virtual void rotate(float) = 0; virtual void draw() = 0; }; 40
41 Funzioni Virtuali pure Non è possibile avere istanze di classi astratte: Shape s; // errore di compilazione! Le funzioni virtuali pure DEVONO essere implementate in una classe derivata, altrimenti si hanno ancora classi astratte (e come tali non istanziabili) Un importante uso delle classi astratte è quello di fornire un interfaccia senza esporre dettagli di implementazione Le classi da essa derivate implementeranno le funzionalità specifiche 41
42 Funzioni Virtuali pure Esempio: Class Rectangle: public Shape { public: void rotate (float); void draw(); }; void Rectangle::draw() { // implementazione specifica per il rettangolo } void Rectangle::rotate(float degree) { // implementazione specifica per il rettangolo } 42
43 Eredità pubblica, privata e protetta La forma generale per derivare la classe D dalla classe B è la seguente: class D : specificatore B { // }; dove specificatore (opzionale) può essere private (per default), protected o public e indica il tipo di accesso che la classe derivata avrà nei confronti della classe base 43
44 Eredità pubblica, privata e protetta Se D deriva da B secondo lo specificatore public (è il più comune): le sezioni public e protected di B lo saranno anche in D protected: le sezioni public e protected di B diventeranno sezioni protected in D (chiusura verso l esterno ma non verso la gerarchia di eredità) private (default): le sezioni public e protected di B diventeranno sezioni private in D (chiusura totale) Nota: il private di B NON è mai accessibile dalla classe derivata D! 44
45 Conversioni personalizzate Il C++ consiste di ridefinire il comportamento degli operatori del linguaggio quando lavorano su tipi definiti dall utente Anche il cast (esplicito o meno) è un operatore, e come tale è ammessa la sua ridefinizione E dunque possibile definire come avviene la conversione tra un tipo ed un altro La sintassi generale è: operator tipo(); 45
46 Conversioni personalizzate Esempio: class Real { protected: float value; public: Real() : value(0) { } /* */ operator float() { return value; } }; Con la definizione precedente è possibile: Real a; float b = (float)a; // conversione esplicita float b = a + 3.5f; // conv. impl. di a in float 46
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
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,
DettagliSoluzione 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
DettagliProgrammazione 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
DettagliProgettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
DettagliInformatica 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 -
DettagliRelazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore
Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter
Dettaglivoid 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
DettagliVisibilità 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
DettagliParola 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
Dettaglihttp://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.
DettagliInizializzazione, 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
DettagliManuale 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
DettagliProgrammazione 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
DettagliDatabase. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
DettagliIntroduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte
Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliGeneralizzazione 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)
DettagliEsercitazione 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:
DettagliTipi 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
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
Dettagli12 - 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,
Dettagli!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9
!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se
Dettaglicostruttori 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,
DettagliTraccia di soluzione dell esercizio del 25/1/2005
Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello
DettagliCorso di Informatica
Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio
DettagliObject Oriented Programming
OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in
DettagliSistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliMECCANISMI E POLITICHE DI PROTEZIONE 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliVariabili 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
DettagliFunzioni 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
DettagliLezione 4. Modello EER
Lezione 4 Modello EER 1 Concetti del modello EER Include tutti i concetti di modellazione del modello ER Concetti addizionali: sottoclassi/superclassi, specializzazione, categorie, propagazione (inheritance)
DettagliLa 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,
DettagliEsercitazione di Basi di Dati
Esercitazione di Basi di Dati Corso di Fondamenti di Informatica 6 Maggio 2004 Come costruire una ontologia Marco Pennacchiotti pennacchiotti@info.uniroma2.it Tel. 0672597334 Ing.dell Informazione, stanza
DettagliGli 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
DettagliCorso 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
DettagliI 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
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliGestione Rapporti (Calcolo Aree)
Gestione Rapporti (Calcolo Aree) L interfaccia dello strumento generale «Gestione Rapporti»...3 Accedere all interfaccia (toolbar)...3 Comandi associati alle icone della toolbar...4 La finestra di dialogo
DettagliBanca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste
Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)
Dettagli15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
15 - Packages 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
DettagliCreare una nuova spedizione personalizzata.
Gestione spedizioni La piattaforma ecommerce compry.it offre una gestione estremamente potente dei costi di spedizione da applicare al cliente che effettua acquisti. Il sistema, oltre al classico calcolo
DettagliOggetti 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
DettagliProtezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
DettagliGESTIONE 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
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
DettagliLA 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
DettagliLinguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java
DettagliGli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.
Prof. Francesco Accarino Raccolta di esercizi modello ER Esercizio 1 Un università vuole raccogliere ed organizzare in un database le informazioni sui propri studenti in relazione ai corsi che essi frequentano
DettagliRegione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da
ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario
DettagliGestione Risorse Umane Web
La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...
Dettagli14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
14 - Packages 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
Dettaglidall 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 È
DettagliNOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0
Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2
DettagliStrutture. 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
DettagliObject Oriented Software Design
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria
DettagliProgettazione di Basi di Dati
Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello
DettagliCRM Configurazione e gestione accessi
Gestione dei Reparti VtigerCrm fornisce funzionalità per configurare i privilegi di accesso ai dati in maniera granulare per ogni utente o gruppo di utenti registrato nel programma. Le funzionalità di
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliI database relazionali (Access)
I database relazionali (Access) Filippo TROTTA 04/02/2013 1 Prof.Filippo TROTTA Definizioni Database Sistema di gestione di database (DBMS, Database Management System) Sistema di gestione di database relazionale
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliUML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
DettagliIntroduzione alla teoria dei database relazionali. Come progettare un database
Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare
DettagliComunità on Line Manuale Utente. Fascicolo 1. Come iscriversi a Comunità On Line. Versione 1.1
Fascicolo 1 Come iscriversi a Comunità On Line Versione 1.1 Laboratorio Maieutiche - Università degli Studi di Trento Palazzo Todeschi, via Tartarotti 7, Rovereto Università degli Studi di Trento Laboratorio
DettagliUniversità 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)
DettagliMon Ami 3000 Lotti e matricole Gestione della tracciabilità tramite lotti/matricole
Prerequisiti Mon Ami 3000 Lotti e matricole Gestione della tracciabilità tramite lotti/matricole L opzione Lotti e matricole è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione Generale
DettagliIndice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi
Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)
DettagliProgrammazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
DettagliJava: 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
DettagliProcedura SMS. Manuale Utente
Procedura SMS Manuale Utente INDICE: 1 ACCESSO... 4 1.1 Messaggio di benvenuto... 4 2 UTENTI...4 2.1 Gestione utenti (utente di Livello 2)... 4 2.1.1 Creazione nuovo utente... 4 2.1.2 Modifica dati utente...
DettagliMANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
DettagliUso 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
DettagliRIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova
RIFERIMENTI ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 I riferimenti devono essere precisi
DettagliRealizzazione 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
DettagliMon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività
Prerequisiti Mon Ami 000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività L opzione Centri di costo è disponibile per le versioni Contabilità o Azienda Pro. Introduzione
DettagliIl database management system Access
Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio
DettagliLinguaggi e Paradigmi di Programmazione
Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una
DettagliManuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015]
Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Realizzato e distribuito da LeggeraSoft Sommario Premessa... 2 Fase di Login... 2 Menù principale... 2 Anagrafica clienti...
DettagliMon Ami 3000 Varianti articolo Gestione di varianti articoli
Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione
DettagliCAPACITÀ DI PROCESSO (PROCESS CAPABILITY)
CICLO DI LEZIONI per Progetto e Gestione della Qualità Facoltà di Ingegneria CAPACITÀ DI PROCESSO (PROCESS CAPABILITY) Carlo Noè Università Carlo Cattaneo e-mail: cnoe@liuc.it 1 CAPACITÀ DI PROCESSO Il
DettagliIntroduzione a ROOT. 1. Informazioni generali
Introduzione a ROOT 1. Informazioni generali ROOT è un ambiente visualizzazione e trattamento dati interattivo sviluppato al CERN (si veda il sito ufficiale http://root.cern.ch interamente sviluppato in
DettagliBASI DI DATI - : I modelli di database
BASI DI DATI - : I modelli di database DAL 1960 ci si e' orientati verso 3 direzioni: 1 MODELLO GERARCHICO Se i dati si presentano naturalmente in una struttura ad albero (ES. File System) Limiti: rigidità
DettagliTelerilevamento e GIS Prof. Ing. Giuseppe Mussumeci
Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme
Dettagli1) GESTIONE DELLE POSTAZIONI REMOTE
IMPORTAZIONE ESPORTAZIONE DATI VIA FTP Per FTP ( FILE TRANSFER PROTOCOL) si intende il protocollo di internet che permette di trasferire documenti di qualsiasi tipo tra siti differenti. Per l utilizzo
DettagliAmministrazione gruppi (Comunità)
Amministrazione gruppi (Comunità) Guida breve per il docente che amministra il gruppo Premessa Di regola i gruppi sono creati all interno della Scuola. Nel caso in cui vi fosse la necessità di aprire un
DettagliFigura 1 Le Icone dei file di Excel con e senza macro.
18 Le macro Le macro rappresentano una soluzione interessante per automatizzare e velocizzare l esecuzione di operazioni ripetitive. Le macro, di fatto, sono porzioni di codice VBA (Visual Basic for Applications)
DettagliVPN CIRCUITI VIRTUALI
& TUNNELING 1 Il termine VPN viene pesantemente abusato, con varie definizioni ma possiamo definire intuitivamente una VPN considerando dapprima l'idea dì una rete privata. Le aziende con molte sedi si
DettagliCREAZIONE DI UN AZIENDA
CREAZIONE DI UN AZIENDA La creazione di un azienda in Businesspass avviene tramite la funzione Aziende Apertura azienda ; dalla medesima sarà possibile richiamare le aziende precedentemente create per
DettagliFIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it
FIRESHOP.NET Gestione Lotti & Matricole www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione... 6 Personalizzare le etichette del modulo lotti... 6 Personalizzare i campi che identificano
DettagliCorso 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
DettagliCome modificare la propria Home Page e gli elementi correlati
Come modificare la propria Home Page e gli elementi correlati Versione del documento: 3.0 Ultimo aggiornamento: 2006-09-15 Riferimento: webmaster (webmaster.economia@unimi.it) La modifica delle informazioni
DettagliDefinizione di classi con array di oggetti
Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per
DettagliWorkland 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,
DettagliN.B. nelle schermate esemplificative che seguiranno i dati personali sono stati oscurati.
IRIS GUIDA RAPIDA ALCUNI CONCETTI DI BASE E TERMINOLOGIA... 1 DESKTOP PRODOTTI... 3 Personalizzazione della visualizzazione... 4 Stato di invio al sito ministeriale... 7 Azioni possibili su un prodotto...
DettagliIntroduzione 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
DettagliSISTEMA CONTROLLO ACCESSO PARCHI AVVENTURA JUNGLE TRACK
SISTEMA CONTROLLO ACCESSO PARCHI AVVENTURA JUNGLE TRACK LISTA DELLE OPZIONI DISPONIBILI NELLA VERSIONE COMPLETA ATTIVITA E LISTINI Si possono gestire in contemporanea attività basate su listini indipendenti.
DettagliMANUALEDIUTILIZZO MODULO CRM POSTVENDITA
MANUALEDIUTILIZZO MODULO CRM POSTVENDITA INDICE INTRODUZIONE INSERIMENTO CHIAMATA CHIAMATE Dettaglio Chiamate Macchine Coinvolte Documenti Riepilogo MACCHINE Dettaglio Macchine Documenti Interventi MACCHINE
DettagliFondamenti 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
Dettagli