#include "EstacionSoldadura.hpp" // Constructor: Inicializa la estación con valores seguros por defecto EstacionSoldadura::EstacionSoldadura(std::string id, double limiteTemp) : idEstacion(id), limiteTempMax(limiteTemp) { this->temperaturaActual = 25.0; // Temp. ambiente por defecto this->loteActual = 0; this->enOperacion = false; } // Getters std::string EstacionSoldadura::getIdEstacion() const { return this->idEstacion; } double EstacionSoldadura::getTemperaturaActual() const { return this->temperaturaActual; } int EstacionSoldadura::getLoteActual() const { return this->loteActual; } bool EstacionSoldadura::isEnOperacion() const { return this->enOperacion; } // Setter con lógica de seguridad void EstacionSoldadura::setLoteActual(int nuevoLote) { if (nuevoLote > 0) { this->loteActual = nuevoLote; } else { std::cout << "[ERROR] El número de lote debe ser mayor a 0." << std::endl; } } // Métodos de control operativo void EstacionSoldadura::iniciarOperacion() { if (this->loteActual == 0) { std::cout << "[ALERTA] No se puede iniciar soldadura sin un lote asignado." << std::endl; return; } this->enOperacion = true; std::cout << "[PROCESO] Estación " << this->idEstacion << " operando en Lote #" << this->loteActual << std::endl; } void EstacionSoldadura::detenerOperacion() { this->enOperacion = false; std::cout << "[PROCESO] Estación " << this->idEstacion << " detenida." << std::endl; } void EstacionSoldadura::actualizarTemperatura(double nuevaTemp) { this->temperaturaActual = nuevaTemp; // Parada automática de emergencia si sobrepasa el límite if (this->temperaturaActual > this->limiteTempMax) { std::cout << "[EMERGENCIA] Temp. crítica (" << this->temperaturaActual << "°C) en " << this->idEstacion << ". Deteniendo celda!" << std::endl; this->detenerOperacion(); } } void EstacionSoldadura::reportarEstado() const { std::cout << "\n--- ESTADO DE LA ESTACION DE SOLDADURA ---" << std::endl; std::cout << "ID Estación: " << this->idEstacion << std::endl; std::cout << "Lote en Carga: #" << this->loteActual << std::endl; std::cout << "Temperatura: " << this->temperaturaActual << " °C / Máx: " << this->limiteTempMax << " °C" << std::endl; std::cout << "Estado: " << (this->enOperacion ? "EN OPERACION" : "DETENIDA") << std::endl; std::cout << "------------------------------------------" << std::endl; }