Gli oggetti in Java | Aulab

GUIDE PER ASPIRANTI PROGRAMMATORI

Gli oggetti in Java

Arriviamo ora ad una delle parti più ostiche per i neofiti: nella programmazione informatica, e più specificatamente in un linguaggio orientato agli oggetti come Java, un oggetto è un’entità che rappresenta un’istanza di una classe. In termini più concreti, puoi pensare a una classe come a un “blueprint” o un progetto, e ad un oggetto…

Lezione 23 / 47
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

Arriviamo ora ad una delle parti più ostiche per i neofiti: nella programmazione informatica, e più specificatamente in un linguaggio orientato agli oggetti come Java, un oggetto è un’entità che rappresenta un’istanza di una classe. In termini più concreti, puoi pensare a una classe come a un “blueprint” o un progetto, e ad un oggetto come a una costruzione reale basata su quel progetto.

Capire gli oggetti in Java

Ecco alcuni punti chiave per comprendere meglio il concetto di oggetto in Java:

  • Analogia: Un modo per pensare agli oggetti è di immaginarli come oggetti nel mondo reale. Per esempio, se consideri la classe “Auto” come un progetto generico per un’automobile, allora un oggetto sarebbe una specifica automobile (come una Ferrari rossa del 2022) che è stata costruita seguendo le specifiche di quel progetto.
  • Stato: Gli oggetti hanno uno “stato”, che è rappresentato da attributi o variabili di istanza. Nell’esempio dell’auto, lo stato potrebbe includere cose come il modello, il colore, il numero di chilometri percorsi, ecc.
  • Comportamento: Gli oggetti hanno anche “comportamento”, che è rappresentato dai metodi della classe. I comportamenti sono le azioni che un oggetto può eseguire o che possono essere eseguite su di esso. Per l’auto, comportamenti potrebbero essere ‘accelerare’, ‘frenare’, ‘girare’, ecc.
  • Identità: Ogni oggetto ha un’identità unica, che in un ambiente di programmazione come Java viene gestita attraverso il riferimento all’oggetto. Anche se due oggetti hanno lo stesso stato, essi sono distinti e l’operazione su uno non influenzerà l’altro.
  • Incapsulamento Gli oggetti incapsulano (o nascondono) i dettagli di implementazione e espongono solo ciò che è necessario all’esterno. Questo significa che possono avere dati privati che possono essere letti o modificati solo attraverso metodi pubblici (getter e setter).

Supponiamo di avere una classe “Auto“:

public class Auto {
    private String modello;
    private String colore;
    private int anno;

    public Auto(String modello, String colore, int anno) {
        this.modello = modello;
        this.colore = colore;
        this.anno = anno;
    }

    public void accelera() {
        System.out.println(modello + " sta accelerando!");
    }
}

Per creare un oggetto “Auto” in Java, useresti:

Auto miaFerrari = new Auto("Ferrari", "Rosso", 2022);

‘miaFerrari’ è un oggetto che ha uno stato (modello, colore, anno) e comportamenti (come accelera). È un’istanza concreta della classe “Auto” che risiede in memoria, e puoi interagire con essa usando i suoi metodi.

Ma proviamo ora con la pratica a sviluppare un esercizio su queste tematiche.

“In una biblioteca, abbiamo diversi libri disponibili per il prestito e membri che desiderano prenderli in prestito. Ogni libro e ogni membro possono essere rappresentati come oggetti con i loro attributi e metodi specifici. Ad esempio, un libro può avere attributi come il titolo, l’autore e uno stato che indica se è attualmente in prestito o meno. Similmente, un membro della biblioteca può avere un nome e la capacità di prendere in prestito o restituire libri.”

La classe Libro rappresenta un libro nella biblioteca

public class Libro {
    private String titolo;
    private String autore;
    private boolean inPrestito;

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

    public String getTitolo() {
        return titolo;
    }

    public String getAutore() {
        return autore;
    }

    public boolean isInPrestito() {
        return inPrestito;
    }

    public void presta() {
        if (!inPrestito) {
            inPrestito = true;
            System.out.println(titolo + " è stato prestato.");
        } else {
            System.out.println(titolo + " è già in prestito.");
        }
    }

    public void restituisci() {
        if (inPrestito) {
            inPrestito = false;
            System.out.println(titolo + " è stato restituito.");
        } else {
            System.out.println(titolo + " non è in prestito.");
        }
    }
}

La classe Membro rappresenta un membro della biblioteca

public class Membro {
    private String nome;

    public Membro(String nome) {
        this.nome = nome;
    }

    public void prestaLibro(Libro libro) {
        libro.presta();
    }

    public void restituisciLibro(Libro libro) {
        libro.restituisci();
    }
}

Ora, usiamo queste classi per creare oggetti e gestire i prestiti dei libri.

public class BibliotecaDemo {
    public static void main(String[] args) {
        // Creazione di oggetti Libro
        Libro libro1 = new Libro("Il Signore degli Anelli", "J.R.R. Tolkien");
        Libro libro2 = new Libro("1984", "George Orwell");

        // Creazione di un oggetto Membro
        Membro membro1 = new Membro("Mario Rossi");

        // Mario Rossi prende in prestito "Il Signore degli Anelli"
        membro1.prestaLibro(libro1);

        // Verifichiamo se "Il Signore degli Anelli" è in prestito
        System.out.println("Il Signore degli Anelli è in prestito? " + libro1.isInPrestito());

        // Mario Rossi tenta di prendere in prestito "1984"
        membro1.prestaLibro(libro2);

        // Mario Rossi restituisce "Il Signore degli Anelli"
        membro1.restituisciLibro(libro1);

        // Verifichiamo nuovamente lo stato del prestito di "Il Signore degli Anelli"
        System.out.println("Il Signore degli Anelli è in prestito? " + libro1.isInPrestito());
    }
}

Questo esercizio mostra come gli oggetti possono essere utilizzati per rappresentare elementi come libri e membri in una biblioteca e per gestire le operazioni tra di loro, come prendere in prestito e restituire libri. Gli oggetti forniscono un modo intuitivo e flessibile per modellare concetti del mondo reale in un programma software.

L’output conferma il comportamento atteso:

  1. Il membro “Mario Rossi” ha preso in prestito il libro “Il Signore degli Anelli”, e il sistema ha confermato che il libro è stato prestato.
  2. È stato verificato che “Il Signore degli Anelli” è effettivamente in prestito.
  3. “Mario Rossi” ha, poi, preso in prestito il libro “1984”, e il sistema ha registrato anche questo prestito.
  4. Successivamente, “Mario Rossi” ha restituito “Il Signore degli Anelli”, e il sistema ha confermato che il libro è stato restituito.
  5. Alla verifica finale, “Il Signore degli Anelli” non è più in prestito.

Sei indeciso sul percorso? 💭

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626