Tarea 1: Manipulando Fechas

Descripción
    Se desea desarrollar una clase para manipular y operar con fechas y horas según nuestro uso horario.
    Para ello se pide desarrollar tres clases relacionadas para encapsular cada una de estas entidades: CFecha, CHora y CTiempo.
CFecha es una clase que mantiene información sobre un día en particular. Debe recibir información como día (1..31), mes (número) , y año. Cuando es desplegada una fecha, debe mostrar el dia de la semana( lunes, martes ... domingo) , su número dentro del mes (1..31), y el año. Esta clase implementa servicios de lectura y escritura de fechas, y operaciones que permiten sumar y restar fechas. Adicionalmente contiene un método estático que permite consultar por la fecha actual.

CHora es la clase que mantiene información sobre la hora dentro de un dia. Recibe y puede escribir información como hora (0..24), minutos y segundos. Como CFecha implementa operaciones que nos permiten sumar y restar horas. Proponga un esquema para manejar "overflow" y "underflow" sean una buena solución ante el problema que se resolverá con estas clases. Como CFecha implementa un método estático que retorna una instancia con la hora actual.

CTime es una clase que compone (relación de composición o agregación) las dos clases anteriores. Es decir debe incluir un objeto CFecha y otro CHora de modo que podamos definir el tiempo en forma completa.

Programa de prueba para las clases desarrolladas
    Para probar las clases antes desarrolladas, haga un programa que permita:

1.- Ingresar una fecha por teclado y muestre en pantalla la edad en años, meses y dias desde la fecha hasta hoy.
2.- Ingrese una fecha y nos indique a que día de la semana correspondía o corresponderá.
3.- Dado  el instante en que usted nació, nos indique cuanto tiempo usted ha vivido.
4.- Obtenga el promedio entre tres tiempos ingresados por teclado. (Ojo que para ello debe implementar la operación división por entero)