JAVA

Progetti Multi File

Programmazione modulare in Java: interazione tra classi e gestione di progetti multi-file da riga di comando (laboratorio di esempio: il termostato).

LABORATORIO AVANZATO

Gestione di più file nella stessa cartella

In questa attività pratica vedremo come Java permetta di far cooperare più classi distribuite su file diversi e come compilarle in un unico blocco dal terminale.

1 Scenario: La simulazione del Termostato

Nei progetti reali, il codice non viene mai scritto in un unico file gigante. Creeremo una classe chiamata Termostato che definisce l'oggetto e le sue proprietà, e una classe separata chiamata ConfiguraAmbiente che conterrà il metodo main per avviare la simulazione.

Struttura dei file nella cartella di progetto:
JavaMultiFile/ (Cartella principale sul Desktop)
├── Termostato.java (Classe di supporto)
└── ConfiguraAmbiente.java (Classe driver principale)

2 Scrittura del primo file: Termostato.java (Senza Main)

Questo file serve solo a definire come funziona il nostro termostato. Noterai che non contiene il metodo main, quindi non può essere eseguito da solo.

// File: Termostato.java
public class Termostato {
    // Proprietà della classe (variabili)
    int temperaturaCorrente = 24;
    int temperaturaTarget = 20;
}

3 Scrittura del secondo file: ConfiguraAmbiente.java (Con il Main)

Questo è il nostro file principale. Contiene la "chiave di accensione" main ed è incaricato di richiamare e utilizzare la classe Termostato definita nel file precedente.

// File: ConfiguraAmbiente.java
public class ConfiguraAmbiente {
    public static void main(String[] args) {
        // Creiamo una copia (istanza) del Termostato definito nell'altro file
        Termostato mioTermostato = new Termostato();
        
        System.out.println("--- MONITORAGGIO CLIMATIZZAZIONE ---");
        System.out.println("Temperatura rilevata in stanza: " + mioTermostato.temperaturaCorrente + " gradi.");
        System.out.println("Temperatura impostata (Target): " + mioTermostato.temperaturaTarget + " gradi.");
        
        // Calcolo dello scarto termico
        int scarto = mioTermostato.temperaturaCorrente - mioTermostato.temperaturaTarget;
        System.out.println("Scarto termico rilevato: " + scarto + " gradi.");
    }
}



4 Compilazione cumulativa da Terminale

Dal terminale, posizionati all'interno della cartella dove hai salvato entrambi i file. Per compilarli tutti in un colpo solo, puoi sfruttare il carattere speciale asterisco (*), che indica a Java di prendere tutti i file con estensione .java:

javac *.java
Struttura della cartella dopo la compilazione:
JavaMultiFile/ (Contenuto completo aggiornato)
├── ConfiguraAmbiente.java
├── ConfiguraAmbiente.class (Bytecode generato)
├── Termostato.java
└── Termostato.class (Bytecode generato)

5 Esecuzione del progetto

Per avviare l'applicazione dobbiamo lanciare **unicamente** la classe che possiede l'interruttore di partenza (il metodo main), ovvero ConfiguraAmbiente:

java ConfiguraAmbiente

Quiz di Verifica: Architetture Multi-File

1. In un progetto Java composto da 5 classi differenti, quante di queste devono contenere il metodo main per poter avviare l'applicazione?


2. Quale comando si usa nel terminale per compilarne in un colpo solo tutti i file .java presenti nella cartella?


3. Cosa succede se provi a lanciare il comando "java NomeClasse" su una classe di supporto che non ha il metodo main?


4. In che modo la classe principale "ConfiguraAmbiente" riesce a utilizzare le proprietà definite nel file "Termostato.java"?


5. Qual è il requisito fondamentale affinché due o più classi separate cooperino senza bisogno di istruzioni di importazione avanzate?