📢 Nuovo Corso Laravel API disponibile!

Esercizi sui Costruttori in Java

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() + ")");
}
}