Linguaggio C++

Classe Condizionatore

Laboratorio pratico di modellazione OOP focalizzato sulla gestione di un sistema di domotica aziendale, con la creazione della classe Condizionatore per il controllo energetico e operativo.

Durata

150 minuti

Software

Dev-C++ o Code::Blocks

Modellazione e Stato di un Oggetto: Il "Condizionatore"

In questo modulo, esploreremo come modellare oggetti che non hanno solo dati statici (come un libro), ma che possiedono uno stato operativo. Un condizionatore può essere acceso o spento, e questa condizione determina se le altre funzioni (come cambiare temperatura) siano eseguibili o meno.

L'astrazione in ambito Smart Home ci permette di gestire dispositivi complessi attraverso interfacce semplificate. Non ci interessa come il gas refrigerante circoli nei tubi, ma ci interessa sapere se il dispositivo è attivo e a che temperatura è impostato.

Attributo Tipo di Dato Descrizione dello Stato
marca string Identifica il produttore del dispositivo.
acceso bool Stato logico: true (acceso), false (spento).
tempCorrente int Il valore numerico della temperatura impostata.

I metodi che andremo a definire agiranno come un telecomando digitale, modificando lo stato dell'oggetto in modo controllato.


LABORATORIO

Sviluppo Classe Condizionatore (IoT Simulation)

Obiettivo: Realizzare una classe capace di gestire l'accensione e la regolazione termica di un ufficio, implementando controlli di sicurezza.


1 Esercitazione Guidata: Definizione e Logica di Stato

Seguire il codice per implementare la classe. Notare come il metodo impostaTemperatura verifichi prima se il condizionatore è acceso.

Passo 1: Definizione della classe Condizionatore.


#include <iostream>
#include <string>

using namespace std;

class Condizionatore {
public:
    string marca;
    bool acceso;
    int tempCorrente;

    // Metodo per accendere/spegnere
    void power() {
        acceso = !acceso; // Inverte lo stato attuale
        if(acceso) {
            cout << marca << ": Dispositivo ACCESO. Temp: " << tempCorrente << "C" << endl;
        } else {
            cout << marca << ": Dispositivo SPENTO." << endl;
        }
    }

    // Metodo per impostare la temperatura con controllo
    void impostaTemperatura(int nuovaTemp) {
        if (acceso) {
            if (nuovaTemp >= 16 && nuovaTemp <= 30) {
                tempCorrente = nuovaTemp;
                cout << "Temperatura impostata a " << tempCorrente << " gradi." << endl;
            } else {
                cout << "Errore: Temperatura fuori range (16-30)!" << endl;
            }
        } else {
            cout << "Impossibile cambiare temperatura: il dispositivo è spento." << endl;
        }
    }
};

Passo 2: Test del sistema di domotica nel main.


int main() {
    Condizionatore ufficio;
    ufficio.marca = "Samsung EcoCool";
    ufficio.acceso = false;    // Inizialmente spento
    ufficio.tempCorrente = 22; // Temperatura di default

    // Tentativo di modifica da spento
    ufficio.impostaTemperatura(20);

    // Accensione e regolazione
    ufficio.power();
    ufficio.impostaTemperatura(18);
    
    // Spegnimento
    ufficio.power();

    return 0;
}

2 Esercizio: Monitoraggio Energetico Uffici

Contesto: L'azienda vuole monitorare quanti condizionatori sono rimasti accesi a fine giornata per risparmiare energia.

Consegna:

  • Modifica la classe aggiungendo l'attributo stanza (string) per identificare dove si trova il dispositivo.
  • Crea nel main 3 oggetti: c1 (Laboratorio), c2 (Segreteria), c3 (Presidenza).
  • Imposta lo stato degli oggetti in modo che alcuni siano accesi e altri spenti.
  • Scrivi una funzione o una logica nel main che analizzi i 3 oggetti e stampi un AVVISO solo per le stanze in cui il condizionatore è rimasto acceso.
  • Calcola e visualizza la temperatura media impostata solo tra i dispositivi attualmente accesi.







OOP, Classi, Oggetti, Modellazione, C++, Domotica,