1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di...

25
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 orestano@fis.uniroma3.it UNIVERSITA’ DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA “E. AMALDI”

Transcript of 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di...

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

1

laboratorio di calcolo IIAA 2003/04

sesta settimana

a cura di

Domizia Orestano

Dipartimento di FisicaStanza 159 - tel. (06 5517) 7281

www.fis.uniroma3.it/[email protected]

UNIVERSITA’ DEGLI STUDI ROMA TRE

DIPARTIMENTO DI FISICA “E. AMALDI”

Page 2: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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

• Nell’esercitazione di questa settimana: 1h30 per completare i numeri complessi

Page 3: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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 Setvoid set_Re(double a); // pone re=a

void set_Im(double b); // pone re=a

//metodi di tipo Getdouble const Real() ; // restituisce redouble const Imm() ; // restituisce im

//operatori unari Compl & operator- (); // ritorna un nuovo numero complesso //operatori binari

Compl & operator= (Compl const & c); // ritorna una referenceCompl operator+ (Compl const & c); // ritorna un nuovo complesso

} ;

Un esempio classico:

la classe dei numeri complessi (con correzioni)

constconst

X

X

Page 4: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

4

Nell’implementazione di TwoVector:

ostream & operator << (ostream & fstream, const TwoVector & v) {

fstream << " (" << v.x() << "," << v.y() << ") ";

}return fstream;

Page 5: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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; }

Page 6: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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

http://www.rational.com/uml

UML

Page 7: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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)

Page 8: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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: l’insieme 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

Page 9: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

9

Esempio di use case diagram

Page 10: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

10

Class diagrams

ClasseNome della Classe

attributoattributo : tipoattributo : tipo = valore_iniziale.............

operazioneoperazione (argomenti) : tipo_risultato.............

Page 11: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

11

protezioni

Classe

- attributo privato# attributo protetto/- attributo privato derivato+$ attributo pubblico della classe

+ operazione pubblica # operazione protetta /- operazione privata +$ operazione pubblica della classe

Page 12: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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 l’esistenza dell’altro 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 un’altra

Page 13: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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 dall’oggetto 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

Page 14: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

14

Relazione di composizione

• Un oggetto di una classe ha tra i sui attributi oggetti di un'altra classe

• L’esistenza degli oggetti componenti dipende dall’esistenza dell’oggetto 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…

1 3

Page 15: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

15

Relazione di ereditarietà

si indica con una freccia vuota, a punta trangolare, che connette la classe che eredita con la classe base

Page 16: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

16

esempio

Page 17: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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 dall’esecuzione di un’operazione evidenziando quali messaggi vengano scambiati e in che ordine temporale.

• Le linee verticali rappresentano istanze di oggetti (e non classi), il tempo scorre dall’alto verso il basso, i rettangoli sovrapposti alle linee verticali (opzionali) mostrano l’attività 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.

Page 18: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

18

Page 19: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

19

Page 20: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

20

link interessanti

• I diagrammi di UML sono molti di più, sono stati illustrati solo quelli di uso più frequente. Per approfondimenti:

http://www.rational.com/uml

• Tutorial online dalla paginahttp://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/sit/Training/main.html

• Elenco e descrizione aggiornata di tutti i diagrammihttp://www.holub.com/goodies/uml/index.html

Page 21: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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

Page 22: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

22

• Soluzione dell’eq. 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

Page 23: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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

Page 24: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

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.

Page 25: 1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza 159 - tel. (06 5517) 7281 orestano.

25

Documentazione per l’esame (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