public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.



Documenti analoghi
public double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo.

Programmazione. Cognome... Nome... Matricola... Compitino del 26 gennaio 2009

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Soluzione della prova scritta del 5 febbraio 2013

Note ed esercizi aggiuntivi

Array di array. E' possibile creare strutture a matrice (2D, 3D,..., ND), esempio: double [ ][ ] entrate = new double [NANNI][NMESI];

Note ed esercizi aggiuntivi

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari

Programmazione I - Preparazione A.A. 2010/2011

Programmazione II Compitino (Vers. B)

Le basi del linguaggio Java

Esempi in Java di program.ne O-O

Preparazione allo Scritto di Programmazione

Programmazione II Compitino (Vers. A)

//riferimento a una sequenza di oggetti della classe Importo

Esonero del corso di Programmazione a Oggetti

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2011

Programmazione II Compitino (Vers. B)

Le eccezioni in Java

Note ed esercizi aggiuntivi

La classe java.lang.object

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008

Programmazione Preparazione al II Compitino

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Classi astratte Interfacce

Programmazione 1 A.A. 2015/2016

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Eccezioni predefinite

Preparazione allo Scritto di Programmazione

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2. Dispensa E09. C. Limongelli Marzo 2008

Programmazione a Oggetti Lezione 11. Eccezioni e Packages

Esonero del corso di Programmazione a Oggetti

Istruzioni. Il codice Java delle domande non mostra gli import, che si assumono essere correttamente presenti.

Programma... Autoboxing / unboxing Array Classe Rettangolo / classe Quadrato / Gerarchia e ereditarietà. Laboratorio di Programmazione - Esercitazio 1

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione Preparazione al II Compitino

Programmazione a oggetti

Informatica Ereditarietà Java. Ereditarietà

Esercitazione n 3. Capacità di analisi e di estensione di progetti esistenti Linguaggio Java:

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Classi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Laboratorio di Programmazione 1 [Java]

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

COGNOME NOME MATRICOLA DATA

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

GESTIONE DEGLI ERRORI

Laboratorio di Programmazione 1 [Java]

Parte I Java. Metodologie di Programmaziona Secondo Appello, 14/2/2006 1

GESTIONE DEGLI ERRORI

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Programmazione. Appello di Giugno 2019

Java: Definire Classi e Creare Oggetti

Programmazione I - corso B a.a prof. Viviana Bono

COGNOME NOME MATRICOLA DATA

Programmazione II Compitino (Vers. A)

Eccezioni ed asserzioni

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Note ed esercizi aggiuntivi

Programmazione con Java

Esercizi sulla ricorsione

LA CLASSE Data ESERCIZIO. Definiamo la classe Data che incapsuli giorno, mese e anno (tutti int)

III Appello - 4 giugno 2009

Laboratorio di Programmazione 1 [Java]

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Programmazione II Compitino (Vers. A)

Bank account. private double balance; 11/2/2011

Il Linguaggio Java. Le interfacce

Autovalutazione. OO in Java: classi astratte, interfacce, classi interne. Riassunto: cos è la OOP?

Ereditarietà e polimorfismo

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Lezione 2 Primi programmi

Ereditarietà (ultima)

Ereditarietà (ultima)

Programmazione ad oggetti Prova scritta 15 Gennaio 2013

CLASSI ASTRATTE - ESERCIZIO

Programmazione Appello di febbraio 2019

I Metodi. Fondamenti di Informatica A-K

Transcript:

Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40 minuti Negli esercizi proposti si utilizzano le seguenti classi: Classe astratta Figura. Ogni oggetto della classe rappresenta una figura geometrica nel piano. La classe possiede un costruttore privo di argomenti. Tra i metodi della classe Figura vi sono: public abstract double getarea() public abstract double getperimetro() restituiscono, rispettivamente, l area e il perimetro della figura che esegue il metodo. Classi Rettangolo, Cerchio, Quadrato. Gli oggetti rappresentano, rispettivamente, rettangoli, cerchi e quadrati. direttamente Figura, mentre Quadrato estende direttamente Rettangolo. Tra i metodi forniti dalla classe Quadrato vi è: Rettangolo e Cerchio estendono public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. L unico costruttore fornito da Quadrato ha un argomento: public Quadrato(double l) costruisce un oggetto che rappresenta un quadrato il cui lato ha la lunghezza ricevuta tramite il parametro. Attenzione: nello svolgere gli esercizi fate riferimento a quanto indicato sopra e non all implementazione delle classi, che è privata e dunque non accessibile al di fuori del codice di ciascuna delle classi stesse. Negli esercizi 1, 2 e 3 considerate la dichiarazione di variabile Figura[] ar. Supponete di disporre di una porzione di codice alla fine della quale ar si riferisca a un array in cui ogni posizione contiene il riferimento a un oggetto di tipo Figura (quindi nessuna delle posizioni contiene null). 1. Scrivete una porzione di codice per calcolare e visualizzare sul monitor la media delle aree di tutte le figure contenute nell array ar. Nel caso l array sia vuoto, al posto della media il metodo deve visualizzare un messaggio opportuno.

2. Scrivete una porzione di codice per calcolare e visualizzare sul monitor la media delle aree di tutti i quadrati contenuti nell array ar. Nel caso l array non contenga quadrati, al posto della media il metodo deve visualizzare un messaggio opportuno. 3. Scrivete una porzione di codice per calcolare e visualizzare sul monitor la media dei lati di tutti i quadrati contenuti nell array ar. Nel caso l array non contenga quadrati, al posto della media il metodo deve visualizzare un messaggio opportuno.

4. Considerate le seguenti classi: public class Strana extends Quadrato { private int t; private static int k = 10; public Strana(String s) { super(s.length() + 1); t = s.length(); k = k + s.length() - 1; public Strana() { this(""); public double getarea() { return super.getarea() + t; class Prova { public static void main(string[] args) { Strana s = new Strana("ape"); System.out.println((int)s.getArea()); //1 System.out.println(Strana.getStatico()); //2 s = new Strana(); System.out.println((int)s.getArea()); //3 System.out.println(Strana.getStatico()); //4 Scrivete in ogni riquadro l output prodotto dall istruzione di stampa seguita dal commento indicato: //1 //2 //3 //4 public static int getstatico() { return k; 5. Oltre alle classi utilizzate negli esercizi precedenti, considerate una classe concreta Gamma che estende Quadrato e una classe concreta Delta che estende Figura e implementa un interfaccia In. a. Nel riquadro che precede ciascuna affermazione, scrivete V se l affermazione è vera, F se è falsa: Se il codice sorgente della classe Delta non contiene un costruttore allora il compilatore segnala un errore Delta deve fornire l implementazione del metodo getarea Gamma deve fornire l implementazione dei metodi di In Gamma deve fornire l implementazione del metodo getarea Gamma deve fornire l implementazione del metodo getlato Se il codice sorgente della classe Gamma non contiene un costruttore allora il compilatore segnala un errore Delta deve fornire l implementazione del metodo getlato Delta deve fornire l implementazione dei metodi di In Ogni istanza di Strana contiene esattamente un campo (oltre a quelli ereditati dalla superclasse) Ogni istanza di Strana contiene esattamente 2 campi (oltre a quelli ereditati dalla superclasse) b. Considerate le seguenti dichiarazioni di variabile: Figura f, Gamma g, Rettangolo r, Quadrato q, Delta d, Strana s, In i; Nel riquadro accanto a ciascun assegnamento scrivete SI se l assegnamento è compilato correttamente, NO se non è compilato correttamente (supponete che al posto di... vi siano gli argomenti opportuni): f = new Quadrato(f.getArea()) f = r r = (Strana) f f = new Figura() r = new Quadrato(2.0) d = (Delta) i q = r r = q g = s s = (Quadrato) r

6. Considerate la dichiarazione di variabile Figura[] figure e il seguente frammento di codice: int x = 5; try { for (Figura f: figure) x = x - (int)(f instanceof Quadrato? ((Quadrato)f).getLato() : f.getarea()); Quadrato r = (Quadrato) figure[x / x]; x = (int) r.getarea(); catch (ArithmeticException e) { x = 24 - x; catch (ArrayIndexOutOfBoundsException e) { x = 34 - x; catch (NullPointerException e) { x = 44 - x; catch (ClassCastException e) { x = 54 - x; Ricordando che: ArithmeticException viene sollevata in caso di anomalie nel calcolo di operazioni aritmetiche, ArrayIndexOutOfBoundsException viene sollevata quando si tenti di accedere a una posizione inesistente in un array, NullPointerException viene sollevata quando si tenti di accedere a un oggetto tramite un riferimento null, ClassCastException viene sollevata quando si tenti di forzare un oggetto a una sottoclasse di cui l oggetto non è istanza, indicate nel riquadro corrispondente, in ciascuno dei seguenti casi, il valore della variabile x dopo l esecuzione: (a) l array riferito da figure contiene (nell ordine indicato) riferimenti a oggetti che rappresentano un quadrato di lato 2, un quadrato di lato 3, un cerchio di raggio 1. (b) figure contiene null. (c) l array riferito da figure contiene (nell ordine indicato) riferimenti a oggetti che rappresentano un cerchio di raggio 1, un quadrato di lato 2. (d) l array riferito da figure contiene (nell ordine indicato) riferimenti a oggetti che rappresentano un quadrato di lato 3, un cerchio di raggio 1, un quadrato di lato 2. 7. Considerate il seguente metodo ricorsivo. Scrivete il risultato restituito da ciascuna delle invocazioni di metodo indicate nei due riquadri:... Quadrato f(int x) { if (x <= 2) return new Quadrato(x); else return new Quadrato(3 + 2 * f(x / 2).getLato()); f(2).getarea() f(5).getarea()

Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40 minuti Negli esercizi proposti si utilizzano le seguenti classi: Classe astratta Figura. Ogni oggetto della classe rappresenta una figura geometrica nel piano. La classe possiede un costruttore privo di argomenti. Tra i metodi della classe Figura vi sono: public abstract double getarea() public abstract double getperimetro() restituiscono, rispettivamente, l area e il perimetro della figura che esegue il metodo. Classi Rettangolo, Cerchio, Quadrato. Gli oggetti rappresentano, rispettivamente, rettangoli, cerchi e quadrati. direttamente Figura, mentre Quadrato estende direttamente Rettangolo. Tra i metodi forniti dalla classe Quadrato vi è: Rettangolo e Cerchio estendono public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. L unico costruttore fornito da Quadrato ha un argomento: public Quadrato(double l) costruisce un oggetto che rappresenta un quadrato il cui lato ha la lunghezza ricevuta tramite il parametro. Attenzione: nello svolgere gli esercizi fate riferimento a quanto indicato sopra e non all implementazione delle classi, che è privata e dunque non accessibile al di fuori del codice di ciascuna delle classi stesse. Negli esercizi 1, 2 e 3 considerate la dichiarazione di variabile Figura[] vet. Supponete di disporre di una porzione di codice alla fine della quale vet si riferisca a un array in cui ogni posizione contiene il riferimento a un oggetto di tipo Figura (quindi nessuna delle posizioni contiene null). 1. Scrivete una porzione di codice per calcolare e visualizzare sul monitor la media delle aree di tutte le figure contenute nell array vet. Nel caso l array sia vuoto, al posto della media il metodo deve visualizzare un messaggio opportuno.

2. Scrivete una porzione di codice per calcolare e visualizzare sul monitor la media delle aree di tutti i quadrati contenuti nell array vet. Nel caso l array non contenga quadrati, al posto della media il metodo deve visualizzare un messaggio opportuno. 3. Scrivete una porzione di codice per calcolare e visualizzare sul monitor la media dei lati di tutti i quadrati contenuti nell array vet. Nel caso l array non contenga quadrati, al posto della media il metodo deve visualizzare un messaggio opportuno.

4. Considerate le seguenti classi: public class Strana extends Quadrato { private int t; private static int k = 7; public Strana(String s) { super(s.length() + 1); t = s.length(); k = k + s.length() - 1; public Strana() { this(""); public double getarea() { return super.getarea() + t; class Prova { public static void main(string[] args) { Strana s = new Strana("bue"); System.out.println((int)s.getArea()); //1 System.out.println(Strana.getStatico()); //2 s = new Strana(); System.out.println((int)s.getArea()); //3 System.out.println(Strana.getStatico()); //4 Scrivete in ogni riquadro l output prodotto dall istruzione di stampa seguita dal commento indicato: //1 //2 //3 //4 public static int getstatico() { return k; 5. Oltre alle classi utilizzate negli esercizi precedenti, considerate una classe concreta Alfa che estende Quadrato e una classe concreta Beta che estende Figura e implementa un interfaccia In. a. Nel riquadro che precede ciascuna affermazione, scrivete V se l affermazione è vera, F se è falsa: Se il codice sorgente della classe Alfa non contiene un costruttore allora il compilatore segnala un errore Ogni istanza di Strana contiene esattamente un campo (oltre a quelli ereditati dalla superclasse) Ogni istanza di Strana contiene esattamente 2 campi (oltre a quelli ereditati dalla superclasse) Beta deve fornire l implementazione del metodo getlato Beta deve fornire l implementazione dei metodi di In Alfa deve fornire l implementazione dei metodi di In Alfa deve fornire l implementazione del metodo getarea Se il codice sorgente della classe Beta non contiene un costruttore allora il compilatore segnala un errore Beta deve fornire l implementazione del metodo getarea Alfa deve fornire l implementazione del metodo getlato b. Considerate le seguenti dichiarazioni di variabile: Figura f, Alfa a, Rettangolo r, Quadrato q, Beta b, Strana s, In i; Nel riquadro accanto a ciascun assegnamento scrivete SI se l assegnamento è compilato correttamente, NO se non è compilato correttamente (supponete che al posto di... vi siano gli argomenti opportuni): f = r q = r r = q a = s r = (Strana) f f = new Figura() r = new Quadrato(2.0) b = (Beta) i f = new Quadrato(f.getArea()) s = (Quadrato) r

6. Considerate la dichiarazione di variabile Figura[] figure e il seguente frammento di codice: int x = 5; try { for (Figura f: figure) x = x - (int)(f instanceof Quadrato? ((Quadrato)f).getLato() : f.getarea()); Quadrato r = (Quadrato) figure[x / x]; x = (int) r.getarea(); catch (ArithmeticException e) { x = 22 - x; catch (ArrayIndexOutOfBoundsException e) { x = 32 - x; catch (NullPointerException e) { x = 42 - x; catch (ClassCastException e) { x = 52 - x; Ricordando che: ArithmeticException viene sollevata in caso di anomalie nel calcolo di operazioni aritmetiche, ArrayIndexOutOfBoundsException viene sollevata quando si tenti di accedere a una posizione inesistente in un array, NullPointerException viene sollevata quando si tenti di accedere a un oggetto tramite un riferimento null, ClassCastException viene sollevata quando si tenti di forzare un oggetto a una sottoclasse di cui l oggetto non è istanza, indicate nel riquadro corrispondente, in ciascuno dei seguenti casi, il valore della variabile x dopo l esecuzione: (a) l array riferito da figure contiene (nell ordine indicato) riferimenti a oggetti che rappresentano un cerchio di raggio 1, un quadrato di lato 2. (b) l array riferito da figure contiene (nell ordine indicato) riferimenti a oggetti che rappresentano un quadrato di lato 3, un cerchio di raggio 1, un quadrato di lato 2. (c) l array riferito da figure contiene (nell ordine indicato) riferimenti a oggetti che rappresentano un quadrato di lato 2, un quadrato di lato 3, un cerchio di raggio 1. (d) figure contiene null. 7. Considerate il seguente metodo ricorsivo. Scrivete il risultato restituito da ciascuna delle invocazioni di metodo indicate nei due riquadri:... Quadrato f(int x) { if (x <= 2) return new Quadrato(x); else return new Quadrato(3 + 2 * f(x / 2).getLato()); f(2).getarea() f(5).getarea()