c# curso de programación -...

28
C# Curso de Programación Autor: Alejandro Domingo Velazquez Cruz [Ver curso online] Descubre miles de cursos como éste en www.mailxmail.com 1 mailxmail - Cursos para compartir lo que sabes

Upload: tranhanh

Post on 14-Feb-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

C# Curso de ProgramaciónAutor: Alejandro Domingo Velazquez Cruz

[Ver curso online]

Descubre miles de cursos como éste en www.mailxmail.com 1

mailxmail - Cursos para compartir lo que sabes

Page 2: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Presentación del curso

Curso Básico de programación en C#, este curso básico abarcará desde las bases dellenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases dedatos de access, sql, etc, asi como muchas cosas mas...

Visita más cursos como este en mailxmail:[http://www.mailxmail.com/cursos-informatica][http://www.mailxmail.com/cursos-programacion]

¡Tu opinión cuenta! Lee todas las opiniones de este curso y déjanos la tuya:[http://www.mailxmail.com/curso-c-programacion/opiniones]

Cursos similares

Cursos Valoración Alumnos Vídeo

Usabilidad webLa usabilidad es el principal elemento con el cual debe contar toda páginaWeb. Yo defino Usabilidad como la capacidad de una aplicación de seragradable, eficiente y fá... [17 /07/06]

1.882  

JavaJava nació con el deseo por parte de Sun de buscar un lenguaje deprogramación enfocado a electrodomésticos. Se necesitaba alg&uacu... [23 /04/04]

75.512  

PHP y MySQL. Aplicaciones Web (undécimaparte)Programación de aplicaciones Web con PHP y MySQL. Ahora te capacitamospara entender el funcionamiento en Internet de una tienda online.Aprenderás ... [02 /12/08]

1.367  

Programación de aplicaciones XML/XSL conPython y JavaUn código para la programación de aplicaciones en XML/XSL en Python yJava... [05 /05/05]

3.193  

Cómo programar aplicacionesCliente/Servidor en Visual BasicVisual Basic nació como un lenguaje sencillo de programación, ideal parainiciarse en el apasionante mundo de la programación. Actualmente se haconvertido en un potente ... [17 /09/04]

12.607  

Descubre miles de cursos como éste en www.mailxmail.com 2

mailxmail - Cursos para compartir lo que sabes

Page 3: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

1. Introduccion a la plataforma .NET y Estructura Basica deun Programa en C#[http://www.mailxmail.com/...ramacion/introduccion-plataforma-net-estructura-basica-programa-c]

Historia del CursoHace ya algún tiempo que ha estado vueltas en mi cabeza la idea de certificarme comoprogramador en C# y es una aspiración profesional lograr la certificación MCSD enfocada enlo que es seguridad informática, así que este curso de C# reflejara el conocimiento que vayaadquiriendo en cada una de mis etapas de formación, y esta dedicado a todos aquellos queplanean dedicarse a esto tan hermoso de la programación, planeo hacer de este curso unaguía completa que sirva de apoyo en el arduo camino hacia la certificación MCSD conénfasis en seguridad. Actualmente soy Desarrollador de 2 estrellas a un paso de la tercera,así mismo soy miembro de la Academia Latinoamericana de Seguridad Informática, así queiré impartiendo dos cursos, C# y Seguridad Informática que al final se unirán para crearcódigo realmente seguro con C#, espero que este viaje sea tan ilustrativo para ustedescomo para mi, siéntanse libres de opinar a mi correo [email protected] o de contactarmeen línea en [email protected], bueno comencemos con el día uno de nuestro curso de C#.

¿Qué es la plataforma .NET?

Es la Base de la nueva generacion de software en la cual los Servicios Web son un medio quepermitira a distintas tecnologias interoperar entre si, asi como conectar diversos sistemasoperativos, dispositivos, informacion y usuarios dando a los desarrolladores lasherramientas y tecnologias necesarias para desarrollar soluciones de negocios de manerarapida sin importar que involucren diversos medios y tecnologias. En la plataforma .NET elsoftware es mas concretamente de servicio y se aboca a construir, instalar, consumir,integrar o agregar de manera federada servicios que pueden ser accedidos medianteInternet, la idea central es que un usuario de Internet con un explorador pueda acceder acontenidos, no solo en forma de texto, imagenes o sonido, sino tambien pueda hacer usode Servicios Web, los cuales se utilizan como bloques de construccion en este nuevo modelode computacion distribuida en internet. El punto central es que los usuarios deben poderacceder a la funcionalidad que los servicios Web Proveen desde cualquier dispositivo,sistema operativo y ubicacion geografica.

Componentes de la plataforma .NET

Estamos en el umbral de una nueva era de Internet, el Internet "inteligente" que permite quelos servicios sean ejecutados e invocados desde cualquier dispositivo y sistema operativo,para su acceso mediante Internet, asi mismo los sitios podran comunicarse entre si yacceder a servicios y contenidos sin necesidad de intervencion humana. Es por eso que laplataforma .NET no es un producto, sino un conjunto de ellos que de manera conjuntaproporcionan una solucion al problema, sus componentes principales son:

Clientes Inteligentes: Son dispositivos muy variados. Lo que los hace inteligentes es sucapacidad para hacer uso de servicios Web. Pueden ser Computadoras de Bolsillo,personales, portatiles, Telefonos Inteligentes, Handhelds e incluso consolas de juegos comoXBOX

Servidores: Proveen de la infraestructura para implementar el modelo de computacióndistribuida en Internet. Son sistemas operativos y de aplicación.

Servicios Web basados en XML: Son los bloques de construcción de la tercera generación deInternet. Permiten a las aplicaciones compartir datos y estan basados en XML.

Herramientas de desarrollo: Visual Studio .NET y el .NET Framework. Ambos permiten aldesarrollador hacer servicios Web basados en XML además de otro tipo de aplicaciones. El.NET Framework viene incorporado directamente en la nueva línea de sistemas operativos

Descubre miles de cursos como éste en www.mailxmail.com 3

mailxmail - Cursos para compartir lo que sabes

Page 4: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Windows .NET. Para los dispositivos móviles se llama .NET Compact Framework.

El Common Language Runtime

Es el encargado de proveer lo que se llama código administrado, es decir, un entorno queprovee servicios automáticos al código que se ejecuta. Los servicios son variados:

Cargador de Clases: Permite cargar en memoria las clases.

Compilador MSIL a nativo: Transforma código intermedio de alto nivel independiente delhardware que lo ejecuta a código de máquina propio del dispositivo que lo ejecuta.

Administrador de Código: Coordina toda la operación de los distintos subsistemas delCommon Language Runtime.

Recolector de Basura: Elimina de memoria objetos no utilizados.

Motor de Seguridad: Administra la seguridad del código que se ejecuta.

Motor de Depuración: Permite hacer un seguimiento de la ejecución del código aún cuandose utilicen lenguajes distintos.

Verificador de Tipos: Controla que las variables de la aplicación usen el área de memoriaque tienen asignado.

Administrador de Excepciones: Maneja los errores que se producen durante la ejecución delcódigo.

Soporte de multiproceso (threads): Permite ejecutar código en forma paralela.

Empaquetador de COM: Coordina la comunicación con los componentes COM para quepuedan ser usados por el .NET Framework.

Soporte de la Biblioteca de Clases Base: Interfaz con las clases base del .NET Framework.

Estructura de un Programa C#

Un programa en C# es una coleccion de clases, estructuras y tipos

Estos elementos pueden residir en uno o varios archivos

Todo es un objeto

C# diferencia entre mayusculas y minusculas

Utiliza los espacios de nombre para organizar las clases

El metodo principal de toda aplicacion hecha en C# es Main, el cual es el punto de inicio dela aplicacion y puede o no devolver y recibir o no valores. Todas las aplicaciones hechas enC# deben tener un punto de inicio, excepto las aplicaciones Web que tienen una pagina deinicio. Los parametros que puede recibir main representa los parametros utilizados parainvocar el programa y se organizan en un array de tipo string unidimensional.

Asi mismo existen 3 formas de introducir comentarios en el codigo de nuestra aplicacion: //que sirve para introducir un comentario de una sola linea, /* comentario */ que sirve paraintroducir un bloque de comentarios, todo aquello que se ponga entre los dos asteriscossera considerado como un comentario y ///Resumen que nos permite generardocumentacion en formato XML.

Para finalizar nuestro primer dia haremos el clasico ejemplo aburrido pero clasico al fin y alcabo que todo buen curso de programacion debe enseñar primero, je, je, je, lo se, a mi meenseñaron con "hola mundo" y este es el momento de desquitarme, je, je, je, nada personal; - ) .

using System;

Descubre miles de cursos como éste en www.mailxmail.com 4

mailxmail - Cursos para compartir lo que sabes

Page 5: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

namespace HolaMundo { / / / ///Este es un comentario para generar una documentacion XML / / / class HolaMundo { [STAThread] static void main( string[] args ) { Console.WriteLine("Hola Mundo"); } } }

Descubre miles de cursos como éste en www.mailxmail.com 5

mailxmail - Cursos para compartir lo que sabes

Page 6: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

2. Estructura de un Programa[http://www.mailxmail.com/curso-c-programacion/estructura-programa]

Estructura de un Programa en C#

- Un programa en C# es una colección de Clases, Estructuras y Tipos - Dichos elementos pueden residir en uno o varios archivos - Todo es un objeto - C# diferencia Mayusculas y Minusculas - Utiliza los espacios de nombre para organizar las clases

Debemos recordar que una clase es una conjunto de propiedades y los métodospara utilizarlas. Los elementos pueden residir en uno o más archivos, y un archivopuede contener una o todas las clases que integran una aplicación, asi mismo en C#todo es un objeto, esto gracias a que el lenguaje ha sido rediseñado por completopara permitir usar esos objetos como componentes de la aplicacion. El proceso enrealidad es muy simple, al compilar una aplicacion C# la aplicacion no se compiladirectamente a lenguaje maquina, sino que se compila a codigo intermedio deMicrosoft o MSIL, al ejecutar, este MSIL es el que vamos a distribuir, al usarse unafuncion esa y solamente esa funcion se compila a codigo nativo, esto es lo que nospermite olvidarnos de la plataforma, de una manera similar a Java, aunque ladiferencia radica en que Java siempre se interpreta a partir de su codigo intermedio,en cambio el MSIL se convierte a codigo nativo antes de ser utilizado, esto permiteque las funciones se vayan compilando conforme se vayan utilizando minimizandoel impacto al usuario, interesante ¿verdad?.

Método Principal Main

- Es el punto de inicio de la aplicacion - Puede devolver void static void Main() - Puede devolver int static int Main() - Puede tomar argumentos static int Main(string[] args)

En C# todas las aplicaciones deben tener un punto de inicio, que es el método Main,en Main es donde se crean los objetos y se ejecutan otros métodos, es un métodoestático que reside dentro de una clase o estructura y solo puede haber un Main poraplicación. El método Main puede o no recibir argumentos, dichos argumentos losrecibe en forma de un array de strings unidimensional y contiene los argumentosque el programa recibe al ser invocado en la linea de comandos. En resúmen unprograma en C# se ve más o menos así. using System;

namespace Day1 { / / / /// Introducction to C# programming - Day 1 / / / class Example { [STAThread]

Descubre miles de cursos como éste en www.mailxmail.com 6

mailxmail - Cursos para compartir lo que sabes

Page 7: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

static void Main(string[] args) { Console.WriteLine("Hola Mundo"); } } }

Tipos Predefinidos

En C# existen 2 tipos predefinidos:

- Tipos por Valor: - Contienen una copia de los Datos que utilizan - Las operaciones que uno realiza con su copia no afectan las copias de los demas

- Tipos por Referencia: - Contienen referencias a los Datos que utilizan - Dos o mas referencias pueden apuntar al mismo objeto - Las operaciones que uno realiza afectan a los demas

Todos los tipos se definen en el espacio de nombre System, todos los tipos sederivan de System.Object y los que son por valor derivan de Syste.ValueType.

Common Type System

Es el Sistema Comun de Tipos de la plataforma .NET(CTS), se encarga de definir lamanera en que se declaran, utilizan y administran los tipos de datos en tiempo deejecución, sin el sería posible la integración entre lenguajes, ya que aunque VB.NETy C# usan enteros de 32 bits la forma en que los representan y almacenan podria serdrasticamente diferente sino fuera porque utilizan el CTS. El CTS, lleva a cabo lassiguientes funciones: - Establece un marco que permite la integración entre lenguajes, la seguridad detipos y una ejecución de código de alto rendimiento. - Proporciona un modelo orientado a objetos que soporta la implementacióncompleta de muchos lenguajes de programación.- Define las reglas que deben seguir los lenguajes, lo cual ayuda a asegurar que losobjetos escritos en diferentes lenguajes pueden interactuar entre sí.

Declaración de Variables

+ Declaración Sencilla - tipo_variable nombre_variable; + Declaración Multiple - tipo_variable nombre_variable1, nombre_variable2, ... nombre_variablen; NOTA: No se pueden utilizar variables no inicializadas.

Una variable puede inicializarse al momento de ser declarada, ejemplo: int miEntero=0;

o puede inicializarse después en el código, ejemplo: int miEntero; miEntero = 2;

Descubre miles de cursos como éste en www.mailxmail.com 7

mailxmail - Cursos para compartir lo que sabes

Page 8: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

3. Instrucciones Condicionales, de Iteracion,Operaciones Basicas de Entrada/Salida[http://www.mailxmail.com/...ciones-condicionales-iteracion-operaciones-basicas-entrada-salida]

Instrucciones Condicionales

Las instrucciones condicionales o de selección se utilizan para determinar quecódigo se debe ejecutar y cuándo se debe ejecutar. C# incluye dos instrucciones deselección la instrucción if que ejecuta código en base a una condición lógica y lainstrucción switch que ejecuta código con base en un valor, pero debes tomar encuenta que al utilizar la instrucción switch, puede especificar que se devuelva unvalor numérico y una o más partes de código, que se ejecutarán dependiendo delresultado de la expresión.

Instrucción IF Si la(expresión) hacer esto... de lo contrario hacer esto otro...

EjemplO: if( i== 0 ) Console.WriteLine("No ahi datos"); else Console.WriteLine("Si ahi datos");

Instrucción SWITCH Compara(variable) caso variable=1: hacer esto... terminar caso variable=2: hacer esto... terminar caso no_coincidio: hacer esto... terminar

Ejemplo: switch(i) { case 0: Console.WriteLine("No hubo inscritos"); break; case 1: Console.WriteLine("Si hubo inscritos"); break; default: Console.WriteLine("No se introdujo un numero valido"); break; }

Instrucciones de Iteración

Las instrucciones de iteración permiten realizar una serie de operaciones una y otravez mientras una condición dada se cumpla, en el caso de la instrucción while, elbloque de intrucciones se ejecutará mientras la expresión se cumpla, esto nospermite entrar al ciclo solo si la expresión da el valor que permita la entrada al ciclo,

Descubre miles de cursos como éste en www.mailxmail.com 8

mailxmail - Cursos para compartir lo que sabes

Page 9: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

caso contrario no ejecutara ni siquiera una vez, a diferencia del while el do-while seejecuta al menos una vez ya que la comparación de la condición se realiza al final,esto es sumamente útil para imprimir menús y pantallas que deben ser ejecutadasAL MENOS una vez mientras que el while nos permite evalua la condición primero yentonces entrar al ciclo. Además de estas dos instrucciones también tenemos elciclo for que nos sirve principalmente para evaluar condiciones númericas dondeuna variable se va a estar incrementando continúamente, cabe destacar que un ciclose usa en lugar de otro más que nada por comodidad, ya que todo ciclo for puedeser convertido en while, todo ciclo while puede ser adaptado a un do-while y tododo-while portado a for, bueno al menos esa es mi experiencia personal.

Instrucción WHILE Mientras(expresión) hacer esto...

Ejemplo: while( i<10 ) { i + + ; }

Instrucción DO-WHILE Hacer esto... Mientras(expresión) Ejemplo: do { i + + ; }while(i<10);

Instrucción FOR Para i = 0 mientras i<10 aumentar i++ hacer esto... Ejemplo: for( i=0 ; i<10 ; i++ ) { Console.WriteLine(i); }

A continuación está un ejemplo de la iteración FOREACH, esta es algo nuevo a loque algunos programadores pueden no estar familiarizados y nos sirve para recorrerarreglos, la instrucción se ejecutará en todos y cada uno de los elementos delarreglo.

Instrucción FOREACH por cada perro en miArregloDePerros[] hacer esto... Ejemplo 1: foreach( perro miPerro in miArregloDePerros ) { Console.WriteLine(miPerro.nombre); }

Ejemplo 2:

Descubre miles de cursos como éste en www.mailxmail.com 9

mailxmail - Cursos para compartir lo que sabes

Page 10: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

foreach( int miEntero in miArregloDeEnteros ) { Console.WriteLine(miEntero.valor); }

Operaciones básicas de entrada/salida

+ Utilizan la clase Console - Read: Lee el siguiente carácter de la entrada estándar. - ReadLine: Lee la siguiente línea de caracteres de la entrada estándar. - Write: Escribe la información específica en la salida estándar. - WriteLine: Escribe los datos especificados, seguidos de un terminador de líneaactual, en la salida estándar.

La clase Console no se puede heredar y ofrece un soporte básico para lasaplicaciones que leen y escriben caracteres en la consola. Si la consola no existecomo es el caso de las aplicaciones basadas en Windows, las escrituras a la consolano se despliegan en pantalla y ninguna excepción es generada. La entrada estándaro predefinida para la consola es el teclado y la salida predefinida es el monitor todoesto se lleva a cabo usando las propiedades IN, OUT y ERROR.

Descubre miles de cursos como éste en www.mailxmail.com 10

mailxmail - Cursos para compartir lo que sabes

Page 11: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

4. Conversion de Tipos de Datos[http://www.mailxmail.com/curso-c-programacion/conversion-tipos-datos]

Conversión de Tipos de Datos en C#

Las conversiones nos permiten que una expresión de un tipo sea tratada como unaexpresión de otro tipo, dichas conversiones pueden ser implícitas o explícitas, porejemplo la conversión de un tipo int a long es implícita, sin embargo la conversiónde un tipo long a un tipo int es explícita, esto debido a que un int puede serexpresado en formato long sin que haya perdida de precisión en la operación, sinembargo si intentamos convertir un numero long a int puede haber perdida deprecisión y se necesita una conversión explícita, es como una forma de obligarnos ademostrar que estamos conscientes de que existe tal perdida de precisión y enverdad es muy útil.

+ Conversión Implícita - No requiere sentencias adicionales - Puede perder precisión, pero no magnitud

+ Conversión Explícita - La define el usuario utilizando la expresión (cast) - El operador "as" la convierte a un valor de tipo específico - Utilizar operadores "checked" y "uncheked"

Ejemplo: int miNumero = 13; float miOtroNumero = miNumero;

En este caso no es necesaria una conversión explícita debido a que un número intpuede ser expresado sin ningún problema. float miNumero = 13.5; int miOtroNumero = (int) miNumero;

En este caso si es necesaria una conversión explícita debido a que un número floatno puede ser expresado en int sin que haya perdida de precisión, en este caso siejecutaramos la siguiente instrucción: Console.WriteLine("Numero Float:{0} NumeroInt:{1}",miNumero,miOtroNumero); se imprimiría en pantalla Numero Float: 13.5Numero Int: 13 ahi podemos apreciar con claridad la perdida de precisión debido aque se trunca todo aquello que se haya después del punto, cabe hacer la aclaraciónque no se redondea, es decir no se eleva al entero más próximo, sino que se trunca.

Operadores "checked" y "unchecked"

Los operadores checked y unchecked, se utilizan para controlar la verificación deovewflow, de operaciones y conversiones aritméticas. + Expresión Verificada: - checked ( expression ) + Expresión no Verificada: - unchecked ( expression )

Estructuras de Datos

+ Declaración:

Descubre miles de cursos como éste en www.mailxmail.com 11

mailxmail - Cursos para compartir lo que sabes

Page 12: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

struct + nombreEstructura + { miembros }; + Uso: - Primero declaramos la estructura: struct coordenada { int x; int y; }

- Después declaramos un objeto de ese tipo: coordenada miCoordenada;

- Y accesamos a los elementos usando el operador . : miCoordenada.x = 1; miCoordenada.y = 2;

Un tipo de estructura es un tipo de valor y puede crear constantes, campos,métodos, propiedades, índices, operadores, constructores de instancias,constructores estáticos y tipos anidados.

Diferencias entre clases y estructuras

+ Estructura - Contiene datos simples - Tipo de Valor

+ Clase - Objeto enriquecido con referencias - Tipo de Referencia

Ahi pocas diferencias entre estructuras y clases, pero son realmente significativas,las estructuras sirven para representar conjuntos de datos y pueden contener datosy funciones, sin embargo las estructuras son tipos de valor y no requieren espacioen la pila, ya que los datos están contenidos directamente en la estructura, mientrasque una variable en una clase contiene una referencia a los datos, esto es lo que seconoce como objeto.

Enúmerados

Una declaración enum declara un nuevo tipo enumerado e inicia con la palabra claveenum y define el nombre, la accesibilidad, el tipo y los miembros del enumerador.Cada tipo de enumerador tiene un tipo, dicho tipo debe poder representar todos losvalores de numerador definidos en la enumeración. Un enumerado puede declararsede manera explícita un tipo como byte, sbyte, short, ushort, int, uint, long o ulong,cualquier enumerado que no indica de manera explícita su tipo es int.

+ Declaración: enum + nombreDelEnumerado + { valores }

+ Ejemplo: enum Color{ blanco,rojo,azul,verde };

+ Uso: Color miColor; miColor = Color.blanco; miColor = (Color) 1;

Arreglos

Descubre miles de cursos como éste en www.mailxmail.com 12

mailxmail - Cursos para compartir lo que sabes

Page 13: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Los arreglos son una colección de elementos o de objetos todos del mismo tipo yque se encuentran indexados para poder acceder a ellos de una manera sencilla, sonrealmente faciles de usar, ahi diferentes tipos de arreglos Ahi dos formas dedeclarar arreglos en C# + Declaración con tipo y forma pero sin límites - int[] unidimensional; - int[,] bidimensional; - int [][] jagged; NOTA: Los arreglos del tipo jagged son arreglos de arreglos.

+ Declaración utilizando new con límites o inicializadores - unidimensional = new int[20]; - bidimendional = new int[20,20]; - jagged = new int[10][]; - jagged[0] = new int[][10];

Descubre miles de cursos como éste en www.mailxmail.com 13

mailxmail - Cursos para compartir lo que sabes

Page 14: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

5. Metodos, Manejo de Excepciones[http://www.mailxmail.com/curso-c-programacion/metodos-manejo-excepciones]

Métodos

Los métodos son miembros de las clases y pueden realizar una serie de acciones, odevolver un valor ya sea que tengan que calcularlo o no. Pueden recibir o noparametros y pueden devolver o no devolver parametros.

+ Declaración: tipoRetorno + NombreDelMétodo + [Parámetros] + { cuerpo }

+ Ejemplo: int Suma(int numero1, int numero 2) { return numero1 + numero2; }

+ Uso: [valor de retorno] miMétodo([Parametros]);

+ Ejemplo: resultado = Suma(numero1,numero2);

Los métodos pueden recibir diversos valores desde el exterior, de hecho puedenrecibir tantos valores como sea necesario, los valores que se le pasan a un métodopueden ser por valor o por referencia, los valores que un método recibe por valor,los recibe como una copia del dato que puede modificar a su gusto sin que se veanafectadas las demás copias de dicho dato, en cambio los valores que un métodorecibe por referencia son las direcciones a donde se encuentra el dato, al cambiar eldato que ahí donde una de estas referencias apunta cambia el valor para todosaquellos que lo estan utilizando, un ejemplo muy sencillo de esto es, en el mundoreal un paso de valor por referencia se da si tenemos apuntada la dirección de unamigo, dicha dirección es una referencia al lugar donde vive, es por eso que sivamos al lugar donde apunta la referencia nos encontraremos en la casa de nuestroamigo, una vez allí, si rompemos un vidrio cualquier persona que llegue a ese lugarencontrara la ventana rota, en cambio con los pasos de parámetro por valor se tieneuna copia del objeto en si, es decir, en el ejemplo anterior en vez de haber tenidouna dirección, habría tenido una casa exactamente igual a la de mi amigo, por lo quesi hubiera roto un vidrio, solo mi casa se habría visto afectada. En C# si pasamos unvalor a un método se pasa por valor a menos que se le indique lo contrario.Debemos recordar que no ahi limite al número de parámetros que puede recibir odevolver un método pero si no se va a recibir o a devolver ningún valor se puedeusar la palabra void para indicarlo. En C# los métodos son sumamente flexibles, espor esto que podemos devolver múltiples valores y nos permite sobrecargarlos, laspalabras claves ref y out son las que nos permiten que un método retorne más de unvalor al método que lo invoco. La sobrecarga de métodos nos permite que unmétodo se comporte de manera diferente en función al tipo de parametros querecibe y/o del número de argumentos que le acompañan. Ejemplos de sobrecargade métodos:

int i1=2,i2=3; float f1=2.14,f2=5.25;

Descubre miles de cursos como éste en www.mailxmail.com 14

mailxmail - Cursos para compartir lo que sabes

Page 15: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

f loat f1=2.14,f2=5.25;

int suma( int n1, int n2 ) //Método 1 { return n1+n2; }

float suma( float n1, float n2 ) //Método 2 { return n1+n2; }

float suma( int n1, float n2 ) //Método 3 { return n1+n2; }

resultado = suma(i1+i2); //Llamada 1 resultado = suma(f1+f2); //Llamada 2 resultado = suma(i1+f1); //Llamada 3

En este ejemplo en ninguno de los casos ahi perdida de precisión debido a que elmétodo haciendo uso de la sobrecarga se adapta a los parametros que recibe yactúa en consecuencia a ello, es decir si el método suma recibe dos enteros comoen la llamada 1 devuelve un número entero empleando para ello el método 1, sirecibe dos flotantes devuelve un flotante utilizando para ello el método 2 y si recibeprimero un flotante y luego un entero responde utilizando el método 3.

Manejo de Excepciones

C# proporciona soporte integrado para el manejo de excepciones o de una formamás formal situaciones anómalas de funcionamiento, las cuales pueden ocurrir encualquier momento durante la ejecución del programa y son manejadas por elcódigo que se encuentra fuera del flujo normal de control. Todo esto gracias a laspalabras clave try, throw, catch y finally. C# proporciona una solución estructuradatanto a nivel del sistema como de aplicación. A pesar de que es muy similar a C++en cuanto al manejo de excepciones existen varias diferencias, entre ellas que cadaexcepción esta representada por una instancia de un tipo de clase derivado deSystem.Exception. en realidad es algo bastante simple:

try { has esto... si i = 0 throw una excepción }

catch { si fallo has esto... }

finally { haya fallado o no, has esto... }

Descubre miles de cursos como éste en www.mailxmail.com 15

mailxmail - Cursos para compartir lo que sabes

Page 16: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Como se puede apreciar el manejo de excepciones es bastante sencillo y fácil deentender aunque no tengamos mucha experiencia programando, todo aquello quese puso entre las {} del try es un segmento de código en el que puede o nogenerarse un error en tiempo de ejecución(excepción), en caso de que haya habidoun funcionamiento anómalo en el programa(excepción) la ejecución del código entraen el segmento de código catch y ejecuta el bloque de instrucciones que hemosdefinido para manejar ese error, finalmente el flujo del programa haya o no habidoexcepción entra en finally aqui podemos poner rutinas para marcar los objetos queya no se utilizarán de manera que el recolector de basura pueda liberar la memoriaque dichos objetos ocupaban, rutinas que guarden un log de la aplicación para llevarun control de ¿cuántas veces ha fallado?, ¿porqué fallo?, etc., todo bloque try puedetener uno o más catch para tratar cada una de las posibles excepciones, pero laflexibilidad de C# va más alla de eso, ya que nos permite lanzar nuestras propiasexcepciones, por ejemplo si un método no recibe un valor que debe recibir o recibeun valor que no puede procesar podemos lanzar nuestra propia excepción. Ejemplo:

using System;

public class ManejoExcepciones { public static void Main() { try //Le hacemos saber que puede ocurrir un error { string s=null; //Declaramos un string y lo dejamos vacio

if (s == null) //Si el string esta vacio throw(new ExcepcionCadenaVacia()); //Lanzamos un error personalizado Console.WriteLine("Esto nunca se imprime"); //Si ahi error el código sale de laejecución normal //es por eso que esta parte nunca se ejecuta } catch( ExcepcionCadenaVacia e ) //Atrapamos nuestro error { Console.WriteLine("La cadena esta vacia"); //Manejamos el error } finally { Console.WriteLine("Esto siempre se imprime"); //Esto siempre se ejecutará } } }

NOTA IMPORTANTE: El código que se encuentra en los capitulos del curso no essiempre funcional. Para código funcional consulte la sección de ejercicios resueltos.

Descubre miles de cursos como éste en www.mailxmail.com 16

mailxmail - Cursos para compartir lo que sabes

Page 17: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

6. Clases, Objetos, Encapsulacion[http://www.mailxmail.com/curso-c-programacion/clases-objetos-encapsulacion]

Clases

Lo primero que nos viene a la mente cuando leemos esto es ¿Qué es una clase? einmediatamente después de eso nos preguntamos ¿Para qué sirve una clase?, buenouna definición de clase sería que es una representación abstracta de un objeto, peroesto nos deja con bastantes interrogantes, veamoslo en español, je, je, je, un objetopuede ser cualquier cosa, por ejemplo una casa, la clase es la reprentación abstractadel objeto, en este caso serian los planos de la casa, en ellos la casa se verepresentada por completo, ya que en el plano podemos ver que tendrá la casa,donde lo tendrá, como estará hecho, más sin embargo no podemos sentarnos en lasescaleras del plano de la casa porque la casa aún no existe, la clase es solo el planodel que después podremos construir el objeto, más sin embargo una clase por sisola no nos es de utilidad en lo absoluto hasta que la convertimos en un objeto, esdecir no podemos habitar el plano de una casa, necesitamos construirla es decirconstruir el objeto, a dicho proceso de construcciòn se le llama instancia. Ejemplo:

class Casa { decimal Altura; decimal Ancho; decimal Profundidad; string Color; void Entrar(); void Salir(); }

Ahora tenemos un ejemplo mas formal de lo que sería una clase, en este ejemplodeclaramos una clase llamada Casa, una Casa en la vida real tiene diversascaracteristicas o "Atributos", la clase guarda dentro de si tanto los atributos de laCasa como la forma en que se comportara, dicho comportamiento define comoreaccionara ante otras clases. Una vez que se ha definido la clase Casa TODA claseque heredase de ella tendria todas las caracteristicas de nuestra Casa original.

Objetos

Un objeto es la consolidación de una clase, retomando el ejemplo de la casa,deciamos que los planos de la Casa serian la Clase casa, es decir la representaciónabstracta del objeto miCasa, pero para que podamos utilizar la clase Casanecesitamos instanciarla, la instancia es el proceso de construir la Casa. Ejemplo:

class Casa { decimal Altura; decimal Ancho; decimal Profundidad; string Color; void Entrar(); void Salir(); }

Descubre miles de cursos como éste en www.mailxmail.com 17

mailxmail - Cursos para compartir lo que sabes

Page 18: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Tomando como Base la Clase Casa ahora lo que haremos sera declarar miCasa deltipo Casa. Ejemplo: Casa miCasa = new Casa();

Quiza sea un poco dificil de captar al principio, pero en realidad es de lo massencillo, miren toda clase es un tipo de datos es decir, en el mundo real existennumeros no decimales menores a cierto tamaño, bueno en C# se creo una clasellamada int para representarlos de manera abstracta, es por esto que cada quedeclaramos un entero declaramos:

int miNumero = 0; tipo nombre valor

Pero porque usamos new y los (), bueno, porque en el caso de los enteros(int)simplemente contienen un dato y no hacen nada mas son simples contenedores, sinembargo las clases que a nosotros nos interesan y que son las que estaremoscreando deben actuar de distintas maneras, ya sea leyendo bases de datos,actualizando paginas web, realizando operaciones matematicas, etc., es por estoque se utiliza el operador new, eso nos permite mandarle datos a la clase quehemos creado, supongamos que nuestra clase Casa acepta 3 parametros, Nombredel dueño, Precio y Si esta a la venta o no, bueno pues en ese caso podriamosinicializar nuestra casa asi:

Casa miCasa = new Casa("Jorge","$1,408,506","SI");

Estos parametros de entrada provocan que el objeto "reaccione" realizando una seriede acciones, como por ejemplo, publicar la casa en un sitio web de venta de casas,es un ejemplo sencillo, pero que nos da una idea de como reaccionan los objetos.Una caracteristica de los objetos es que presentan siempre 3 caracteristicas:Identidad, Comportamiento y Estado.

+ Identidad: Nos permite distinguir a un objeto de los demás obejtos en la mismaclase, por ejemplo imaginemos que tenemos una casa igual que la de nuestrovecino, como en los conjuntos habitacionales donde todas las casas son iguales enese caso el Número de casa es lo que nos distingue, porque aunque tuvieran elmismo color, los mismos arreglos al frente, etc., 2 casas no pueden tener el mismonumero.

+ Comportamiento: Esto hace utiles a los objetos, ya que los objetos existen parahacer algo, si los objetos no hicieran nada no tendría chiste crearlos, elcomportamiento hace accesible a un objeto, asi mismo los objetos que vienen deuna misma clase comparten el mismo comportamiento, por ejemplo, una Casa esuna Casa porque se puede habitar, un Carro es un Carro porque se puede manejar,etc.

+ Estado: Tiene que ver con el funcionamiento interno de una clase, dichofuncionamiento interno es el que le permite proporcionar su comportamiento. Unobjeto bien diseñado mantiene inaccesible su estado, esto es porque a uno no leinteresa como le hace un objeto para hacer lo que hace, a uno simplemente leinteresa que lo haga.

Para diseñar objetos es importantisimo tomar en cuenta lo siguiente: + Decidir lo que es importante y lo que no, es decir, enfocarse en lo que esimportante y depender sólo de ello. + Ignorar lo que no es importante y no depender de ello, basandonos en el principiode Dependencia mínima

Descubre miles de cursos como éste en www.mailxmail.com 18

mailxmail - Cursos para compartir lo que sabes

Page 19: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

+ Utilizar la Encapsulación para aplicar la Abstracción.

Es fácil quedar abrumado ante la inmensa cantidad de atributos y comportamientosque puede tener un objeto es por ello que es de vital importancia concentrarse tansolo en aquello que es importante, si en los planos se incluyeran detalles de dondepondrá la lavadora, la t.v., donde encadenará al perro, donde estará el clavo parasujetar su reloj, etc., sería increiblemente tedioso y abrumador el representarlo, espor esto que solo se debe uno concentrar en los detalles que REALMENTE importan,a eso se le llama abstracción. La abstracción es una técnica que nos permite quitarlea un objeto todos aquellos comportamientos que son innecesarios hasta que elobjeto solo tiene dentro de si aquellos comportamientos que son esenciales para sufuncionamiento, una buena abstracción elimina todos los detalles poco importantesy le permite enfocarse y concentrarse SOLO en los detalles importantes. Debemosrecordar que un objeto deberá siempre aplicar el concepto de Dependencia mínimapor motivos de encapsulación la dependencia mínima permite que las cosascomplejas sean simples, esto se logra al ocultar los aspectos no esenciales de unaclase, estos aspectos una vez ocultados, no se pueden ver ni utilizar.

Encapsulación

+ Combinar datos y métodos en una entidad única + Controlar el acceso a los datos y los métodos - Público Accesible desde fuera - Privado Accesible solo desde adentro

Pero ¿Porqué es útil encapsular?, sencillo, la encapsulación minimiza el impacto, esdecir si algún día nos vemos en la necesidad de actualizar algunas clases de nuestroprograma, entre menos dependamos de una clase menos impacto tendrá el hechode que se cambie, así mismo nos permité esconder los detalles de implementaciónde nuestro programa, lo que aumenta su resistencia a ataques, esto debido a que aldeclarar metodos y/o variables como privadas las ocultamos y dejan de ser visiblespara las demas clases.

Creación de una Clase Sencilla

class Persona { public int Edad; public string Nombre; private string Direccion; }

Lo que hacemos es declarar dos variables publicas que pueden ser accedidas sinproblemas desde el exterior y una variable privada que solo puede ser utilizada pormiembros de la clase, ahora para utilizar nuestra clase persona necesitamos crearuna persona: Persona Alejandro = new Persona(); //Acabo de nacer, ¿como ven?, je, je, je Alejandro.Edad = 22; Alejandro.Nombre = "Alejandro Domingo Velazquez Cruz";

Recordemos que cada objeto se trata por separado, es decir por referencia, locambios que realicemos a cualquier otra persona que creemos no afectaran aAlejandro, por ejemplo: Persona Carmen = new Persona(); Carmen.Edad = 21;

Descubre miles de cursos como éste en www.mailxmail.com 19

mailxmail - Cursos para compartir lo que sabes

Page 20: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Carmen.Nombre = "María del Carmen Lopez Villegas";

Alejandro.Nombre sigue siendo Alejandro Domingo Velazquez Cruz yCarmen.Nombre es María del Carmen Lopez Villegas y los cambios que realicemos acualquiera de ellos no afectan al otro en lo absoluto. Ahora veamos si nosotrospusieramos algo así: Alejandro.Direccion = "Norte 5";

El compilador marcaría error, ya que esa variable solo puede ser accedida desdeadentro de la clase, ya sea por medio de algún método público o declarando unatributo público para permitir el acceso a ese dato, es decir, nosotros sabemos queexiste la variable porque nosotros hemos hecho la clase, pero sin embargo no sepuede acceder a esa variable, ni siquiera sabiendo que existe, a esto se le llamaocultamiento, ya que la variable queda "oculta" a las demás clases, podemos ocultartanto variables como métodos e inclusive se pueden ocultar clases. Por últimohemos aprendido a crear objetos, pero y ¿Comó destruirlos?, bueno C# hace uso dela recuperación automatica de memoría gracias a su Recolector de Basura, lo másque podemos hacer es marcar un objeto para indicar que ya puede ser recolectado,esto generalmente no es necesario, ya que el Recolector de Basura detecta cuandoun objeto ya no está siendo utilizado porque no ahi ningún otro objeto que tenga sudirección, pero eso lo veremos después.

Descubre miles de cursos como éste en www.mailxmail.com 20

mailxmail - Cursos para compartir lo que sabes

Page 21: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

7. Miembros estáticos y miembros de instancia[http://www.mailxmail.com/curso-c-programacion/miembros-estaticos-miembros-instancia]

Miembros estáticos versus instancias

+ Los miembros estáticos los comparten todas las instancias de una clase + Los miembros de instancia pertenecen a instancias específicas de una clase

Es decir cuando declaramos una variable estática todos los objetos creados a partir deesa clase tendrán esa variable en común esto es útil por ejemplo en los sistemasbancarios, no es practico ni comodo el hecho de que cada objeto almacene el tipo decambio es más practico que se declare estático y sea compartido por todos losobjetos, ya que el tipo de cambio es el mismo para todos ellos, ejemplo:

class Cliente { static decimal tipoCambio; }

Esto quiere decir que en lugar de declarar la variable tipoCambio a nivel de objeto laestamos declarando a nivel de clase, en un lenguaje estructurado esto lo convertiríaen una variable global, con sus respectivas ventajas y desventajas, que es accesible atodos, pero a cambio una variable global no puede ser encapsulada, sin embargo loslenguajes orientados a objetos no permiten las variables globales, sin embargo tienenlo que se conoce como variables estáticas. Los datos estáticos se declaran dentro declase beneficiandose de la encapsulación de la clase, pero están asociados con laclase misma y no con cada objeto, es decir que aunque nunca se genere un objetoesa variable ocupará espacio. Puede haber tanto variables como métodos estáticos yson compartidos por todas las instancias de la clase, es decir, son comunes a todoslos objetos generados a partir de dicha clase. Ahi que tomar en cuenta algo muyimportante Cuando un método se declara estático, dicho método SOLO es accesible atravéz de la clase y no a travéz de las instancias de la clase los métodos estáticossolo pueden ser accesados por los datos estáticos y por otros métodos estáticos,además debido a que son parte de la clase pueden ser accesados sin crear unainstancia de la misma. En C# no se puede acceder a un método estático desde unainstancia.

public class Cliente { public string nombreCliente; public void consultaNombreCliente() { Console.WriteLine(nombreCliente); } public static string nombreBanco; public static void consultaNombreBanco() { Console.WriteLine(nombreBanco); } } Cliente miCliente = new Cliente(); miCliente.nombreCliente = "Alejandro Velazquez"; //Definó el nombre del cliente

Descubre miles de cursos como éste en www.mailxmail.com 21

mailxmail - Cursos para compartir lo que sabes

Page 22: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

miCliente.consultaNombreCliente(); //Esto imprimirá el nombre del cliente Cliente.nombreBanco = "BANAMEX"; //Definó el nombre del banco Cliente.consultaNombreBanco(); //Esto imprimirá el nombre del banco

El nombre del banco y la consulta al nombre del banco se realizan directamente atravéz de la clase, no pueden realizarse a travéz de las instancias de la clase, estodebido a que son variables estáticas, sin embargo el nombre del cliente y la consultaal nombre del cliente se realizan a travéz de las instancias de la clase, esto esespecialmente útil debido a que en este ejemplo el nombre del banco es algo comúna todos los clientes, porque todos son clientes del mismo banco, sin embargo, cadacliente tiene su propio nombre, así que lo que hicimos es declarar el nombre delbanco y la consulta al nombre del banco estáticas con esto el dato se guarda unaúnica vez en la clase y solo puede ser accedida a travéz de la clase, así mismodeclaramos normalmente el nombre del cliente y la consulta al nombre del cliente yaque cada que creemos un objeto cliente será una persona diferente con un nombrediferente y por lo tanto el valor del campo cambiará en cada instancia.

Ahora veamos, hemos visto distintas formas de encapsular y manipular los datos,pero ¿Qué pasa si necesitamos acceder a un método o dato privado desde afuera?,bueno para eso existen las propiedades y son realmente utiles, las propiedades nospermiten manipular datos privados desde afuera de la clase, ejemplo:

class Persona { public string nombreCompleto() { Console.WriteLine(Nombre+" "+Apellido); } public string nombre { get{ return Nombre; } set{ Nombre = value ; } } public string apellido { get{ return Apellido; } set{ Apellido = value; } } private string Nombre,Apellido; }

En este ejemplo se declaran dos variables privadas, Nombre y Apellido siintentaramos acceder a dichas variables desde el exterior de la siguiente manera:

Persona Alejandro = new Persona(); //Ja, ja, ja he vuelto a nacer... ;-) Alejandro.Nombre = "Alejandro"; Alejandro.Apellido = "Velazquez";

Esto nos marcaría un error ya que dichos datos han sido declarados como privados ypor tanto son invisibles desde afuera de la clase, lo que podemos hacer en cambio esaccederlos a travéz de propiedades de la siguiente manera:

Alejandro.nombre = "Alejandro"; Alejandro.apellido = "Velazquez"; Alejandro.nombreCompleto();

Descubre miles de cursos como éste en www.mailxmail.com 22

mailxmail - Cursos para compartir lo que sabes

Page 23: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

El ejemplo se ve muy similar al anterior, pero ahí una sútil diferencia.

public string nombre //El nombre de la propiedad se parece al de la variable, solocambia la primera letra, esto la hace fácil de recordar { get{ return Nombre; } //get nos permite recuperar el valor de la variable privada set{ Nombre = value ; } //set nos permite modificar el valor de la variable privada }

La propiedad llamada nombre nos permite modificar el valor de la variable privadallamada Nombre, pero va mas alla de eso, gracias a las propiedades podemos validarlos datos y asegurarnos que son confiables antes de volcarlos sobre nuestrasvariables privadas y viceversa, asegurarnos que va a recibir el valor de la variableprivada alguien que nosotros queremos que reciba el valor de la variable privada.Además las propiedades nos ayudan a proporcionar encapsulación. Ejemplo:

class Persona { public string nombreCompleto() { Console.WriteLine(Nombre+" "+Apellido); } public int edad { get { return Edad; } set { if( 0 < value && value < 100) //validamos que sea una Edad valida de acuerdo anuestro criterio Edad = value; //De ser asi modificamos el valor de la variable privada } } public string nombre { get{ return Nombre; } set{ Nombre = value ; } } public string apellido { get{ return Apellido; } set{ Apellido = value; } } private int Edad; private string Nombre,Apellido; }

Utilizando el ejemplo anterior hemos agregado una variable nueva llamada Edad detipo entero, ya que las edades no pueden ser negativas y como estamos asumiendoque ninguno de es casi imposible que nos topermos con una persona de 100 o masaños, pues condicionamos la propiedad para que solo acepte valores enteros que

Descubre miles de cursos como éste en www.mailxmail.com 23

mailxmail - Cursos para compartir lo que sabes

Page 24: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

sean mayores que 0 y menores que 100, esta es un sencillo ejemplo de como utilizarlas propiedades para validar las entradas suministradas por el usuario, esto essumamente útil ya que nos ahorra muchos errores en tiempo de ejecución, así mismonos permite tener una aplicación más segura.

Descubre miles de cursos como éste en www.mailxmail.com 24

mailxmail - Cursos para compartir lo que sabes

Page 25: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

8. Modificadores de alcance, Constructores y Destructores[http://www.mailxmail.com/...o-c-programacion/modificadores-alcance-constructores-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 yson:

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 derivadosde 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 deacceso 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 paraacceder a dichos valores, NO DECLARE COMO PUBLICA UNA VARIABLE A MENOS QUE SEAE-S-T-R-I-C-T-A-M-E-N-T-E necesario. Para los efectos del curso se tratarán las variablesde una manera no completamente segura por razones de legibilidad del código, pero unavez que obtengan más experiencia deben evitarlo.

Constructores y Destructores

Los constructores nos permiten inicializar la memoria y convertirla en un objeto listo parausarse, 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

Descubre miles de cursos como éste en www.mailxmail.com 25

mailxmail - Cursos para compartir lo que sabes

Page 26: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

No siempre es recomendable el utilizar el constructor predeterminado, por ejemplo, nosiempre es bueno el hecho de que el acceso sea público o quizás sea un problema el hechode 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 losconstructores son tipos especiales de métodos eso no implica que no puedan sersobrecargados.

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 claseespecifíca, imaginemos que desea crear una clase que provea cierta funcionalidad, pero nodesea que los usuarios de esa clase puedan crear objetos con base en ella, bueno en estecaso ponemos metodos y variables estáticas dentro de la clase, en este caso ya no esnecesario crear instancias de la clase (objetos), sin embargo el constructor predeteminadoes public por predeterminación, lo cual implica que SI se pueden crear instancias de esaclase, 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 laaccesibilidad del constructor haciendolo private impidiendo que se creen instancias de laclase. Al declarar un constructor C# no generará ningún constructor y al hacerlo privadoevita que se creen instancias de esa clase.

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

Destructores y Terminadores

Provocan que las acciones finales de los objetos sean diferentes y no pueden serdeterminadas 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á alDestructor antes de reclamar la memoria binaria, en C# no se puede llamar o sobrescribirObject.Finalize. Un destructor es un mecanismo de limpieza de memoria.

Descubre miles de cursos como éste en www.mailxmail.com 26

mailxmail - Cursos para compartir lo que sabes

Page 27: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

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 laclase cuenta con uno el será invocado antes de reciclar la memoría a la pila. Lasinstrucciones 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/ocancelado, se deberá colocar código para que sea ejecutado durante la finalización dentrode 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étodoFinalize 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; }

Visita más cursos como este en mailxmail:[http://www.mailxmail.com/cursos-informatica][http://www.mailxmail.com/cursos-programacion]

¡Tu opinión cuenta! Lee todas las opiniones de este curso y déjanos la tuya:[http://www.mailxmail.com/curso-c-programacion/opiniones]

Cursos similares

Cursos Valoración Alumnos Vídeo

Descubre miles de cursos como éste en www.mailxmail.com 27

mailxmail - Cursos para compartir lo que sabes

Page 28: C# Curso de Programación - imagenes.mailxmail.comimagenes.mailxmail.com/cursos/pdf/3/c-programacion-7063.pdf · Curso Básico de programación en C#, este curso básico abarcará

Generadores de códigoNecesitamos construir proyectos en menor tiempo, con calidad y utilizandometodologias actuales, por eso te proponemos una serie de consejos, normasy cualidades de est... [24 /01/06]

2.675  

Programación de aplicaciones XML/XSLcon Python y JavaUn código para la programación de aplicaciones en XML/XSL en Python yJava... [05 /05/05]

3.193  

Programación de juegos para móviles conJ2MEHoy en día se pueden realizar infinidad de cosas con el móvil. Desde latradicional llamada telefónica hasta conectarse a Internet. Sin embargo, unade las más divertidas... [07 /09/04]

18.385  

PHP y MySQL. Aplicaciones Web(undécima parte)Programación de aplicaciones Web con PHP y MySQL. Ahora te capacitamospara entender el funcionamiento en Internet de una tienda online. Aprenderás... [02 /12/08]

1.367  

PHP y MySQL. Aplicaciones Web: PHP ybase de datos MySQL (décima parte)Programación de aplicaciones Web con PHP y MySQL. Ahora te enseñaremos aconectar a una Base de Datos desde la Web con PHP. Conoce las funciones PHPpara... [02 /12/08]

2.071  

Descubre miles de cursos como éste en www.mailxmail.com 28

mailxmail - Cursos para compartir lo que sabes