Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

Programmazione Object-Oriented (0-0)

✍️ Dennis Turco 🏷️ Informatica 📘 Java
Ultima modifica:
#java#programmazione#oop

1. Introduzione

La programmazione orientata agli oggetti (Object-Oriented Programming, OOP) è un paradigma che organizza il software attorno a oggetti.

Un programma non viene più visto come una sequenza di istruzioni, ma come un insieme di entità che collaborano tra loro.

Un oggetto può rappresentare:

  • oggetti reali → automobile, studente, telefono;
  • concetti astratti → conto bancario, esame, prenotazione.

Classe e Oggetto

  • Classe → modello o progetto.
  • Oggetto → istanza concreta della classe.

Analogia:

ConcettoEsempio
ClasseProgetto di una casa
OggettoCasa costruita

Un oggetto possiede:

  • Stato → attributi (dati)
  • Comportamento → metodi (azioni)

2. Perché usare l’OOP?

L’OOP permette di:

  • organizzare programmi complessi;
  • riutilizzare codice;
  • rendere il software più manutenibile;
  • modellare il mondo reale.

Rispetto alla programmazione procedurale:

Procedurale

  • il focus è sulle funzioni
  • i dati sono separati dal comportamento

Object-Oriented

  • il focus è sugli oggetti
  • dati e comportamenti sono uniti

3. Creazione di una Classe

In Java una classe si definisce con la keyword class.

class Persona {
}

Questa classe è vuota ma può già creare oggetti.

4. Creare un Oggetto (Istanza)

Persona p1 = new Persona();

new crea un oggetto in memoria.

5. Attributi (Stato)

Gli attributi rappresentano le informazioni dell’oggetto.

class Persona {
    String nome;
    int eta;
}

Uso:

Persona p = new Persona();

p.nome = "Anna";
p.eta = 25;

6. Metodi (Comportamento)

I metodi descrivono cosa può fare un oggetto.

class Persona {

    String nome;
    int eta;

    void saluta(){
        System.out.println("Ciao, sono " + nome);
    }
}

Uso:

Persona p = new Persona();
p.nome = "Marco";

p.saluta();

7. Il Costruttore

Il costruttore inizializza l’oggetto quando viene creato.

Ha:

  • stesso nome della classe
  • nessun tipo di ritorno
class Persona {

    String nome;
    int eta;

    Persona(String nome, int eta){
        this.nome = nome;
        this.eta = eta;
    }
}

Creazione:

Persona p = new Persona("Anna", 25);

this rappresenta l’oggetto corrente. Serve per distinguere attributi e parametri.

8. Incapsulamento

L’incapsulamento protegge i dati interni dell’oggetto.

Gli attributi dovrebbero essere privati.

class ContoBancario {

    private double saldo;

    void deposita(double importo){
        saldo += importo;
    }
}

Accesso controllato tramite metodi.

8.1 Getter e Setter

class Studente {

    private String nome;

    public String getNome(){
        return nome;
    }

    public void setNome(String nome){
        this.nome = nome;
    }
}

9. Attributi di Istanza e Statici

9.1 Attributi di istanza

Ogni oggetto ha il proprio valore.

9.2 Attributi statici

Condivisi tra tutti gli oggetti.

class Studente {

    String nome;
    static String scuola = "ITI Fermi";
}

Uso:

System.out.println(Studente.scuola);

10. Comunicazione tra Oggetti

Gli oggetti collaborano invocando metodi.

Studente s = new Studente();
Registro r = new Registro();

r.aggiungiStudente(s);

Gli oggetti si scambiano messaggi (chiamate di metodo).

11. Relazioni tra Classi

11.1 Associazione

Un oggetto usa un altro oggetto.

11.2 Aggregazione / Composizione

Un oggetto contiene altri oggetti.

Esempio:

class Auto {
    Motore motore;
}

12. Esempio Completo

class Rettangolo {

    private int base;
    private int altezza;

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

    int area(){
        return base * altezza;
    }

    int perimetro(){
        return 2*base + 2*altezza;
    }
}

public class Main {

    public static void main(String[] args){

        Rettangolo r = new Rettangolo(5,7);

        System.out.println(r.area());
        System.out.println(r.perimetro());
    }
}

13. Quiz a risposta multipla

Cos'è una classe in Java?

Cos'è un oggetto?

A cosa serve il costruttore?

Quale keyword crea un oggetto?

Cosa indica 'private'?

Quale keyword indica ereditarietà?

Cosa rappresenta 'this'?

Un attributo static è:

14. Esercizi

Esercizi geeksforgeeks

14.1 Classe Persona

Creare una classe Persona con:

  • nome
  • età
  • metodo saluta()

14.2 Classe Rettangolo

Creare una classe Rettangolo con:

  • base e altezza private
  • costruttore
  • metodo area
  • metodo perimetro

14.3 Conto Bancario

Creare una classe ContoBancario con:

  • saldo privato
  • deposita()
  • preleva()
  • mostraSaldo()

14.4 Studente (static)

Creare una classe Studente con:

  • nome
  • voto
  • attributo static scuola

Stampare la scuola da più oggetti.

14.5 Sfida

Creare una classe Auto che contiene un oggetto Motore.

Simulare l’accensione dell’auto tramite chiamata di metodo.

Prenota una lezione