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

Slides:



Advertisements
Presentazioni simili
Sfogliandomi… Viaggio tra me e me alla scoperta dellaltro… A travel between me and myself discovering the other…
Advertisements

Centro Internazionale per gli Antiparassitari e la Prevenzione Sanitaria Azienda Ospedaliera Luigi Sacco - Milano WP4: Cumulative Assessment Group refinement.
Cache Memory Prof. G. Nicosia University of Catania
Teoria e Tecniche del Riconoscimento
1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Interfacce Java.
1 Teaching Cloud Computing and Windows Azure in Academia Domenico Talia UNIVERSITA DELLA CALABRIA & ICAR-CNR Italy Faculty Days 2010.
La stenosi carotidea a rischio: evoluzione dell’inquadramento US
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
E.Mumolo, DEEI Player Stage E.Mumolo, DEEI
Università degli Studi di Cassino e del Lazio Meridionale Dipartimenti di Scienze Umane, Sociali e della Salute Lingua Inglese a.a (Dott. Saverio.
Sta andando meglio? oppure ti senti uguale? Is it getting better? Or do you feel the same?
L’albero della famiglia
© and ® 2011 Vista Higher Learning, Inc.4B.2-1 Punto di partenza The verbs conoscere and sapere both mean to know. The choice of verb depends on its context.
Raffaele Cirullo Head of New Media Seconda Giornata italiana della statistica Aziende e bigdata.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
Biometry to enhance smart card security (MOC using TOC protocol)
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Metodi di simulazione numerica in Chimica Fisica Dario Bressanini Universita degli Studi dellInsubria III anno della Laurea triennale in Scienze Chimiche.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions 3.4Functions.
6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità
Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario 2: Microsoft.NET.
Magnetochimica AA Marco Ruzzi Marina Brustolon
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Introduzione Grid1 Introduzione ai Sistemi Grid. Introduzione Grid2 Generalità Un sistema Grid permette allutente di richiedere lesecuzione di un servizio.
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
1 laboratorio di calcolo II AA 2003/04 sesta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
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 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. ( )
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Chistmas is the most loved holiday of the years. Adults and children look forward to Chistmas and its magical atmosphere. It is traditional to decorate.
HERES OUR SCHOOL.. 32 years ago this huge palace was built and it was just the beginning; It is becoming larger and larger as a lot of students choose.
Players: 3 to 10, or teams. Aim of the game: find a name, starting with a specific letter, for each category. You need: internet connection laptop.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
SOURCE TERM ON NPP SAFETY ANALYSES Marino Mazzini Professore Ordinario nel s.s.d. Impianti Nucleari Università di Pisa Facoltà di Ingegneria Dipartimento.
by Charlotte This is written in the Hebrew Talmud, the book where all of the sayings and preaching of Rabbis are conserved over time. Questo è scritto.
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
Lezione n° 05 Istituto Statale di Istruzione Superiore F. Enriques Corso JAVA.
© 2008 WS (WebScience srl) – All rights reserved WS Tech workshop Software Construction.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A.
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI ECONOMIA, GIURISPRUDENZA, INGEGNERIA, LETTERE E FILOSOFIA, SCIENZE POLITICHE. Corso di Laurea Interfacoltà in.
14° Workshop – DotNetMarche :: Castelfidardo, 16 Aprile 2010 Introduzione ai framework per IoC / DI e AOP.
Motor Sizing.
My Italian Experience By Ryan Davidson. My daily routine in Urbino If there was no field trip in the morning, my daily routine in Urbino was very basic.
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Tutor: Elisa Turrini Mail:
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
Architettura software La scelta architetturale: MVA (Model – View – Adapter/Control) The view is completely decoupled from the model such that view and.
A Casa e all’ Estero Higher Level
Present Perfect.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Collection & Generics in Java
PLURALI - with NOUNS PAY ATTENTION TO THE ENDING OF THE NOUN! “O” ---> “I” ex) il quaderno -> i quaderni “A” ---> “E” ex) la matita -> le matite “E” --->
Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo.
Guida alla compilazione del Piano di Studi Curricula Sistemi per l’Automazione Automation Engineering.
Passato Prossimo. What is it?  Passato Prossimo is a past tense and it is equivalent to our:  “ed” as in she studied  Or “has” + “ed” as in she has.
Dynamic SQL.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Ratifica dei trattati internazionali - Italia Art. 87 Costituzione “Il Presidente della Repubblica…ratifica i trattati internazionali, previa, quando occorra,
William Wordsworth Memory & Inspiration “And as I mounted up the hill
What time does the plane leave? At 12:45 1.
Cyber Safety.
Transcript della presentazione:

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

2 Relazioni tra Concetti ed Ereditarietà «A concept does not exist in isolation. It coexists with related concepts and derives much of its power from relationships with related concepts…» (B. Stroustrup) Indipendenza tra Concetti e Programmazione Generica «Independent concepts should be independently represented and should be combined only when needed. Where this principle is violated, you either bundle unrelated concepts together or create unnecessary dependencies. Either way, you get a less flexible set of components out of which to compose systems…» (B. Stroustrup) Relazioni tra concetti Ereditarieta Concetti Indipendenti Templates premessa

3 Limplementazione di un metodo assume molte forme ( poli- morfismo ) ed e possibile scegliere automaticamente la forma giusta Polimorfismo a Run Time La forma giusta viene scelta durante lesecuzione del programma Polimorfismo a Compilation Time La forma giusta viene scelta durante la compilazione del programma Programmazione Generica

4 Voglio contare le gocce di pioggia che cadono sulle mattonelle di un pavimento class Myfloor { protected : int element[4][4] ; public: // costruttori // distruttore // metodi di tipo set // metodi di tipo get // altri metodi (incremento) // operatori ………………………………….. } ; Esempio 1

5 Voglio studiare la distribuzione di massa in una lastra non omogenea class Myplate { protected : double element[4][4] ; public: // costruttori // distruttore // metodi di tipo set // metodi di tipo get // altri metodi (incremento) // operatori ………………………………….. } ; Esempio 2

6 Voglio studiare il capo elettrico su un reticolo class Myfield { protected : ThreeVector element[4][4] ; public: // costruttori // distruttore // metodi di tipo set // metodi di tipo get // altri metodi (incremento) // operatori ………………………………….. } ; Esempio 3

7 Stiamo scrivendo molte linee di codice praticamente identiche, ma non possiamo ri-utilizzare il codice attraverso il meccanismo dellEreditarietà, infatti da un lato non ci sono relazioni sfruttabili tra le situazioni elencate e dallaltro attributi e metodi delle classi che abbiamo visto sono di tipo diverso. Il problema Ma la possibilità di ri-utilizzare del codice non era uno dei cardini della programmazione OO?

8 Lezione 1: Requisiti per il software moderno 1.Robustezza protezioni nellaccesso ai dati 2.Possibilità di ri-utilizzo del codice 1.economia di risorse umane ed economiche 2.maggiore affidabilità 3.Portabilità 1.verso sistemi operativi diversi 2.verso diverse versioni di uno stesso sistema 4.Flessibilità e Organizzazione del Codice semplicità di gestione e sviluppo successivo del codice

9 Vogliamo calcolare il minimo tra due oggetti (per i quali sia definito un ordinamento). Definiamo una funzione minimo per ogni tipo di oggetto trattato: double & minimo(const double & a1, const double & a2) { if(a1<=a2) { return a1; } else { return a2;} } TwoVect & minimo(const TwoVect & a1, const TwoVect & a2) { if(a1<=a2) { return a1; } else { return a2} ; } int & minimo(const int & a1, const int & a2) { if(a1<=a2) { return a1; } else { return a2;} } Esempio 4

10 Introduco un parametro T che rappresenta il tipo (la classe) cui appartengono gli oggetti da trattare e implemento il codice in funzione della generica classe T. Specificando T (int, double, complex, TwoVector…) in fase di compilazione ottengo il codice oggetto che tratta interi, reali in doppia precisione, complessi, vettori a due componenti… La soluzione: le classi Template

11 La sintassi delle classi Template template class Myclass { ………………………………… // T si puo usare come // una classe qualsiasi …………………………………. }; Dichiarazione (.h): template tipo Myclass ::nomemetodo(…) { …………… } Implementazione (.icc): Implementazione (.cc): export template tipo Myclass ::nomemetodo(…) { …………… }

12 Esempi 1,2 e 3 template class Mynet { protected : T element[4][4] ; public: // costruttori // distruttore // metodi di tipo set // metodi di tipo get // altri metodi (incremento) // operatori ………………………………….. } ; MyfloorMynet MyplateMynet MyfieldMynet

13 #include Mynet.h int main() { ……………… Mynet mi; Mynet mdb; Mynet mtv; ……………… return 0; } Uso di una classe Template

14 class Myfloor : public Mynet { public: // costruttori ~Myfloor() {}; // distruttore } ; posso poi usare anche lEreditarietà, implementando solo costruttori e distruttori class Myplate : public Mynet { public: // costruttori ~Myplate() {}; // distruttore } ; #include class Myfield : public Mynet { public: // costruttori ~Myplate() {}; // distruttore } ; Template e ereditarietà #include Mynet.h int main() { ……………… Myfloor mi; Myplate mdb; Myfield mtv; ……………… return 0; }

15 template T & minimo(const T & a1, const T & a2) { if(a1<=a2) { return a1; } else { return a2;} } La funzione: E il suo uso: #include int main() { float a = min(3.,2.); //float int i = min(2,3); // int TwoVector p1(1.,2.); TwoVector p2(3.,1.); TwoVector p3 = min(p1,p2); return 0; } #include mymin.icc Esempio 4

16 1.Riferimenti Libreria STL

17 Strutture dati per memorizzare oggetti (e puntatori ad oggetti) Esempi di contenitori vector list map Per accedere ad essi (iteratori) Per eseguire operazioni su di essi ( find, sort, copy, merge… ) container

18 push_back() begin() end() end() p pp p p 0 p ++ Funzionamento di vector

19 #include int main() { vector v; // create an empty vector of integers cout << v.size() << endl; // print the size of v: zero for (int I=0; I!=10; ++I) { // a loop from 0 to 9 v.push_back(I); // add an integer to v from the back } cout << v.size() << endl; // print the size of v: 10 // create an constant iterator for a vector of integers: // p behaves at all effects as a const int * vector ::const_iterator p; // begin() points to the first element // and end() to the last+1 // (compare with the previous for loop) for (p=v.begin(); p!=v.end(); ++p) cout << (*p) << ; cout << endl; return 0; } Main.cc Uso di vector