Esercizi in Java - Parte 1

Mettiamo alla prova la nostra conoscenza di java con tre semplici esercizi.

Stampa di un Array

Scrivi un programma che stampa un array di numeri. Trovi la mia soluzione qui sotto.

Soluzione

Ho voluto mettere questo esercizio per farti notare che l'utilizzo degli array in Java è pressoché identico a C e C++, in Java le parentesi quadre si mettono tra il tipo e il nome; Ci viene fornito inoltre l'attributo length che ritorna la lunghezza dell'array.


class Main {

    public static void main(String[] args) {

        int[] arr = {5, 10, 15, 20 , 25};
        String res = "";

        for(int i = 0; i < arr.length(); i++) {
            res += arr[i] + " ";
        }

        System.out.println(res);
    }
}

Implementazione di una classe UML

Dato la seguente classe UML prova a trasformarla in una classe Java, confrontala poi con la mia soluzione.

Auto UML

Soluzione

In questo UML abbiamo una classe Auto con tutti attributi privati, di cui uno statico. Ognuno di questi ha un getter, inVendita ha anche un setter. Nel costruttore non viene passato un boolean per inVendita, quindi lo mettiamo a false di default. totaleAuto è statico lo inizializziamo a 0 e lo incrementiamo di 1 ogni volta che istanziamo una nuova Auto.


public class Auto {

    private String marca;
    private String modello;
    private int anno;
    private double cilindrata;
    private double potenza;
    private boolean inVendita;

    private static int totaleAuto = 0;

    public Auto(String marca, String modello, int anno, double cilindrata, double potenza) {
        
        this.marca = marca;
        this.modello = modello;
        this.anno = anno;
        this.cilindrata = cilindrata;
        this.potenza = potenza;

        this.inVendita = false;

        totaleAuto++;
    }

    public String getMarca() {
        return marca;
    }

    public String getModello() {
        return modello;
    }

    public int getAnno() {
        return anno;
    }

    public double getCilindrata() {
        return cilindrata;
    }

    public double getPotenza() {
        return potenza;
    }

    public boolean isInVendita() {
        return inVendita;
    }

    public void setInVendita(boolean inVendita) {
        this.inVendita = inVendita;
    }

    public static int getTotaleAuto() {
        return totaleAuto;
    }
}

Implementazione di un diagramma UML

Dato il seguente diagramma UML prova a implementarlo in Java. Quando hai fatto puoi dare un'occhiata alla mia soluzione.

Classi UML

Soluzione

In questo esercizio abbiamo diviso la classe dell'esercizio precedente in due parti: Auto e Motore. Abbiamo anche tolto l'attributo statico totaleAuto.

Avrai notato che scrivere costruttore, getters e setters oltre ad essere noioso richiede del tempo, fortunatamente tutti gli IDE moderni ti permettono di generali in automatico!

public class Motore {

    private String nome;
    private String cilindrata;
    private String potenza;
    
    public Motore(String nome, String cilindrata, String potenza) {
        
        this.nome = nome;
        this.cilindrata = cilindrata;
        this.potenza = potenza;
    }

    public String getNome() {
        return nome;
    }

    public String getCilindrata() {
        return cilindrata;
    }

    public String getPotenza() {
        return potenza;
    }
}
public class Auto {

    private String marca;
    private String modello;
    private int anno;
    private Motore motore;
    private boolean inVendita;

    public Auto(String marca, String modello, int anno, Motore motore) {
        
        this.marca = marca;
        this.modello = modello;
        this.anno = anno;
        this.motore = motore;

        this.inVendita = false;
    }

    public String getMarca() {
        return marca;
    }

    public String getModello() {
        return modello;
    }

    public int getAnno() {
        return anno;
    }

    public Motore getMotore() {
        return motore;
    }

    public boolean isInVendita() {
        return inVendita;
    }

    public void setInVendita(boolean inVendita) {
        this.inVendita = inVendita;
    }
}
© Nicola Bovolato 2020