1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 www.fis.uniroma3.it/~orestano.

Slides:



Advertisements
Presentazioni simili
Funzioni Friend Come abbiamo visto non possiamo accedere a membri privati di una classe dall'esterno della classe. Ma a volte abbiamo bisogno di farlo.
Advertisements

Oggetti Java.
Costruttori e Distruttori
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Interfacce. Interfacce come strumento di progetto Scelta delle classi di un progetto Criteri di coesione e accoppiamento Interfacce e riuso di codice.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Costruzione di Interfacce Lezione 11 Dal Java al C++ parte 2
Costruzione di Interfacce Lezione 12 C++STL
Introduzione al linguaggio C++ 5 lezioni
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Derivazione tra classi
Overriding.
Oggetti e dati primitivi
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
Lab. Calc. AA 2004/051 laboratorio di calcolo AA 2004/054 a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
Lab. Calc. AA 2005/061 laboratorio di calcolo AA 2005/06 a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Maria Antonietta Ricci Dipartimento di Fisica Edoardo Amaldi
1 laboratorio di calcolo II AA 2003/04 terza settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 ottava settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 nona settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 quinta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 laboratorio di calcolo II AA 2003/04 seconda settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Subtype Polymorphism. Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch.
Programmazione con Interfacce
Operatori E possibile ridefinire +, -, *, [], ++, ==, < class Vector2D { Friend operator+(const Vector2D& v1, const Vector2D& v2); public: Vector2D(double.
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Matrici: un’implementazione parametrica in C++
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Ereditarietà.
CORSO DI PROGRAMMAZIONE II Lezione 22
Ugo de'Liguoro - Informatica 2 - Introduzione Informatica 2 Introduzione al corso a.a. 2003/04.
Oggetti in C# Lezione 2 Metodi e Static Oggetti in C# - Lezione 2.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Oggetti in C# Lezione 5 Polimorfismo I Andrea Zoccheddu.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 11 Ereditarietà in C++
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Sottoprogrammi e funzioni
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Strutture e Classi.
Introduzione. 2 Perché Java? Java è un linguaggio di programmazione nato per essere eseguito su macchine e sistemi operativi molto diversi fra loro. A.
Condizioni decisionali e costrutto if. 2 Operatori relazionali e logici = Maggiore, maggiore uguale ==, != Uguale a, diverso.
Condizioni decisionali
Condizioni decisionali
Condizioni decisionali
Transcript della presentazione:

1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( ) UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA E. AMALDI

2 Esercitazione della settimana scorsa Ereditarietà e polimorfismo (shape) OK? Implementazione della classe dei numeri complessi con overloading di alcuni operatori –Non per tutti era chiaro cosa fare –Alcuni errori negli esempi che vi ho fornito e differenze tra lucidi e dispense –Un problema legato al nostro compilatore con i metodi che ritornano degli oggetti Nellesercitazione di questa settimana: 1h30 per completare i numeri complessi

3 class Compl { private: double re; double im ; public: // costruttori Compl() ; // costruttore di default Compl(double a) ;// costruisce un numero reale come complesso Compl(double a, double b) ; // costruisce a+ib Compl(Compl & c) ; // costruisce un numero complesso uguale a c ~Compl() ;//distruttore //metodi di tipo Set void set_Re(double a); // pone re=a void set_Im(double b); // pone re=a //metodi di tipo Get double const Real() ; // restituisce re double const Imm() ; // restituisce im //operatori unari Compl & operator- (); // ritorna un nuovo numero complesso //operatori binari Compl & operator= (Compl const & c); // ritorna una reference Compl operator+ (Compl const & c); // ritorna un nuovo complesso } ; Un esempio classico: la classe dei numeri complessi (con correzioni) const X X

4 Nellimplementazione di TwoVector: ostream & operator << (ostream & fstream, const TwoVector & v) { fstream << " (" << v.x() << "," << v.y() << ") "; } return fstream;

5 TwoVector & TwoVector::operator = (const TwoVector & p) { dx = p.x(); dy = p.y(); return *this; } TwoVector TwoVector::operator - () const { return TwoVector(-dx, -dy); } TwoVector TwoVector::operator + (const TwoVector & a) { return TwoVector(dx + a.x(), dy + a.y()); } Questi due metodi non compilano: modificarli come segue: TwoVector TwoVector::operator - () const { TwoVector A(-dx,-dy); return A; } TwoVector TwoVector::operator + (const TwoVector & a) { TwoVector B(dx + a.x(), dy + a.y()); return B; }

6 Universal Modeling Language Esistono delle convenzioni universali per rappresentare Le classi Le relazioni tra le classi Le interazioni tra le classi Gli use case UML

7 applicativi Esistono dei pacchetti applicativi per –Costruire la struttura del programma C++ (o altro linguaggio OO) a partire dalla rappresentazione UML –Ottenere la rappresentazione UML a partire dal codice del programma C++ (o altro linguaggio OO) (Reverse Engeneering)

8 Use case diagrams Descrivono cosa ci si aspetta che il sistema faccia dal punto di vista di un osservatore esterno (e non come) Gli elementi sono –Actor: rappresenta il ruolo svolto da una persona o da un oggetto –Use case: linsieme delle situazioni (scenari) che si verificano quando qualcuno interagisce col sistema –Communication association: il collegamento tra Actor e Use case Servono a definire i requirement e a generare i test case

9 Esempio di use case diagram

10 Class diagrams Classe Nome della Classe attributo attributo : tipo attributo : tipo = valore_iniziale operazione operazione (argomenti) : tipo_risultato

11 protezioni Classe - attributo privato # attributo protetto /- attributo privato derivato +$ attributo pubblico della classe + operazione pubblica # operazione protetta /- operazione privata +$ operazione pubblica della classe

12 Relazioni tra classi Ci limitiamo a quelle fondamentali: –Relazione di associazione ed in particolare: Relazione di aggregazione ; Relazione di composizione ; –Relazione di ereditarieta'; Una relazione di associazione (un oggetto di una classe deve conoscere lesistenza dellaltro per poter operare) è rappresentata da una linea che congiunge i diagrammi di 2 classi. La molteplicità minima e massima degli oggetti coinvolti è riportata agli estremi della linea –m…n : da m a n oggetti –0…* o semplicemente * : un numero qualsiasi –n : esattamente n oggetti –n…* : almeno n oggetti Un oggetto di una classe è in relazione con uno o più oggetti di unaltra

13 Relazione di aggregazione Un oggetto di una classe ha tra i sui attributi puntatori ad oggetti di un'altra classe Gli oggetti aggregati esistono indipendentemente dalloggetto aggregante La relazione di aggregazione è indicata da un rombo vuoto posto vicino alla classe che aggrega La freccia indica la direzione di navigabilità della relazione quando questa è monodirezionale

14 Relazione di composizione Un oggetto di una classe ha tra i sui attributi oggetti di un'altra classe Lesistenza degli oggetti componenti dipende dallesistenza delloggetto composto e non possono appartenere a più di un oggetto La relazione di composizione è indicata da un rombo nero posto vicino alla classe composta ThreeVector -Componenti:VecComp[3] … +ThreeVector … VecComp -element:double … +VecComp … 13

15 Relazione di ereditarietà si indica con una freccia vuota, a punta trangolare, che connette la classe che eredita con la classe base

16 esempio

17 Interaction diagrams Diagrammi dinamici che mettono in evidenza le interazioni tra gli oggetti. In particolare un sequence diagram mostra in dettaglio i vari passaggi richiesti dallesecuzione di unoperazione evidenziando quali messaggi vengano scambiati e in che ordine temporale. Le linee verticali rappresentano istanze di oggetti (e non classi), il tempo scorre dallalto verso il basso, i rettangoli sovrapposti alle linee verticali (opzionali) mostrano lattività di un oggetto. Frecce piene dirette da sinistra a destra rappresentano messaggi sincroni, frecce vuote messaggi asincroni, frecce vuote da destra a sinistra con linee tratteggiate rappresentano return.

18

19

20 link interessanti I diagrammi di UML sono molti di più, sono stati illustrati solo quelli di uso più frequente. Per approfondimenti: Tutorial online dalla pagina Elenco e descrizione aggiornata di tutti i diagrammi

21 Possibili argomenti di esame Combinazione di Momenti Angolari in MQ Particella in una buca di potenziale Moto di una particella in –Campo elettrico –Campo Magnetico –Campo Elettrico e Magnetico –Campo EM lentamente variabile Capacita di un condensatore con dielettrico variabile Circuiti Elettrici Lineari – Resistenza –Capacita' –Induttanza –Impedenza – Generatori, ecc. Circuiti Elettrici Logici Trasformazioni di Lorentz - Quadrivettori

22 Soluzione delleq. di Schrodinger Barriera di potenziale Oscillatore armonico (vari casi) Elementi di Statistica (medie e varianze, distr. della media, distr. di Gauss e di Poisson, prob. condizionate, teorema di Bayes, Istogrammi) Rappresentazione di strumentazione (orologio, generatore di segnali, tester (con Rint )) Termodinamica e Meccanica Statistica: –Teoria cinetica dei gas – Gas perfetti e gas reali Elementi di Ottica – Lenti – Specchi – Reticoli Analisi numerica –Calcolo integrale –Integrazione di equazioni differenziali

23 Cosa fare Formare un gruppo (max 4 persone) Scegliere un argomento Costruire use case e scenari Redigere un elenco di requisiti Definire gli oggetti coinvolti e le loro relazioni Distribuire le responsabilità Identificare le interazioni tra gli oggetti Esercitare il modello in una sessione CRC Mettere a punto delle procedure di test Iterare? Scrivere e testare il codice

24 Sessione CRC CRC: Classi, Responsabilità, Collaborazione capire come funziona dinamicamente il programma che si vuole realizzare Giuoco di Ruolo: ciascuno dei partecipanti è un Oggetto del programma uno dei partecipanti è il Programma "Main Ogni partecipante deve conoscere le caratteristiche di ciascuna Classe: "come è fatta" "quali azionì può compiere Durante la sessione tutto si svolge come nel corso dell'esecuzione del Programma, in questo modo emergono casi non previsti ed eventuali problemi.

25 Documentazione per lesame (deliverables) Documento di requirements Diagrammi UML: –Use case –Class –Sequence Resoconto sessione CRC Documento descrittivo delle procedure di test Dichiarazioni delle classi (.h) Implementazione Risultati dei test Per ogni ciclo di sviluppo