Ingegneria del Software



Documenti analoghi
Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Esercizi della lezione 5 di Java

Java: Compilatore e Interprete

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza();

Algoritmi di Ricerca. Esempi di programmi Java

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Realizzazione di una classe con un associazione

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

SAPIENZA Università di Roma, Facoltà di Ingegneria

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Esempi di esercizi d esame

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a I scritto Febbraio 11 Febbraio 2011

Ottava Esercitazione. introduzione ai thread java mutua esclusione

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Modulo 4: Ereditarietà, interfacce e clonazione

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Inizializzazione, Assegnamento e Distruzione di Classi

UML Diagrammi delle classi. UML Diagramma classi 1

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Esercitazione n 4. Obiettivi

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:

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Programmare in Java. Olga Scotti

Definizione di classi con array di oggetti

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a

Corso sul linguaggio Java

GESTIONE DEI PROCESSI

Corso di Informatica

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione 1 A.A. 2015/2016

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

13. Chain of Responsibility

Un esercizio d esame. Flavio De Paoli

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Corso di Reti di Calcolatori L-A

Object Oriented Software Design

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Concetto di Funzione e Procedura METODI in Java

Telematica II 17. Esercitazione/Laboratorio 6

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi

Prova d Esame Compito A

Corso Eclipse. Prerequisiti. 1 Introduzione

E21 Esercizi sulle collezioni in Java

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Programmazione a Oggetti Lezione 10. Ereditarieta

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

Prova d Esame Compito B

Realizzazione di Phone Plan. Soluzione - SimpleTime. Realizzazione e testing! Soluzione - SimpleTime. Soluzione - SimpleTime

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

E7 Esercizi sul Capitolo 7 Realizzazione di Classi

Università Politecnica delle Marche. Progetto Didattico

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Design Pattern in Java

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola

Eclipse. Avviare un progetto e compilare un semplice programma

Esercizio 1: trading on-line

Main System Monitor Keyboard

esercizi Esercizi / problemi

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

FORD FIESTA FIE_307877_V6_201175_Covers.indd 1 07/09/ :18

Programmazione a Oggetti Modulo B

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

Introduzione a Classi e Oggetti

Gestione delle Eccezioni

appunti delle lezioni Architetture client/server: applicazioni server

Università di Roma La Sapienza, Facoltà di Ingegneria

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Architettura MVC-2: i JavaBeans

Transcript:

Ingegneria del Software Java Relazioni Associazioni 1

Associazione Uno a Zero-Uno Un esempio Un autovettura ha al più un proprietario 0..1 Dato il verso di navigazione specificato è necessario avere una reference ad un oggetto all interno dell oggetto I due oggetti hanno cicli di vita indipendenti +Marca: String +Modello: String +Titolare: Associazione Uno a Zero-Uno (2) Classe File:.java public class { private String Cognome; private String Nome; (String Cognome, String Nome){ this.cognome = Cognome; this.nome = Nome; public String getnome(){ return Nome; public String getcognome(){ return Cognome; 2

Associazione Uno a Zero-Uno (3) Classe File:.java public class { private String Marca; private String Modello; private Titolare; (String Marca, String Modello, Titolare){ this.marca = Marca; this.modello = Modello; this.titolare = Titolare; void stampa(){ System.out.println("Dati del proprietario dell'auto "+Marca+" "+Modello); System.out.println("Nome: "+Titolare.getNome()); System.out.println("Cognome: "+Titolare.getCognome()); Associazione Uno a Zero-Uno (4) Classe Main File: Main.java Output public class Main { public static void main(string[] args) { // Dichiarazione degli oggetti Alfa; Ford; Coronato; // Creazione degli oggetti Coronato = new ("Antonio","Coronato"); Alfa = new ("Alfa Romeo","156",Coronato); Ford = new ("Ford","Fiesta",Coronato); Dati del proprietario dell'auto Alfa Romeo 156 Nome: Coronato Cognome: Antonio Dati del proprietario dell'auto Ford Fiesta Nome: Coronato Cognome: Antonio // Stampa report Alfa.stampa(); System.out.println(); Ford.stampa(); Corso di Ingegneria del Software 3

Associazione Uno a Uno Un esempio Un autovettura ha un solo proprietario 1 I due oggetti hanno cicli parzialmente di vita indipendenti Nell esempio precedente la reference all oggetto poteva valere NULL (valore zero della relazione) Si deve gestire in maniera affidabile la cancellazione dell oggetto Che cosa succede all oggetto se il suo viene eliminato dal sistema? Associazione Bi-direzionale Esempio Si tiene conto anche delle Autovetture possedute da un 0..* 0..1 E necessario avere una struttura di reference agli oggetti all interno dell oggetto 4

Associazione Zero (Uno) a Molti Esempio Si tiene conto anche delle Autovetture possedute da un 0..* Una soluzione basata su array : String : String +Auto: [ ] Associazione Zero (Uno) a Molti (2) Classe File:.java public class { private String Marca; private String Modello; (String Marca, String Modello){ this.marca = Marca; this.modello = Modello; public String getmarca(){ return Marca; public String getmodello(){ return Modello; [ ] 5

Associazione Zero (Uno) a Molti (2) Classe File:.java public class { private String Cognome; private String Nome; private [] Auto; (String Cognome, String Nome, [] Auto){ this.cognome = Cognome; this.nome = Nome; this.auto = Auto; public void stampaauto(){ [ ] System.out.println("Report delle auto di "+" "); for(int i = 0; i < Auto.length; i++) System.out.println("Marca: "+Auto[i].getMarca()+" Modello: "+Auto[i].getModello()); Corso di Ingegneria del Software Università Federico II di Napoli Associazione Zero (Uno) a Molti (3) Classe Main File: Main.java public class Main { public static void main(string[] args) { // Dichiarazione [] Auto; Coronato; // Implementazione Auto = new [2]; Alfa = new ("Alfa Romeo","156"); Ford = new ("Ford","Fiesta"); Output Report delle auto di Coronato Antonio Marca: Alfa Romeo Modello: 156 Marca: Ford Modello: Fiesta Auto[0] = Alfa; Auto[1] = Ford; Coronato = new ("Antonio","Coronato",Auto); [ ] Corso di Ingegneria del Software Università Federico II di Napoli // Stampa report Coronato.stampaAuto(); 6

Associazione Zero (Uno) a Molti Esempio Si tiene conto anche delle Autovetture possedute da un 0..* Una soluzione basata su LinkedList Maggiore dinamicità Aggregazioni 7

Aggregazioni Ancora una volta i cicli di vita degli oggetti devono essere indipendenti salvo molteplicità particolari Si utilizzano le stesse soluzioni adottate per le associazioni Composizioni 8

Composizioni Un esempio Motore 1 +Cilindrata: Int +Potenza: Int Gli oggetti hanno ciclo di vita condiviso Classe Motore Composizioni (2) File: Motore.java public class Motore { private int Cilindrata; private int Potenza; Motore(int Cilindrata, int Potenza){ this.cilindrata = Cilindrata; this.potenza = Potenza; int getpotenza(){ return Potenza; int getcilindrata(){ return Cilindrata; 9

File:.java public class { private String Marca; private String Modello; private Motore Mo; Composizioni (3) (String Marca, String Modello, int Cilindrata, int Potenza){ this.marca = Marca; this.modello = Modello; Mo = new Motore(Cilindrata,Potenza); (String Marca, String Modello, Motore Mo){ this.marca = Marca; this.modello = Modello; this.mo = Mo; public String getmarca(){ return Marca; public String getmodello(){ return Modello; public int getcilindrata(){ return Mo.getCilindrata(); public int getpotenza(){ return Mo.getPotenza(); Università Federico II di Napoli File: Main.java public class Main { public static void main(string[] args) { Classe Main Composizioni (4) // Dichiarazione ed implementazione Alfa = new ("Alfa Romeo","156",1900,150); Motore Mo = new Motore(1100,75); Ford = new ("Ford","Fiesto",Mo); // Stampa report alfa System.out.println("Report Auto "); System.out.println("Marca: "+Alfa.getMarca()); System.out.println("Modello: "+Alfa.getModello()); System.out.println("Cilindrata: "+Alfa.getCilindrata()); System.out.println("Potenza: "+Alfa.getPotenza()); System.out.println(); System.out.println(); Output Report Auto Marca: Alfa Romeo Modello: 156 Cilindrata: 1900 Potenza: 150 // Stampa report ford fiesta System.out.println("Report Seconda Auto "); System.out.println("Marca: "+Ford.getMarca()); System.out.println("Modello: "+Ford.getModello()); System.out.println("Cilindrata: "+Ford.getCilindrata()); System.out.println("Potenza: "+Ford.getPotenza()); Corso di Ingegneria del Software Report Seconda Auto Marca: Ford Modello: Fiesto Cilindrata: 1100 Potenza: 75 10