🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi sui Costruttori in Java

Codegrind Team•Jul 12 2024

Ecco degli esercizi con soluzione per praticare l’uso dei costruttori in Java.

Esercizio 1: Costruttore di Default

Creare una classe con un costruttore di default e istanziare un oggetto della classe.
public class Persona {
    private String nome;

    public Persona() {
        nome = "Sconosciuto";
    }

    public String getNome() {
        return nome;
    }

    public static void main(String[] args) {
        Persona persona = new Persona();
        System.out.println("Nome: " + persona.getNome());
    }
}

Esercizio 2: Costruttore con Parametri

Creare una classe con un costruttore che accetta parametri e istanziare un oggetto della classe.
public class Libro {
    private String titolo;
    private String autore;

    public Libro(String titolo, String autore) {
        this.titolo = titolo;
        this.autore = autore;
    }

    public String getTitolo() {
        return titolo;
    }

    public String getAutore() {
        return autore;
    }

    public static void main(String[] args) {
        Libro libro = new Libro("Il Signore degli Anelli", "J.R.R. Tolkien");
        System.out.println("Titolo: " + libro.getTitolo());
        System.out.println("Autore: " + libro.getAutore());
    }
}

Esercizio 3: Costruttore Sovraccarico

Creare una classe con costruttori sovraccaricati e istanziare oggetti della classe utilizzando diversi costruttori.
public class Rettangolo {
    private int larghezza;
    private int altezza;

    public Rettangolo() {
        this.larghezza = 1;
        this.altezza = 1;
    }

    public Rettangolo(int larghezza, int altezza) {
        this.larghezza = larghezza;
        this.altezza = altezza;
    }

    public int getArea() {
        return larghezza * altezza;
    }

    public static void main(String[] args) {
        Rettangolo r1 = new Rettangolo();
        Rettangolo r2 = new Rettangolo(5, 10);

        System.out.println("Area r1: " + r1.getArea());
        System.out.println("Area r2: " + r2.getArea());
    }
}

Esercizio 4: Costruttore Copia

Creare una classe con un costruttore copia e istanziare un oggetto della classe utilizzando il costruttore copia.
public class Punto {
    private int x;
    private int y;

    public Punto(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Punto(Punto punto) {
        this.x = punto.x;
        this.y = punto.y;
    }

    public String toString() {
        return "Punto(" + x + ", " + y + ")";
    }

    public static void main(String[] args) {
        Punto p1 = new Punto(3, 4);
        Punto p2 = new Punto(p1);

        System.out.println("p1: " + p1);
        System.out.println("p2: " + p2);
    }
}

Esercizio 5: Costruttore Statico

Utilizzare un blocco di inizializzazione statico per eseguire un'azione all'avvio della classe.
public class Database {
    private static String url;

    static {
        url = "jdbc:mysql://localhost:3306/miodatabase";
        System.out.println("Blocco statico eseguito. URL: " + url);
    }

    public static void main(String[] args) {
        // Blocco statico giĂ  eseguito
    }
}

Esercizio 6: Chiamata di un Costruttore da un Altro

Creare una classe in cui un costruttore chiama un altro costruttore della stessa classe.
public class Cerchio {
    private double raggio;

    public Cerchio() {
        this(1.0);  // Chiamata al costruttore con parametri
    }

    public Cerchio(double raggio) {
        this.raggio = raggio;
    }

    public double getArea() {
        return Math.PI * raggio * raggio;
    }

    public static void main(String[] args) {
        Cerchio c1 = new Cerchio();
        Cerchio c2 = new Cerchio(5.0);

        System.out.println("Area c1: " + c1.getArea());
        System.out.println("Area c2: " + c2.getArea());
    }
}

Esercizio 7: Costruttore Privato

Creare una classe con un costruttore privato e utilizzare un metodo statico per istanziare oggetti della classe.
public class Singleton {
    private static Singleton istanza;

    private Singleton() {
        // Costruttore privato
    }

    public static Singleton getIstanza() {
        if (istanza == null) {
            istanza = new Singleton();
        }
        return istanza;
    }

    public void stampaMessaggio() {
        System.out.println("Ciao dal Singleton!");
    }

    public static void main(String[] args) {
        Singleton s = Singleton.getIstanza();
        s.stampaMessaggio();
    }
}

Esercizio 8: Inizializzazione degli Attributi

Utilizzare un costruttore per inizializzare gli attributi di una classe e stamparne i valori.
public class Studente {
    private String nome;
    private int matricola;

    public Studente(String nome, int matricola) {
        this.nome = nome;
        this.matricola = matricola;
    }

    public String getNome() {
        return nome;
    }

    public int getMatricola() {
        return matricola;
    }

    public static void main(String[] args) {
        Studente studente = new Studente("Alice", 12345);
        System.out.println("Nome: " + studente.getNome());
        System.out.println("Matricola: " + studente.getMatricola());
    }
}

Esercizio 9: Costruttore con Eccezioni

Creare una classe con un costruttore che lancia un'eccezione se viene passato un valore non valido.
public class ContoBancario {
    private double saldo;

    public ContoBancario(double saldoIniziale) throws IllegalArgumentException {
        if (saldoIniziale < 0) {
            throw new IllegalArgumentException("Il saldo iniziale non può essere negativo.");
        }
        this.saldo = saldoIniziale;
    }

    public double getSaldo() {
        return saldo;
    }

    public static void main(String[] args) {
        try {
            ContoBancario conto = new ContoBancario(-100);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
    }
}

Esercizio 10: Costruttore con Classe Immutabile

Creare una classe immutabile con un costruttore che inizializza tutti gli attributi.
public final class PuntoImmutabile {
    private final int x;
    private final int y;

    public PuntoImmutabile(int

 x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public static void main(String[] args) {
        PuntoImmutabile punto = new PuntoImmutabile(3, 4);
        System.out.println("Punto: (" + punto.getX() + ", " + punto.getY() + ")");
    }
}