C# Clases PruebaTiempo1: Clase básica

El siguiente ejemplo consta de una clase Tiempo1, contiene 3 variables privadas (private) de instancia de tipo entero (int):  hora, minuto y segundo. Representan la hora en formato de tiempo universal (formato reloj de 24 horas donde los valores de cada miembro se encuentran en un rango de 0 a 23).  La clase Tiempo1 contiene los métodos public accesibles desde otras clases:  EstablecerTiempoAStringUniversalToString. El constructor no se declara por lo que el compilador emplea uno predeterminado. Cada variable de instancia recibe de forma implícita el valor 0 por defecto para un int (podemos hacer la prueba modificando el acceso a las variables con public e imprimiendo su valor por consola sin inicializar), aunque también podemos inicializarlas de la misma forma que una variable local.

tiempo1_1

El método  EstablecerTiempo es public y recibe tres parámetros de entrada que permiten establecer la hora. Dentro del método se evalúan si los datos de entrada son válidos, si el valor de entrada no está dentro del rango 0 a 23 para la hora se asigna un 0 por defecto (lo mismo para minutos y segundos si no están comprendidos entre 0 y 60). Para ello se emplea un operador condicional ternario (ver referencia operador ? en MSDN). De esta forma nos aseguramos que a pesar de que introduzcamos datos no válidos el valor es consistente.

tiempo1_3

El método  AStringUniversal no recibe argumentos y retorna un objeto de tipo string en formato de hora universal con forma “HH:MM:SS”.  utilizamos el método static Format del objeto string para darle la forma deseada, “{0:D2}:{1:D2}:{2:D2}”  con 2 dígitos y donde sea necesario un cero a la izquierda.

tiempo1_4Con “D2” indicamos por ejemplo que se trata de un decimal entero (“D”), el 2 lo usamos como especificador de precisión, rellenará la cadena final con ceros por la izquierda hasta que el número alcance 2 dígitos de longitud (ver MSDN Cadenas con formato numérico estándar).

El método  ToString no recibe argumentos y retorna un objeto String en formato AM/PM. Cabe destacar la palabra clave  override o sobrecarga, todos los objetos en C# tienen un método ToString que devuelve una representación en forma de cadena (también otros como GetType o Equals). Usando el modificador override ampliamos su implementación original.

tiempo1_5

Por ejemplo: Cuando declaramos un objeto de tipo String el método ToString se llama de forma implícita cuando usamos Console.Write con el objeto.

tiempo1_6

Uso de la clase Tiempo1

Después de declararla podemos usarla de las siguientes formas:

tiempo1_7

 


/*
* Created by SharpDevelop.
* User: i.landajuela
* Date: 20/12/2016
* Time: 10:54
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;

namespace PruebaTiempo1
{
//Clase tiempo para mantener la hora
class Tiempo1
{
//3 variables privadas de instancia private de tipo int
//Se inicializan a 0 por defecto
private int hora; //0 - 23
private int minuto; //0 - 59
private int segundo; //0-59

//Establece un nuevo valor de tiempo usando la hora universal, controla
//lo datos invalidos haciendolos consistentes
public void EstablecerTiempo(int h, int m, int s)
{
this.hora = ( (h>=0 && h<24) ? h : 0 );
this.minuto = ( (m>=0 && m<60) ? m : 0 );
this.segundo = ( (s>=0 && s<60) ? s : 0 );
}

//Convierte en string en formato universal HH:MM:SS
public string AStringUniversal()
{
return string.Format("{0:D2}:{1:D2}:{2:D2}",
this.hora,this.minuto,this.segundo);
}

//Convierte en string, en formato hora estándar H:MM:SS AM o PM)
//Sobrecargamos la función ToString
//
public override string ToString()
{
return string.Format("{0}:{1:D2}:{2:D2}:{3}",
((hora==0||hora==12)? 12 : (hora % 12)),
this.minuto,
this.segundo,
( hora < 12 ? "AM" : "PM"));
}
}


class Program
{
public static void Main(string[] args)
{
Tiempo1 objT1;

objT1.EstablecerTiempo(23,30,01);

Console.WriteLine("Como hora universal: {0}.",objT1.AStringUniversal());
Console.WriteLine("Usando método .ToString sobrecargado: {0}.",objT1.ToString());

Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}

&nbsp;

Anuncios

2 pensamientos en “C# Clases PruebaTiempo1: Clase básica

  1. Pingback: C# ClassConstructor: Notas sobre constructores | Internet y GNU/Linux

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s