Ir a Emagister Encuentra tu formación ideal
¡Mailxmail y emagister se unen para que tengas toda la formación a tu alcance!
12.170 cursos gratis
8.186.444 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

C# Curso de Programación

Autor: Alejandro Domingo Velazquez Cruz
Curso:
7,60/10 (15 opiniones) |15672 alumnos|Fecha publicación: 14/07/2005
Envía un mensaje al autor

Capítulo 8:

 Modificadores de alcance, Constructores y Destructores

Alcance

El alcance delimita que regiones de código pueden referenciar un elemento del programa, los modificadores de acceso son los que definen el alcance de los miembros de la clase y son:

Capacidad de Acceso Significado

public El acceso no se encuentra restringido

protected El acceso está limitado a la clase actual, así como a las clases que hereden de ella

internal El acceso está limitado al proyecto actual

internal protected El acceso está limitado al proyecto actual, así como a los tipos derivados de ella private El acceso está limitado a la clase actual

Reglas

Los espacios de nombre siempre son públicos (implícitamente).

Las clases siempre son públicas (implícitamente).

Los miembros de clase son privadas por predeterminación.

Todo esto a menos que se agregue un modificador de alcance para variar la capacidad de acceso el elemento.

Recomendaciones

Solo deben hacerse públicos aquellos datos que los usuarios de su clase necesiten ver, aunque siempre es más recomendable en medida de lo posible el uso de atributos para acceder a dichos valores, NO DECLARE COMO PUBLICA UNA VARIABLE A MENOS QUE SEA E-S-T-R-I-C-T-A-M-E-N-T-E necesario. Para los efectos del curso se tratarán las variables de una manera no completamente segura por razones de legibilidad del código, pero una vez que obtengan más experiencia deben evitarlo.

Constructores y Destructores

Los constructores nos permiten inicializar la memoria y convertirla en un objeto listo para usarse, pero ahi ciertas reglas:

+ El Constructor Inicializa la memoria y la convierte en un objeto utilizable

+ Si no se especifica un constructor:

- El compilador genera un constructor predeterminado

- Accesibilidad pública

- Mismo nombre que el de la clase

- Sin tipo de retorno, ni siquiera null

- No espera argumentos

- Inicializa todos los campos en cero, falso o nulo

+ Si se especifica un constructor

- Se invoca cuando se inicializa el objeto

- Se puede sobrecargar

Caracteristicas del Constructor Predeterminado:

+ Todos los campos se inicializan con cero

- Campos numéricos (int, double, decimal, etc..) se inicializan a cero.

- Campos bool se inicializan en false.

- Tipos de referencia(como los objetos) se inicializan en null.

- Tipos struct se inicializan para contener valores de cero.

+ Accesibilidad pública

No siempre es recomendable el utilizar el constructor predeterminado, por ejemplo, no siempre es bueno el hecho de que el acceso sea público o quizás sea un problema el hecho de que se inicialicen a 0 ciertos valores, así mismo el código invisible es dificil de mantener, el código del constructor predeterminado es invisible. Debemos recordar que aunque los constructores son tipos especiales de métodos eso no implica que no puedan ser sobrecargados.

Ejemplo:

class Persona

{

public Persona( ) //Constructor personalizado

{

Nombre = "";

Apellido = "";

Console.WriteLine("Objeto Construido");

}

public string ObtenerNombreCompleto()

{

return ( Nombre+" "+Apellido );

}

public string nombre

{

get{ return Nombre; }

set{ Nombre = value ; }

}

public string apellido

{

get{ return Apellido; }

set{ Apellido = value; }

}

private string Nombre,Apellido;

}

Algo importante es que podemos modificar la accesibilidad de un constructor.

Constructores privados: Se utilizan para evitar que los objetos se creen a partir de una clase especifíca, imaginemos que desea crear una clase que provea cierta funcionalidad, pero no desea que los usuarios de esa clase puedan crear objetos con base en ella, bueno en este caso ponemos metodos y variables estáticas dentro de la clase, en este caso ya no es necesario crear instancias de la clase (objetos), sin embargo el constructor predeteminado es public por predeterminación, lo cual implica que SI se pueden crear instancias de esa clase, aunque dichos objetos no tendrán ningún sentido ya que la clase está compuesta únicamente de métodos y variables estáticas, para evitar esto basta con modificar la accesibilidad del constructor haciendolo private impidiendo que se creen instancias de la clase. Al declarar un constructor C# no generará ningún constructor y al hacerlo privado evita que se creen instancias de esa clase.

Constructores estáticos: Se emplean para asegurarse de que una clase siempre es inicializada antes de utilizarse, esto nos asegura que la clase se encuentra en un estado inicial bien definido antes de utilizarse.

Destructores y Terminadores

Provocan que las acciones finales de los objetos sean diferentes y no pueden ser determinadas por recolección de residuos, así mismo todos los objetos en la plataforma .NET tienen un método de Finalizar, si está presente, la recolección de residuos llamará al Destructor antes de reclamar la memoria binaria, en C# no se puede llamar o sobrescribir Object.Finalize. Un destructor es un mecanismo de limpieza de memoria.

Finalización

Cuando el recolector de basura libera los recursos utilizados por un objeto no referenciado, verifica primero si la clase del objeto no tiene un destructor o método Finalize propio, si la clase cuenta con uno el será invocado antes de reciclar la memoría a la pila. Las instrucciones escritas en el destructor o método Finalize son únicamente para esa clase.

Destructores

En C# el método Finalize no está disponible de manera directa y no puede ser invocado y/o cancelado, se deberá colocar código para que sea ejecutado durante la finalización dentro de un estructor, dicho destructor tendrá el nombre de la clase antecedido por el simbolo ~. Ejemplo:

Puede escribir un destructor para implementar la limpieza de un objeto. En C#, el método Finalize no está disponible directamente, y no puede invocar o cancelar el método Finalize. Debe colocar código para que sea ejecutado durante la finalización dentro de un destructor.

class Persona

{

public Persona( ) //Constructor personalizado

{

Nombre = "";

Apellido = "";

Console.WriteLine("Objeto Construido");

}

~Persona()

{

Console.WriteLine("Objeto Destruido");

}

public string ObtenerNombreCompleto()

{

return ( Nombre+" "+Apellido );

}

public string nombre

{

get{ return Nombre; }

set{ Nombre = value ; }

}

public string apellido

{

get{ return Apellido; }

set{ Apellido = value; }

}

private string Nombre,Apellido;

}

Nuestras novedades en tu e-mail

Escribe tu e-mail:

Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Cursos similares a C# Curso de Programación


  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Programación en C++
C++ es un potente lenguaje de programación que apareció en 1980, continuando con... [04/06/04]
69.596  
2. Programación estructurada
Este curso les ayudará a tener conceptos básicos de la programación. Estos... [25/04/07]
3.025  
3. Programación estructurada (primera parte)
Aprende, en el mundo de la informática, la programación estructurada: en qué... [16/10/08]
4.454  

El blog de mailxmail|¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail


Ponte al día de Programación con nuestros cursos gratis