Bocchi Cinzia

20/10/09
1
Verifica di Informatica

Obiettivo: Definire la struttura di una classe e implementare metodi GET/SET, costruttori e
altre funzionalità. Creare e gestire istanze della classe.

Tempo a disposizione: 100 minuti.



Definire classe SalaCinema con le seguenti proprietà, che ne definiscono la struttura:
codice;
nome;
numeroPosti.

Si richiede la creazione di
un costruttore che inizializzi tutte le variabili di istanza;
un costruttore che abbia il comportamento del costruttore di default;
un metodo get che restituisca il numero di posti;
un metodo set che modifichi il numero di posti disponibili (numeroPosti) sulla base
di un valore specificato e passato come parametro al metodo.

Successivamente, si scriva un programma eseguibile che, dato il prezzo del biglietto,
calcoli il possibile ricavo derivante da una proiezione con sala occupata al completo.


Soluzione: classe SalaCinema
Supponiamo che codice sia un intero. Le variabili nome e numeroPosti sono
rispettivamente di tipo stringa e intero.

Per prima cosa, possiamo scrivere lo scheletro della classe.

public class SalaCinema
{
//variabili di istanza
private int codice;
private String nome;
private int numeroPosti;

//costruttore

//costruttore di default

//getNumeroPosti

//setNumeroPosti
}

Poi pensiamo a realizzare i metodi, uno alla volta.





Bocchi Cinzia
20/10/09
2

Costruttore
Il costruttore deve inizializzare tutte la variabili di istanza, quindi sono necessari 3
parametri formali: il primo conterrà il codice, il secondo il nome e il terzo il numero di posti
della sala. Possiamo scegliere un nome qualunque per i parametri, per esempio

public SalaCinema(int c, String nom, int np)

Io vi suggerisco di utilizzare nomi identici alle variabili di istanza della classe.

public SalaCinema(int codice, String nome, int numeroPosti)

Il costruttore deve assegnare alle variabili di istanza il valore contenuto nei parametri.

public SalaCinema(int codice, String nome, int numeroPosti)
{
this.codice = codice;
this.nome = nome;
this.numeroPosti = numeroPosti;
}


Costruttore di default
Assegna alle variabili di istanza valori di default. Di conseguenza, non necessita di
parametri.

public SalaCinema()
{
this.codice = 0;
this.nome = null;
this.numeroPosti = 0;
}

Metodo getNumeroPosti
Restituisce al chiamante il valore della variabile di istanza numeroPosti.

public int getNumeroPosti()
{
return numeroPosti;
}


Metodo setNumeroPosti
Modifica il valore della variabile di istanza numeroPosti. Necessita di un parametro che
contenga il nuovo valore e non restituisce alcunchè.

public void setNumeroPosti(int numeroPosti)
{
this.numeroPosti = numeroPosti;
}


Bocchi Cinzia
20/10/09
3
Il codice completo della classe SalaCinema è il seguente

SalaCinema.java

public class SalaCinema
{
//variabili di istanza
private int codice;
private String nome;
private int numeroPosti;

//costruttore
public SalaCinema(int codice, String nome, int numeroPosti)
{
this.codice = codice;
this.nome = nome;
this.numeroPosti = numeroPosti;
}

//costruttore di default
public SalaCinema()
{
this.codice = 0;
this.nome = null;
this.numeroPosti = 0;
}

//getNumeroPosti
public int getNumeroPosti()
{
return numeroPosti;
}

//setNumeroPosti
public void setNumeroPosti(int numeroPosti)
{
this.numeroPosti = numeroPosti;
}
}



Soluzione: main
Il programma deve calcolare il ricavo ottenibile con la sala completa, noto il prezzo del
biglietto. Per esempio, supponiamo che la sala contenga 150 posti e che il prezzo del
biglietto sia 2 euro. Per determinate il possibile ricavo basta calcolare:

numeroPosti x prezzoBiglietto = 150 x 2 = 300 euro

Vediamo, passo passo, che cosa deve fare il main:






Bocchi Cinzia
20/10/09
4
1. Creare una istanza della classe SalaCinema, utilizzando il primo costruttore.

SalaCinema sala = new SalaCinema(....);

Per creare la sala è necessario conoscere il suo codice, il suo nome e anche il numero
di posti. Chiediamo all’utente di inserire in input questi dati, prima di creare l’oggetto
sala. Pertanto occorre scrivere:

int codice = Integer.parseInt(JOptionPane.showInputDialog("Immettere codice¨));
String nome = JOptionPane.showInputDialog("Immettere nome¨);
int numeroPosti = Integer.parseInt(JOptionPane.showInputDialog("Immettere numero
posti¨));
SalaCinema sala = new SalaCinema(codice,nome,numeroPosti);

I parametri passati al costruttore sono attuali poiché rappresentano i valori effettivi con
cui istanziare le variabili di istanza dell’oggetto.

2. Richiedere in input all’utente il prezzo del biglietto.

double prezzo = Double.parseDouble(JOptionPane.showInputDialog("Immettere prezzo
biglietto¨));

3. Ottenere dall’oggetto creato (istanza di salaCinema) il numero di posti.

int numPosti = sala.getNumeroPosti();

4. Moltiplicare il numero di posti per il prezzo.

double ricavo = numPosti*prezzo;

5. Produrre in output il ricavo.

JOptionPane.showMessageDialog(null,"Ricavo = "+ricavo+¨ euro¨);

Le istruzioni del passo 4 e 5 possono essere raggruppate in un’unica istruzione, come la
seguente:

JOptionPane.showMessageDialog(null,"Ricavo = "+numPosti*prezzo +¨ euro¨);

la variabile ricavo diventa in tal caso superflua.

Il codice completo di UsaSalaCinema:



Bocchi Cinzia
20/10/09
5
UsaSalaCinema.java

import javax.swing.*;
public class UsaSalaCinema
{
public static void main(String[] args)
{
int codice = Integer.parseInt(JOptionPane.showInputDialog("Immettere
codice"));
String nome = JOptionPane.showInputDialog("Immettere nome");
int numeroPosti = Integer.parseInt(JOptionPane.showInputDialog("Immettere
numero posti"));
SalaCinema sala = new SalaCinema(codice,nome,numeroPosti);
double prezzo = Double.parseDouble(JOptionPane.showInputDialog("Immettere
prezzo biglietto"));
int numPosti = sala.getNumeroPosti();
double ricavo = numPosti*prezzo;
JOptionPane.showMessageDialog(null,"Ricavo = "+ricavo+" euro");
}
}