Documentos de Académico
Documentos de Profesional
Documentos de Cultura
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ejemplo { class Program { static void Main(string[] args) { } } }
4
Clases y objetos
Una clase es bsicamente un plano para un tipo de datos personalizado. Cuando se define una clase, se utiliza cargndola en la memoria. Una clase que se ha cargado en la memoria se denomina objeto o instancia. Se crea una instancia de una clase utilizando la palabra clave de C# new
5
Clases en UM
Cada clase se representa en un rectngulo con tres compartimentos:
Nombre Atributos y propiedades Mtodos
"entro de la clase#
Se pueden declarar variables, propiedades, mtodos, etc. Cada elemento puede tener un modificador de acceso. Un modificador de acceso especifica quienes estn autorizados a ver ese elemento. Si no se especifica ningn modificador de acceso, se asume que se trata de un elemento private.
8
Modi$icadores de acceso
public
Accesible a todos los elementos
private
Accesible solo a esa misma clase
protected
Accesible solo a la misma clase y mtodos de sus clases derivadas. No accesible desde el exterior.
internal
Accesible solo a ese ensamblado
protected internal
Accesible desde el mismo ensamblado, la misma clase y mtodos de sus clases derivadas
Modi$icadores de acceso
Accesible desde Modificador de acceso Clase donde se declar Subclase (Mismo assembly) Subclase (Distinto Assembly) Externamente (Mismo Assembly) Externamente (Distinto Assembly)
private
SI
NO
NO
NO
NO
internal
SI
SI
NO
SI
NO
SI
SI
SI
NO
NO
SI
SI
SI
SI
NO
SI
SI
SI
SI
SI 10
11
+ # ~ #
12
14
Campos
Un campo es un dato comn a todos los objetos de una determinada clase. Las variables declaradas dentro de una clase son ejemplos de campos (fields).
16
2.
3.
Ejemplo en un paso:
Definir el tipo de miObjetoA Adquirir memoria sin inicializar para el nuevo objeto usando new. Ejecutar el constructor para inicializar la memoria y convertirla en un objeto usable
Objetos en UM
En UML un objeto se representa como un rectngulo con un nombre subrayado
Automvil Persona CuentaBancaria
19
10
M+todos
21
M+todos
Contienen instrucciones para ejecutar al momento de ser invocados. Un mtodo contiene:
Modificador de Acceso (Determina su visibilidad) Tipo de dato (Devuelto al finalizar su ejecucin) Identificador (Nombre con el cual se invoca) Parmetros (Cero o mas variables que recibe el mtodo)
22
11
M+todos
En C# las subrutinas se conocen como mtodos, se codifican como parte de una clase y se clasifican en
Procedimientos NO devuelven valor
Subrutinas
Funciones Devuelven un valor
23
12
13
lamadas de procedimientos
class Program { static void Main(string[] args) { Procedimiento(); // Llamada } static void Procedimiento( ) { El Procedimiento Console.Write(Tec Laredo); NO devuelve valor return();// Fin del Procedimiento } }
27
miCarro.CambiarEstado(Apagado);
28
14
Parmetros
Por referencia Se enva la direccin de la variable
29
15
num1 = 50;
STACK
STACK
num1
No definido
num1
50
31
32
16
STACK
STACK
HEAP
cli
No definido
cli
[ Referencia cli ]
objeto cli
33
STACK
cli
objeto cli
objeto cli2
cli2
STACK
HEAP
cli
objeto cli
objeto cli2
cli2
34
17
35
36
18
Parmetros
37
)n/ocando m+todos
class Arbol { int Altura; public void Podar( ) { Console.WriteLine(Podando ); } }
Arbol Pino = new Arbol(); // Se crea el objeto Pino Pino.Podar(); //Se invoca el mtodo Podar() del objeto Pino
38
19
mbito de variables
Locales Se declaran y utilizan dentro de un contexto especfico. No se puede hacer referencia a ellas fuera de la seccin de cdigo donde se declara. Globales Se declaran fuera del cuerpo de cualquier mtodo
40
20
41
t2is
Para hacer referencia (explcita) a un elemento que se encuentra dentro de la misma clase (sta) se utiliza this.
class Articulo { private double precio = 0; public void PonerPrecio ( double precio ) { this.precio = precio; } public double ConsultarPrecio() { return this.precio; } }
Muy til cuando existen distintos elementos con el mismo nombre, pero con distinto significado dentro de un mbito determinado.
42
21
Ejemplos de m+todos
class Carro { private string estado = "Apagado"; public void Encender() { estado = "Encendido"; } public void Apagar() { estado = "Apagado"; } public string ConsultarEstado() { return estado; } public void CambiarEstado(string nuevoestado) { estado = nuevoestado; } }
43
22
,obrecarga
Se refiere a la posibilidad de crear mtodos que posean el mismo nombre y difieran en la cantidad y/o tipo de parmetros (Firma).
No es posible crear 2 funciones con el mismo identificador que solo difieran en el tipo de dato devuelto.
static bool impresion(int num) static char impresion(int num)
45
Ejemplo de sobrecarga
class Impresion { public void Imprimir() { System.Console.WriteLine("Sistema de Usuarios"); } public void Imprimir(string mensaje) { System.Console.WriteLine(mensaje); } public void Imprimir (string titulo, string mensaje) { System.Console.WriteLine("===== " + titulo + " ====="); System.Console.WriteLine(mensaje); } } class Programa { static void Main() { Impresion im = new Impresion (); im.Imprimir(); im.Imprimir("Siga las instrucciones en pantalla", "Use minusculas"); im.Imprimir(" Gracias! "); System.Console.ReadLine(); } } 46
23
M+todo Constr!ctor
Mtodo especial que es invocado automticamente cada vez que un objeto nuevo es creado (new). Debe poseer el mismo nombre de la clase. No posee tipo de dato de retorno. Si la clase no posee un constructor, C# crea uno vaco por default.
47
Constr!ctor
48
24
Ejemplo de constr!ctor
class Persona { public string Nombre; Constructor. (notar que tiene el mismo nombre de la clase) public Persona() { Nombre = "Desconocido"; } }
Dentro del constructor se realizan las inicializaciones correspondientes
class Programa { static void Main() { Persona unaPersona = new Persona(); System.Console.WriteLine(unaPersona.Nombre); System.Console.ReadLine(); } }
49
25
51
M+todo "estr!ctor
No puede llamarse explcitamente. Se invoca automticamente cuando el objeto es destruido. Invocado por el Garbage Collector (GC) justo antes de desasignar la memoria del objeto. Usado para cerrar archivos, conexiones de red, canales abiertos, etc. Sintaxis similar al mtodo constructor, pero anteponiendo una tilde (~) al nombre.
52
26
"estr!ctor
53
Ejemplo de destr!ctor
54
27
"estr!ccin de objetos
C# gestiona la memoria de modo automtico mediante el recolector de basura (Garbage Collector o GC), quien se encarga de eliminar la memoria que en algn momento se solicit y no se ocupa mas. En C# no existe el operador contrario a new. Por lo que, de manera general, NO es posible controlar exactamente el momento en el cual la memoria vuelve a estar disponible.
55
"estr!ccin de objetos
Se puede indicar en el programa cuando un objeto deja de ser util, asignndole el valor null.
miObjeto = null
Cuando el GC lo note, tomar cartas en el asunto. El instante preciso en que lo har, queda fuera del alcance del programador.
56
28
Trabaja cuando:
Hay poca memoria disponible La aplicacin est finalizando El programador lo invoca manualmente (NO recomendado): System.GC.Collect()
57
Propiedades
58
29
Propiedades
Son mecanismos para acceder a los valores (variables) que poseen los objetos. Algunos autores las consideran sinnimos de los datos, sin embargo no siempre lo son (solamente en el caso de las propiedades autoimplementadas). Se pueden implementar:
Declarando la variable como public
No sera posible especificarla como Solo-Lectura o Solo-Escritura No se puede implementar cdigo adicional asociado a la Lectura o Escritura de la variable.
60
30
class Persona { private int edad; public int Edad { get { return edad; } set { edad = value; } } }
class Programa { static void Main() { Persona unaPersona = new Persona(); unaPersona.Edad = 25; System.Console.WriteLine (unaPersona.Edad); } }
61
31
63
32