public int gety() { return y;



Похожие документы
Definizione di classi con array di oggetti

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Esercizi della lezione 5 di Java

public BorsaStudio(String nome, String ente, int d, double r) { this.nome = nome; this.ente = ente; this.durata = d; this.

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

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

Parola chiave extends

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

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

Programmazione ad Oggetti: JAVA. Esercitazione

Modulo 4: Ereditarietà, interfacce e clonazione

Algoritmi di Ricerca. Esempi di programmi Java

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

public static boolean mr (String[] a, String[] b) { 2. Esercizio 3. Scrivere una versione ricorsiva del metodo definito per risolvere l Esercizio 2.

Realizzazione di una classe con un associazione

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

Programmazione a Oggetti Lezione 10. Ereditarieta

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:

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

Riassunto. La programmazione OO. Oggi. Esempio

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Controllo degli accessi

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

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

Funzioni in C. Violetta Lonati

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

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

Main System Monitor Keyboard

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

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

20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist

Esercizi di preparazione alla Seconda Parte

Concetto di Funzione e Procedura METODI in Java

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

UML Diagrammi delle classi. UML Diagramma classi 1

Ottava Esercitazione. introduzione ai thread java mutua esclusione

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

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

Introduzione all' OO in Python

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

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Inizializzazione, Assegnamento e Distruzione di Classi

Java: Compilatore e Interprete

Record in C: il costruttore struct.

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

Introduzione a Classi e Oggetti

Informatica (Basi di Dati)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

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

Esempio: Interfacce. Gioco Interfacce

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

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

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Programmazione Java: Variabili membro, Metodi La parola chiave final

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Esercitazione n 4. Obiettivi

Esempio: Interfacce. Gioco Interfacce

Ingegneria del Software

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

VACANZE STUDIO - MANUALE UTENTE PER SOCIETÀ APPALTATRICI

Appello di Informatica B

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Le variabili. Olga Scotti

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

GESTIONE DEI PROCESSI

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Fiumicino e Malpensa: due sistemi aeroportuali a confronto. IL SISTEMA DEI VALICHI ALPINI Monitoraggio dei flussi e valutazione degli effetti sulle

Calcolare il massimo di una lista

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Programmazione a Oggetti Modulo B

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

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

Ricorsione. (da lucidi di Marco Benedetti)

Programmazione I - Laboratorio

Funzioni. Il modello console. Interfaccia in modalità console

Test di unità con JUnit4

Programmazione in Java Parte I: Fondamenti

Basi di dati I Soluzione Quinto Homework del 9 gennaio 2013

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

I puntatori e l allocazione dinamica di memoria

Esercitazioni aggiuntive Martedì Laboratorio L-12

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

esercizi Esercizi / problemi

costruttori e distruttori

Corso sul linguaggio Java

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Esempi di esercizi d esame

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Транскрипт:

Alcuni esercizi su metodi sovrascritti e late binding 1. Siano date le classi seguenti: public class A { private int x; public A (int k) { x = k; public int getx() { return x; public class B extends A { private int y; public B (int k, int r) { super(k); y = r; public int gety() { return y; public int m() { return x*2; public int m1() { return y+1; public int m() { return y; Dati i seguenti oggetti: A a1 = new A(3); B b1 = new B(2,4); A a2 = new B(1,3); determinare qual è il valore restituito dalle seguenti chiamate di metodo: 1) a1.m(); 2) b1.m(); 3) a2.m(); 4) a1.m1(); 5) b1.m1(); 6) a2.m1(). Determinare qual è il valore restituito dalle prime tre chiamate di metodo nel caso in cui il metodo m nella sottoclasse B sia definito come segue: public int m() { return super.m() + y;

2. Siano date le classi seguenti: public class A1 { private int x; public A1 (int k) { x = k; public int getx() { return x; public int m(a1 a) { if (this.x > a.x) return 1; else return 2; public class B1 extends A1 { private int y; public B1 (int k, int r) { super(k); y = r; public int gety() { return y; public int m(a1 a) { return super.m(a) * y; Dati i seguenti oggetti: A1 a1 = new A1(3); B1 b1 = new B1(2,4); A1 a2 = new B1(1,3); determinare qual è il valore restituito dalle seguenti chiamate di metodo: 1) a1.m(a1); 2) a1.m(b1); 3) a1.m(a2); 4) b1.m(a1); 5) b1.m(b1); 6) b1.m(a2); 7) a2.m(a1); 8) a2.m(b1); 9) a2.m(a2).

3. Siano date le classi seguenti: public class C { private String colore; public class D extends C { private String t; public C (String s) { colore = s; public String leggicolore() { return colore; public String m1() { return "Colore: " + this.colore; public String m2(c c) { return this.colore + c.colore; public D (String s, String g) { super(s); t = g; public String leggit() { return t; public String m1() { return super.m1() +" "+ this.t; public String m2(c c) { return super.m2(c) +" "+ this.t; Dati i seguenti oggetti: C c1 = new C("nero"); D d1 = new D("giallo", "scuro"); C c2 = new D("verde", "chiaro"); determinare qual è il valore restituito dalle seguenti chiamate di metodo: 1) c1.m1(); 2) d1.m1(); 3) c2.m1(); 4) c1.m2(c1); 5) c1.m2(d1); 6) c1.m2(c2); 7) d1.m2(c1); 8) d1.m2(d1); 9) d1.m2(c2); 10) c2.m2(c1); 11) c2.m2(d1); 12) c2.m2(c2).

Alcuni esercizi su classi, ereditarietà e overriding 1. (Prova conclusiva del 10/12/2003, Esercizio 2.) Un aereoporto può essere caratterizzato tramite il nome, la città e la sigla (Es. Galilei, Pisa, PSA). Un passeggero di un volo può essere caratterizzato tramite il nome, la nazionalità, la sigla del volo (Es. AZ124), il posto assegnato (Es. 16F), il tipo di pasto richiesto (Es. vegetariano). Scrivere due classi Aereoporto e Passeggero con gli opportuni costruttori ed i metodi che restituiscono i valori delle variabili istanza. Inoltre, nella classe Passeggero definire un metodo che cambia il posto assegnato ad un dato passeggero. public class Aereoporto { private String nome, citta, sigla; public Aereoporto (String n, String c, String s) { nome = n; citta = c; sigla = s; public String getnome() { return nome; public String getcitta() { return citta; public String getsigla() { return sigla; public class Passeggero { private String nome, nazionalita, siglavolo, posto, tipopasto; public Passeggero (String n, String nz, String s, String p, String tp) { nome = n; nazionalita = nz; siglavolo = s; posto = p; tipopasto = tp; public String getnome() { return nome; public String getnazionalita() { return nazionalita; public String getsiglavolo() {

return siglavolo; public String getposto() { return posto; public String gettipopasto() { return tipopasto; public void cambiaposto (String p) { posto = p; 2. (Prova conclusiva del 10/12/2003, Esercizio 3, versione senza eccezioni.) Un volo può essere caratterizzato tramite la sigla (Es. AZ124), l aereoporto di partenza, l aereoporto di destinazione, l aereomobile (Es. Airbus300) e l elenco dei passeggeri. Scrivere una classe Volo, il cui costruttore imposta il numero massimo di passeggeri. Oltre ai metodi che restituiscono i valori delle variabili istanza, definire i seguenti metodi: - un metodo che aggiunge un passeggero ad un volo; - un metodo che restituisce una stringa che descrive un volo tramite sigla del volo, città e nome dell aereoporto di partenza e città e nome dell aereoporto di destinazione, ad esempio "Volo AZ108 Roma Fiumicino - Londra Heathrow"; - un metodo che restituisce l elenco dei nomi dei passeggeri di un volo; - un metodo che restituisce l elenco dei posti dei passeggeri che hanno richiesto un pasto vegetariano. public class Volo { private String siglavolo; private Aereoporto apart, adest; private String areomobile; private Passeggero[] elenco; private int cont; public Volo (String s, Aereoporto p, Aereoporto d, String c, int max) { siglavolo = s; apart = p; adest = d; areomobile = c; elenco = new Passeggero[max]; public String getsiglavolo() { return siglavolo; public Aereoporto getaerpart() { return apart;

public Aereoporto getaerdest() { return adest; public String getaereomobile() { return areomobile; public Passeggero[] getelenco() { return elenco; public void aggpasseggero (Passeggero p) { if (cont < elenco.length && p.getsiglavolo().equals(this.siglavolo)) { elenco[cont] = p; cont++; public String descrvolo() { return "Volo "+siglavolo+" "+ apart.getcitta() +" "+ apart.getnome() + " - "+ adest.getcitta() +" "+ adest.getnome(); public String[] elenconomip() { String[] nomi = new String[cont]; for (int i=0; i<cont; i++) nomi[i] = elenco[i].getnome(); return nomi; public String[] elencopostiveg() { int k = 0; for (int i=0; i<cont; i++) if (elenco[i].gettipopasto().equals("veg")) k++; String[] pv = new String[k]; k = 0; for (int i=0; i<cont; i++) if (elenco[i].gettipopasto().equals("veg")) { pv[k] = elenco[i].getposto(); k++; return pv; 3. (Prova conclusiva del 10/12/2003, Esercizio 4, versione senza eccezioni.) Un volo non diretto è un volo con scali intermedi, ovvero gli aereoporti in cui il volo sosta prima di raggiungere l aereoporto di destinazione. Scrivere una classe VoloNonDiretto, il cui numero massimo di scali intermedi viene impostato dal costruttore della classe. Oltre ai metodi che restituiscono i valori delle variabili istanza, definire

i seguenti metodi: - un metodo che aggiunge uno scalo intermedio; - un metodo che restituisce una stringa che descrive un volo non diretto tramite sigla del volo, città e nome dell aereoporto di partenza, città e nome dell aereoporto di destinazione e città e nome degli scali intermedi, ad esempio "Volo BA202 Londra Heathrow - Pisa Galilei via Parigi C. De Gaulle - Milano Malpensa". public class VoloNonDiretto extends Volo { private Aereoporto[] scali; private int cont; public VoloNonDiretto (String s, Aereoporto p, Aereoporto d, String c, int maxp, int maxs) { super(s,p,d,c,maxp); scali = new Aereoporto[maxS]; public Aereoporto[] getscali() { return scali; public void aggscalo (Aereoporto a) { if (cont < scali.length) { scali[cont] = a; cont++; public String descrvolo() { String s = ""; int i; for (i=0; i<cont-1; i++) s = s + scali[i].getcitta() + " " + scali[i].getnome() + " - "; s = s + scali[i].getcitta() + " " + scali[i].getnome(); return super.descrvolo() + " via " + s; 4. Scrivere inoltre un breve programma di prova che illustri l uso delle classi Aereoporto, Passeggero, Volo e VoloNonDiretto e dei loro metodi. public class VoloTest { public static void main (String[] args) { Aereoporto a1 = new Aereoporto ("Galilei", "Pisa", "PSA"); Aereoporto a2 = new Aereoporto ("Fiumicino", "Roma", "FCO"); Aereoporto a3 = new Aereoporto ("Malpensa", "Milano", "MPA"); Aereoporto a4 = new Aereoporto ("Heathrow", "Londra", "LHR"); Aereoporto a5 = new Aereoporto ("C. De Gaulle", "Parigi", "CDG"); Passeggero p1 = new Passeggero("Carlo", "It", "BA202", "3A", "ok"); Passeggero p2 = new Passeggero("Maria", "It", "BA202", "6A", "veg");

Passeggero p3 = new Passeggero("Laura", "Gb", "BA202", "16F", "veg"); Passeggero p4 = new Passeggero("Mario", "Fr", "BA202", "11B", "casher"); Passeggero p5 = new Passeggero("Ciro", "USA", "BA202", "10C", "veg"); Volo v1 = new Volo("AZ108",a2,a4,"Fokker",100); System.out.println(v1.descrVolo()); VoloNonDiretto v2 = new VoloNonDiretto("BA202",a4,a1,"Airbus300",250,3); v2.aggpasseggero(p1); v2.aggpasseggero(p2); v2.aggpasseggero(p3); v2.aggpasseggero(p4); v2.aggpasseggero(p5); v2.aggscalo(a5); v2.aggscalo(a3); String[] nomi = v2.elenconomip(); System.out.println("Nomi Passeggeri:"); for (int i=0; i<nomi.length; i++) System.out.println(nomi[i]); String[] veg = v2.elencopostiveg(); System.out.println("Posti Passeggeri Vegetariani:"); for (int i=0; i<veg.length; i++) System.out.println(veg[i]); System.out.println(v2.descrVolo()); Il risultato di tale programma di prova è la seguente stampa: Volo AZ108 Roma Fiumicino - Londra Heathrow Nomi Passeggeri: Carlo Maria Laura Mario Ciro Posti Passeggeri Vegetariani: 6A 16F 10C Volo BA202 Londra Heathrow - Pisa Galilei via Parigi C. De Gaulle - Milano Malpensa