// ISensor.cs // version 1.0 // fecha: 7-Enero-2003 // Juan Manuel Cueva Lovelle // Ejemplo de Interfaces // También se ilustra el tipo enumerado
#define DEPURACION
using System;
namespace Interfaces { /// <summary> /// Declara las operaciones comunes de los sensores /// </summary> interface ISensor { void Encender(); void Apagar(); void Visualizar(); }
class Termometro:ISensor { protected bool estado=false; protected float medida;
public Termometro() { estado=false; #if DEPURACION Console.WriteLine("Se ha creado un Termómetro"); #endif } public void Visualizar() { if (estado) Console.WriteLine("Temperatura: {0:F2} grados Celsius",medida); else Console.WriteLine("Termómetro apagado"); } public void Encender() { estado=true; Random aleatorio = new Random(); //Se inializa el generador de números aleatorios medida=(float)aleatorio.Next(-45,45);//Devuelve un número aleatorio en el intervalo } public void Apagar() { estado=false; } } /// <summary> /// Las veletas siempre están activas /// </summary> class Veleta:ISensor { protected bool estado=true; protected enum direccion {N,NE,E,SE,S,SW,W,NW}; protected direccion medida;
public Veleta() { estado=true; #if DEPURACION Console.WriteLine("Se ha creado una Veleta"); #endif } public void Visualizar() { Random aleatorio = new Random(); //Se inializa el generador de números aleatorios int d = aleatorio.Next(7);//Devuelve un número aleatorio en el intervalo switch (d) { case 0: medida=direccion.N; Console.WriteLine("Dirección del viento N"); break; case 1: medida=direccion.NE; Console.WriteLine("Dirección del viento NE"); break; case 2: medida=direccion.E; Console.WriteLine("Dirección del viento E"); break; case 3: medida=direccion.SE; Console.WriteLine("Dirección del viento SE"); break; case 4: medida=direccion.S; Console.WriteLine("Dirección del viento S"); break; case 5: medida=direccion.SW; Console.WriteLine("Dirección del viento SW"); break; case 6: medida=direccion.W; Console.WriteLine("Dirección del viento W"); break; case 7: medida=direccion.NW; Console.WriteLine("Dirección del viento NW"); break; }
} public void Encender() { estado=true; #if DEPURACION Console.WriteLine("Las Veletas siempre están activas"); #endif
} /// <summary> /// Las veletas no se pueden apagar /// </summary> public void Apagar() { estado=true; #if DEPURACION Console.WriteLine("Las Veletas siempre están activas"); #endif } /// <summary> /// Punto de entrada principal de la aplicación. /// </summary> [STAThread] static void Main(string[] args) { Termometro t = new Termometro(); t.Encender(); t.Visualizar(); t.Apagar(); t.Visualizar();
Veleta v = new Veleta(); v.Encender(); v.Visualizar(); v.Apagar(); v.Visualizar();
//Espera una tecla Console.ReadLine(); } } }
|