lunes, 11 de junio de 2012

Uso de Constructores y Destructores

Cada vez que se crea una clase o estructura, se llama a su constructor. Una clase o estructura puede tener varios constructores que toman argumentos diferentes. Los constructores permiten al programador establecer valores predeterminados, limitar la creación de instancias y escribir código flexible y fácil de leer.
Si no proporciona un constructor para el objeto, C# creará uno de forma predeterminada que crea instancias del objeto y establecer las variables miembro con los valores predeterminados indicados en: Tabla de valores predeterminados (Referencia de C#). Las clases y estructuras estáticas también pueden tener constructores.

Los destructores se utilizan para destruir instancias de clases.
  • Los destructores no se pueden definir en estructuras. Sólo se utilizan con clases.
  • Una clase sólo puede tener un destructor.
  • Los destructores no se pueden heredar ni sobrecargar.
  • No se puede llamar a los destructores. Se invocan automáticamente.
  • Un destructor no permite modificadores de acceso ni tiene parámetros.
Ejemplo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConstructoresDestructores
{
    //En base a la lectira sobre el tema de Constrctores y Destructores en C#
    //veremos el siguiente ejemplo


    //Declaracion de la Clase CCuenta
    class CCuenta
    {
        //Atributos
        private string nombre;
        private string cuenta;
        private double saldo;
        private double tipoDeInteres;


        //Metodos contructor
        public CCuenta() { }
        public CCuenta(string nom, string cue, double sal, double tipo)
        {
            asignarNombre(nom);
            asignarCuenta(cue);
            ingreso(sal);
            asignarTipoDeInteres(tipo);
        }
       
        //Metodo Destructor
        ~CCuenta()
        {
        // Desctructor
            System.Console.WriteLine("Metodo destructor ejecutado...");
            System.Console.ReadKey();
        }


        //Metodos
        public void asignarNombre(string nom)
        {
            if (nom.Length == 0)
            {
                System.Console.WriteLine("Error: Cadena Vacia");
                return;
            }
            nombre = nom;
        }


        public string obtenerNombre()
        {
                return nombre;
        }


        public void asignarCuenta(string cue)
        {
            if (cue.Length == 0)
            {
                System.Console.WriteLine("Error: Cuenta no valida");
                return;
            }
            cuenta = cue;
        }


        public string obtenerCuenta()
        {
            return cuenta;
        }


        public double estado()
        {
            return saldo ;
        }


        public void ingreso(double cantidad)
        {
            if (cantidad < 0)
            {
                System.Console.WriteLine();
                return;
            }
            saldo = saldo + cantidad;
        }


        public void reintegro(double candidad)
        {
            if (saldo - candidad < 0)
            {
                System.Console.WriteLine("Error: no disponible de saldo");
                return;
            }
            saldo = saldo - candidad;
        }


        public void asignarTipoDeInteres(double tipo)
        {
            if (tipo < 0)
            {
                System.Console.WriteLine("Error: tipo no valido");
                return;
            }
            tipoDeInteres = tipo;
        }


        public double ontenerTipoDeInteres()
        {
            return tipoDeInteres;
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            // Instanciendo dos objetos cuenta01 y cuenta 02 con informacion en el constructor
            CCuenta cuenta01 = new CCuenta();
            CCuenta cuenta02 = new CCuenta("Un Nombre", "Una Cuenta", 6000, 3.5);


            cuenta01.asignarNombre("Dos Nombre");
            cuenta01.asignarCuenta("Dos Cuenta");
            cuenta01.asignarTipoDeInteres(2.5);


            cuenta01.ingreso(10000);
            cuenta01.reintegro(5000);


            System.Console.WriteLine(cuenta01.obtenerNombre());
            System.Console.WriteLine(cuenta01.obtenerCuenta());
            System.Console.WriteLine(cuenta01.estado());
            System.Console.WriteLine(cuenta01.ontenerTipoDeInteres());
            System.Console.WriteLine();
            System.Console.WriteLine(cuenta02.obtenerNombre());
            System.Console.WriteLine(cuenta02.obtenerCuenta());
            System.Console.WriteLine(cuenta02.estado());
            System.Console.WriteLine(cuenta02.ontenerTipoDeInteres());
           
            System.Console.ReadKey();
        }
    }
}


No hay comentarios:

Publicar un comentario