Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- namespace Articulos.Cap04
- {
- ///<summary>
- /// Representa la entidad caldera. Mide la temperatura y la presión.
- ///</summary>
- class Caldera
- {
- private int temperatura;
- private int presion;
- // Obtiene la temperatura actual de la caldera:
- public int Temperatura
- {
- get
- {
- return temperatura;
- }
- }
- // Obtiene la presión actual de la caldera:
- public int Presion
- {
- get
- {
- return presion;
- }
- }
- // Crea una instancia de `Caldera` con la temperatura
- // y la presión actuales.
- public Caldera (int temp, int presion)
- {
- temperatura = temp;
- this.presion = presion;
- }
- }
- ///<summary>
- /// Clase controladora del estado de la calderea.
- ///</summary>
- class ControladorCaldera
- {
- public delegate void RegistroCalderaEventHandler(string estado);
- public event RegistroCalderaEventHandler RegistroCaldera;
- // Se encarga de llevar el control de la caldera.
- // Avisa cuando se debe realizar un mantenimiento:
- public void ProcesoRegistro()
- {
- string comentario = "O.K.";
- Caldera c = new Caldera(100, 12);
- int t = c.Temperatura;
- int p = c.Presion;
- if (t> 150 || t > 80 || p < 12 || p > 15)
- {
- comentario = "Se requiere mantenimiento";
- }
- OnEventoRegistro("Información de Registro:\n");
- OnEventoRegistro("\tTemperatura: " + t.ToString() + "\n\tPresión: " + p.ToString() );
- OnEventoRegistro("\n\tMensaje: " + comentario);
- }
- // Invoca indirectamente a los listeners interesados
- // en los mensajes de mantenimiento de la caldera:
- protected void OnEventoRegistro(string message)
- {
- if (RegistroCaldera != null)
- {
- RegistroCaldera(message);
- }
- }
- }
- ///<summary>
- /// Control de registro del estado de la caldera a archivo de texto plano.
- ///</summary>
- class RegistroArchivo
- {
- FileStream fs;
- StreamWriter sw;
- public RegistroArchivo(string nombreArchivo)
- {
- fs = new FileStream(nombreArchivo, FileMode.Append, FileAccess.Write);
- sw = new StreamWriter(fs);
- }
- public void Registrar(string info)
- {
- sw.WriteLine(info);
- }
- public void CerrarArchivo()
- {
- sw.Close();
- fs.Close();
- }
- }
- public class Aplicacion
- {
- static void Registrar(string info)
- {
- Console.WriteLine(info);
- }
- public static void Main()
- {
- // Creación de instancia de registro en archivo de texto:
- RegistroArchivo registroArchivo = new RegistroArchivo("registrocaldera.txt");
- ControladorCaldera eventoControladorCaldera = new ControladorCaldera();
- // Agrega event handler para mensajería sobre la salida estándar:
- eventoControladorCaldera.RegistroCaldera += new ControladorCaldera.RegistroCalderaEventHandler(Registrar);
- // Agrega event handler para mensajería sobre archivo de texto plano:
- eventoControladorCaldera.RegistroCaldera += new ControladorCaldera.RegistroCalderaEventHandler(registroArchivo.Registrar);
- eventoControladorCaldera.ProcesoRegistro();
- registroArchivo.CerrarArchivo();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement