Classe con istruzioni di controllo

di il
6 risposte

Classe con istruzioni di controllo

Salve, mentre stavo studiando ho trovato sulle dispense questo esercizio:
"Scrivere una classe Java, di nome Intervallo, le cui
istanze rappresentano intervalli chiusi [a, b] di numeri interi. Un oggetto Intervallo è definito
tramite i suoi due estremi, a e b. La classe Intervallo dovrà avere i seguenti costruttori e metodi:
? Un costruttore che consente di creare un oggetto Intervallo con estremi specificati;
? Un metodo di istanza:
void intersezione(Intervallo inter, OutputWindow out)
che visualizza nella finestra grafica passata come parametro tutti i numeri compresi
nell’intersezione tra l’intervallo rappresentato dall’oggetto ricevente e quello
rappresentato dall’oggetto inter passato come parametro;
? Un metodo di classe
static void intersezione(Intervallo inter1, Intervallo inter2)
che visualizza sullo standard output tutti i numeri compresi nell’intersezione tra gli
intervalli rappresentati da inter1 e inter2 passati come parametro.
Scrivere inoltre una classe di test per la classe Intervallo."

Allegata si trova anche la soluzione completa:
import fond.io.*;
public class Intervallo{
private int a;
private int b;
public Intervallo(int a, int b){
this.a = a;
this.b = b;
}
public void intersezione(Intervallo inter, OutputWindow out){
int min, max;
// il min è l'estremo inferiore dell'intersezione,
// ed è calcolato come il più grande dei due estremi inferiori
if (this.a > inter.a)
min = this.a;
else
min = inter.a;
// il max è l'estremo superiore dell'intersezione,
// ed è calcolato come il più piccolo dei due estremi
// superiori
if (this.b < inter.b)
max = this.b;
else
max = inter.b;
// se min è maggiore di max, l'intersezione è vuota
if (min > max)
out.writeln("Intersezione vuota");
else{
out.writeln("Intersezione:");
for (int i=min; i<=max; i++)
out.writeln(i);
}
}
public static void intersezione(Intervallo inter1, Intervallo inter2){
int min, max;
// il min è l'estremo inferiore dell'intersezione,
// ed è calcolato come il più grande dei due estremi inferiori
if (inter1.a > inter2.a)
min = inter1.a;
else
min = inter2.a;
// il max è l'estremo superiore dell'intersezione,
// ed è calcolato come il più piccolo dei due estremi
// superiori
if (inter1.b < inter2.b)
max = inter1.b;
else
max = inter2.b;
// se min è maggiore di max, l'intersezione è vuota
if (min > max)
System.out.println("Intersezione vuota");else{
System.out.println("Intersezione:");
for (int i=min; i<=max; i++)
System.out.println(i);
}
}
}
Viene anche riportato il codice di una possibile classe di test.
import fond.io.*;
public class TestIntervallo{
public static void main(String[] args){
InputWindow in = new InputWindow();
int a,b;
do{
a = in.readInt("Intervallo 1: estremo inferiore?");
b = in.readInt("Intervallo 1: estremo superiore?");
}while(a > b);
Intervallo interv1 = new Intervallo(a,b);
do{
a = in.readInt("Intervallo 2: estremo inferiore?");
b = in.readInt("Intervallo 2: estremo superiore?");
}while(a > b);
Intervallo interv2 = new Intervallo(a,b);
interv1.intersezione(interv2,new OutputWindow());
Intervallo.intersezione(interv1,interv2);
}
}
nonostante tutto però non riesco a capire l'esercizio. Probabilmente è di una banalità disarmante, ma non capisco nemmeno il testo, figurarsi l'esercizio. Qualcuno potrebbe gentilmente spiegarmi passo passo ogni parte ?

6 Risposte

  • Re: Classe con istruzioni di controllo

    Banale? No, non lo è. Tuttavia se è necessario spiegare linea per linea ciò che c'è scritto in quel programma fai prima a leggerti un manuale Java, poiché non credo che nell'ambito di un post si possa spiegare buona parte del linguaggio soprattutto se sei a digiuno riguardo i principi della programmazione a oggetti.

    Invece se già hai buone conoscenze di base e non capisci un passaggio... allora è un altro discorso.
  • Re: Classe con istruzioni di controllo

    slash_zer0 ha scritto:


    Banale? No, non lo è. Tuttavia se è necessario spiegare linea per linea ciò che c'è scritto in quel programma fai prima a leggerti un manuale Java, poiché non credo che nell'ambito di un post si possa spiegare buona parte del linguaggio soprattutto se sei a digiuno riguardo i principi della programmazione a oggetti.

    Invece se già hai buone conoscenze di base e non capisci un passaggio... allora è un altro discorso.
    Il problema è che dovrei saperle queste cose, sono mesi che mi preparo per l'esame!!
    Comunque principalmente la cosa che non capisco è il testo dell'esercizio (può anche essere che sia scritto male o che sono io che non riesco a capirlo, ma se all'esame mi trovo davanti una cosa del genere, quali sono i segnali che mi permettono di capire cosa devo fare ? Cioè, ci sono delle parole chiave che mi permettono di capire cosa fare anche se la sintassi della frase in italiano lascia a desiderare ?). In generale, ci sono altre sottigliezze, trucchi, escamotage o quant'altro che mi possono facilitare la comprensione e lo svolgimento degli esercizi ? Magari voi avendo molta più esperienza del sottoscritto sapete (per esperienza o per studi approfonditi) qualche tecnica... aggiungo che usiamo solo ed esclusivamente TextPad, quindi non consigliatemi software alternativi, grazie
  • Re: Classe con istruzioni di controllo

    Tecniche o trucchi? Non ho capito che intendi, l'unica tecnica è la pratica. In ogni caso il testo dell'esercizio è chiaro, devi costruire un oggetto che astragga un intervallo di numeri interi. Un intervallo, come sai, è definito dai suoi estremi che sono i parametri da passare al costruttore della classe. La finestra è solo un modo per mostrare un output (è stata inserita per poter farti fare pratica con l'output java).

    Inoltre devi implementare due metodi intersezione(), sovraccaricandoli. Il primo metodo dovrà semplicemente mostrare l'intervallo quindi, ad esempio se l'intervallo è 1 - 5 dovrai mostrare:
    
    1 - 2 - 3 - 4 - 5
    
    Il secondo metodo invece prende due intervalli e ne stampa l'intersezione. Quindi se:
    
    Interv1 = 1 - 7
    Interv2 = 2 - 5
    
    OUTPUT:
    2 - 3 - 4 - 5
    
    Per il resto puoi usare diversi IDE per programmare: Eclipse, NetBeans quelli che mi vengono in mente ora.
  • Re: Classe con istruzioni di controllo

    slash_zer0 ha scritto:


    Tecniche o trucchi? Non ho capito che intendi. In ogni caso il testo dell'esercizio è chiaro, devi costruire un oggetto che astragga un intervallo di numeri interi. Un intervallo, come sai, è definito dai suoi estremi che sono i parametri da passare al costruttore della classe. La finestra è solo un modo per mostrare un output (è stata inserita per poter farti fare pratica con l'output java).

    Inoltre devi implementare due metodi intersezione(), sovraccaricandoli. Il primo metodo dovrà semplicemente mostrare l'intervallo quindi, ad esempio se l'intervallo è 1 - 5 dovrai mostrare:
    
    1 - 2 - 3 - 4 - 5
    
    Il secondo metodo invece prende due intervalli e ne stampa l'intersezione. Quindi se:
    
    Interv1 = 1 - 7
    Interv2 = 2 - 5
    
    OUTPUT:
    2 - 3 - 4 - 5
    
    Per il resto puoi usare diversi IDE per programmare: Eclipse, NetBeans quelli che mi vengono in mente ora.
    Ti faccio un esempio di quello che intendo per trucchi: l'esame di teoria per la patente segue degli schemi lessicali ben precisi, per cui si ha una enorme probabilità che ad una determinata parola si associ una risposta vera o falsa. Ovviamente questo non è sufficiente al conseguimento della patente perchè bisogna studiare e avere delle basi, ma in casi di domande con doppie negazioni o dalla dubbia interpretazioni possono cavarti d'impaccio. Quello che vorrei sapere è se esistono cose simili anche in Java.
    In ogni modo, la procedura per questo esercizio l'ho capita per come l'hai spiegata tu, ma non riesco a collegarla al testo originale dell'esercizio. Particolarmente criptico è questo passaggio:
    l’intervallo rappresentato dall’oggetto ricevente e quello
    rappresentato dall’oggetto inter passato come parametro
    che si trova al termine del secondo punto nel testo originale.
  • Re: Classe con istruzioni di controllo

    studenteingegneria ha scritto:



    Ti faccio un esempio di quello che intendo per trucchi: l'esame di teoria per la patente segue degli schemi lessicali ben precisi, per cui si ha una enorme probabilità che ad una determinata parola si associ una risposta vera o falsa. Ovviamente questo non è sufficiente al conseguimento della patente perchè bisogna studiare e avere delle basi, ma in casi di domande con doppie negazioni o dalla dubbia interpretazioni possono cavarti d'impaccio. Quello che vorrei sapere è se esistono cose simili anche in Java.
    No, non ci sono scappatoie, né parole magiche o chiave.
    l’intervallo rappresentato dall’oggetto ricevente e quello
    rappresentato dall’oggetto inter passato come parametro
    Hai ragione, in effetti è un po' criptico. Io credo che il metodo
    
    void intersezione(Intervallo inter, OutputWindow out)
    
    EDIT:

    debba prendere in ingresso un intervallo e stampare su out l'intersezione tra l'intervallo dell'oggetto su cui chiami il metodo e quello passato come parametro. Mi correggo rispetto all'esempio in precedenza.

    In partica se passi
    
    Inter: 2 - 5
    
    all'oggetto che ha come intervallo 3 - 9
    
    OUTPUT
    
    3 - 4 - 5 
    
  • Re: Classe con istruzioni di controllo

    Boh... comunque al termine dell'esecuzione del test per la classe mi viene stampato su una finestra grafica solo un intervallo, credo che sia quello. In ogni caso grazie per l'aiuto, la tua spiegazione era chiara
    Ora continuo a studiare e speriamo bene per l'esame
Devi accedere o registrarti per scrivere nel forum
6 risposte