Académique Documents
Professionnel Documents
Culture Documents
Clases y Objetos en C#
01/04/2014
Agenda
Representacin de Clases Declaracin de Clases Modificadores de Acceso Declaracin de campos de instancia Declaracin de mtodos
01/04/2014
}
01/04/2014 6
01/04/2014
Modificadores de visibilidad
Los atributos y los mtodos pueden tener modificadores, que indican los niveles de acceso que otros mtodos pueden tener sobre ellos. C# cuenta con un conjunto de modificadores de visibilidad.
01/04/2014
10
Modificadores de Acceso de C#
Modificador Restriccin de acceso
public Sin restricciones. Los miembros marcados como public estn visibles a cualquier mtodo de la clase Los miembros de una clase A marcados como private son accesibles slo a los mtodos de la clase A. Los miembros de una clase A marcados protected pueden ser accedidos por los mtodos de la clase A y tambin por los mtodos de las clases derivadas de la clase A.
11
private
protected
01/04/2014
Modificadores de Acceso de C#
Modificador de acceso
internal
Restriccin
Los miembros de una clase A marcados internal pueden ser accedidos por los mtodos de cualquier clase en el ensamblado (assembly) de A. Los miembros de una clase A marcados protected internal pueden ser accedidos por los mtodos de la clase A y tambin por los mtodos de las clases derivadas de la clase A, as como por los mtodos de cualquier clase en el ensamblado (assembly) de A. Esto equivale a protected OR internal.
12
protected internal
01/04/2014
Laboratorio 3: Encapsulamiento
Modifique la clase DemoDado para generar el nmero aleatorio directamente, sin llamar al mtodo Lanzar(): Console.WriteLine("Al lanzar el dado cay {0}", d.generador.Next(1,7));
01/04/2014 13
Laboratorio 3: Encapsulamiento
Modifique el acceso al campo de instancia generador clase haciendo su acceso privado: private Random generador; Compile y ejecute el programa. Qu sucedi? Vuelva a escribir el cdigo para que se invoque al mtodo Lanzar(). Console.WriteLine("Al lanzar el dado cay {0}", d.Lanzar());
01/04/2014
14
Encapsulamiento
La recomendacin es hacer que los campos de instancia tengan visibilidad privada, mantenindolos en secreto, mientras que los mtodos tengan visibilidad pblica. En algunas ocasiones se puede requerir que un mtodo tenga visibilidad privada.
01/04/2014 15
01/04/2014
17
Mtodos de instancia
Los mtodos son a las clases lo que los verbos son a las oraciones. Indican las acciones que definen el comportamiento de los objetos de la clase. Un mtodo define una accin especfica o un clculo. Un mtodo es identificado por su firma (signature), que consiste del nombre del mtodo y el nmero y tipos de datos de sus parmetros. Adems, un mtodo tiene un valor de retorno, o la palabra reservada void si no se retorna nada, y una lista de modificadores que determina su accesibilidad y comportamiento polimrfico.
01/04/2014 18
Ejemplo de mtodo
public int Lanzar() { int valor = generador.Next(1, 7); return valor; }
01/04/2014
19
Parmetros
Para poder realizar su accin o clculo un mtodo puede requerir informacin adicional que ser enviada por el cdigo que invoque el mtodo. En el ejemplo anterior, el mtodo Lanzar() no tiene parmetros. Sin embargo, un mtodo puede tener cualquier nmero de parmetros.
01/04/2014 20
Sobrecarga de mtodos
public CuentaBancaria() { saldo = 0.0; }
public CuentaBancaria(double nuevoSaldo) { saldo = nuevoSaldo; }
01/04/2014 23
Alcance
Las variables declaradas dentro de un mtodo, constructor u otro bloque de cdigo no pueden ser utilizadas en toda la clase. El Alcance de una variable se refiere a la parte de un programa donde puede ser utilizada una variable. Una variable slo puede ser utilizada en dentro del bloque de cdigo donde ha sido definida. As, dependiendo de donde estn declaradas, una variable puede tener alcance de clase o puede ser una variable local.
01/04/2014 25
Ejemplo de alcance
class MiClase { int x; public void UnMetodo(int a) { int x; Console.WriteLine({0}\t{1},x, this.x); if (a > 0) { int x = 5; Console.WriteLine({0}\t{1},x, a); } } }
01/04/2014 26
Constructores
Un constructor es un mtodo especial que es invocado automticamente cuando se instancia (crea) un objeto. Los constructores frecuentemente se utilizan para inicializar las variables de atributo de un objeto.
01/04/2014
27
Ejemplo de constructor
class Dado { public Random generador; public Dado() { generador = new Random(); }
public int Lanzar() { int valor = generador.Next(1, 7); return valor; }
}
01/04/2014 28
Constructores
Como con los mtodos, es posible sobrecargar los constructores, incluyendo mltiples constructores en una clase, cada uno con el mismo nombre y una serie diferente de argumentos.
01/04/2014
29
Constructor predeterminado
Cuando el compilador encuentra una clase que no tiene un constructor explcitamente definido, inserta un constructor predeterminado. Por lo tanto toda clase tiene un constructor. El constructor predeterminado no recibe argumentos. Se recomienda, declarar constructores dentro de una clase para evitar que el compilador inserte un constructor predeterminado.
01/04/2014 30
La referencia this
La palabra reservada this hace referencia a la instancia actual de un objeto. La referencia this es una referencia oculta que se pasa a todos los mtodos no estticos de una clase. Cada mtodo puede hacer referencia a los otros mtodos y variables de instancia de ese objeto por medio de la referencia this.
01/04/2014
31
01/04/2014
32
01/04/2014
33
01/04/2014
37
Ejemplo de propiedades
Public class Curso { private string nombre; public string NombreDelCurso { get { return nombre; } set { nombre = value; } } }
01/04/2014 38
Ejemplo de propiedades
Curso mate = new Curso(); mate.NombreDelCurso = Matemticas I; Console.WriteLine(Nombre del curso: {0}, mate.NombreDelCurso;
01/04/2014
39
Ejemplo de propiedades
public class Empleado { private string nombre; public string Nombre { get { return nombre; } set { if (value == null) { throw new NullReferenceException(); } else { value = value.Trim(); if (value == ) { throw new ApplicationException(El nombre est en blanco); } else { nombre = value; } } } } }
01/04/2014 40
Propiedades
Puede incluirse slo la parte del getter o del setter de una propiedad para cambiar la accesibilidad de la propiedad. Si se proporciona slo el getter la propiedad ser de slo lectura. Si se proporciona slo el setter, algo que es muy raro, la propiedad ser de slo escritura.
01/04/2014 41
Ejemplo
public clase CuentaBancaria { private decimal saldo; public decimal Saldo { get { return saldo; } } }
01/04/2014 42
01/04/2014
43
Ejemplo
public class Empleado { private string nombre; private string apellidos public string NombreCompleto { get { return nombre + + apellidos; } } }
01/04/2014 44