Está en la página 1de 65

Programacin .

NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Ingeniera en Desarrollo de Software 8 Cuatrimestre

Programa de la asignatura: Programacin .NET II

Unidad 3. Manipulacin de errores y conjuntos de objetos

Clave: 150930934

Universidad Abierta y a Distancia de Mxico UnADM

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

ndice
Unidad 3. Manipulacin de errores y conjuntos de objetos ................................................ 3 Presentacin de la unidad ................................................................................................. 3 Propsitos.......................................................................................................................... 4 Competencia especfica..................................................................................................... 4 3.1. Control de errores en CSharp ..................................................................................... 4 3.1.1. Uso de los comandos para el control de errores: try, catch ................................. 5 3.1.2. Desarrollo de controles de errores personalizados ................................................ 20 Actividad 1. La crisis del software .................................................................................... 25 Actividad 2. Manejo seguro de un objeto ......................................................................... 26 3.2. Conjunto de objetos .................................................................................................. 27 3.2.1. Arreglos ................................................................................................................. 28 Actividad 3. Conjuntos de objetos mediante arreglos en C Sharp .................................... 40 3.2.2. Colecciones ........................................................................................................... 41 Actividad 4. Conjuntos de objetos mediante colecciones en C Sharp .............................. 59 Autoevaluacin ................................................................................................................ 60 Evidencia de aprendizaje. Control de errores en grupo de objetos en C Sharp................ 60 Para saber ms ............................................................................................................... 62 Fuentes de consulta ........................................................................................................ 62

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Unidad 3. Manipulacin de errores y conjuntos de objetos Presentacin de la unidad


Bienvenido a la nueva unidad de programacin en .Net.II. En esta Unidad III Manipulacin de errores y conjuntos de objetos en el lenguaje de programacin CSharp aprenders conceptos fundamentales de la programacin orientada a objetos con un enfoque de utilizacin del lenguaje CSharp. Buscar errores y manejarlos adecuadamente es un principio fundamental para disear software correctamente, (Ferguson, 2005), en teora cuando se escribe un cdigo se pretende que todo est correctamente escrito y funcione. En el mundo real esto raramente es cierto. Es ms, algunos errores no son previstos ni controlados en el momento de programar por ejemplo si la conexin de red se interrumpe los servidores de bases de datos dejan de funcionar y los archivos de disco pueden no contar con los contenidos que las aplicaciones consideran que contienen. Esto tambin debe ser controlado y tratar de no dejar al usuario final con una aplicacin detenida sin ninguna informacin acerca de qu hacer en ciertos casos (como por ejemplo una clsica pantalla azul cuando una aplicacin entra en una situacin no controlada). Es importante revisar este tema porque permitir controlar programas ante situacin inesperadas. En la segunda parte de la unidad se revisar el tema de tablas, vectores, matrices o array (que algunos autores traducen por "arreglo") que son un conjunto de elementos, todos los cuales son del mismo tipo. Estos elementos tendrn todos ellos el mismo nombre, y ocuparn un espacio contiguo en la memoria de la computadora. La trascendencia de este tema es el aprender a manipular un conjunto de objetos con un mismo nombre lo que permite el poder referirse a varios elementos semejantes, que contengan informacin diferente. Si se planteara esa situacin con los conocimientos actuales de .NET sera necesario crear una variable con nombre diferente por cada dato que se necesitara. Se concluir esta parte trabajando con colecciones que es el siguiente paso de los arreglos donde es posible guardar con un mismo nombre un conjunto de objetos diferentes (de diferentes tipos) y adems en donde no es necesario especificar un tamao fijo. Estos dos conceptos: errores y conjunto de objetos, te sern de gran utilidad en el desarrollo de tu carrera, preparndote con esta ltima unidad a la finalizacin del curso de programacin de .NET II y alistndote para el siguiente curso de programacin.NET III

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Propsitos
Al finalizar el estudio de esta unidad podrs: Entender el concepto de manejo de errores utilizando la tcnica de excepcin. Programar tus propias excepciones para el manejo de errores muy personales. Entender el concepto de arreglos y la forma de construirlos dentro de CSharp. Manejar los mtodos que se necesitan para manipular un conjunto de objetos. Definir y comprender la utilidad de las colecciones.

Competencia especfica
Crear aplicaciones estables controlando los estados no esperados utilizando el control de errores de la plataforma .NET y su manipulacin en grupos de objetos empleando la herramienta de colecciones.

3.1. Control de errores en CSharp


La herramienta de .Net que se utiliza para el control de errores en tiempo de ejecucin es el Common Language Runtime (Entorno en Tiempo de Ejecucin de Lenguaje Comn, por sus siglas en ingls Common Language Runtime CLR), uno de los principales objetivos del Common Language Runtime .NET respecto a los errores en tiempo de ejecucin, se aplica bien para evitarlos (como la gestin automtica de la memoria) o al menos capturarlos en tiempo de ejecucin (como por ejemplo mediante un sistema fuertemente tipado) (Archer,2010). Aun as algunos errores que slo pueden ser capturados en tiempo de ejecucin, para estos errores de tiempo de ejecucin existe un mecanismo llamado excepciones. Las excepciones son el procedimiento recomendado en la plataforma .NET para controlar los errores que se produzcan durante la ejecucin de las aplicaciones (divisiones por cero, lectura de archivos no disponibles, datos incorrectamente teclados, etctera). Esto es una diferencia respecto a su implementacin en otros lenguajes como el caso de C++ tradicional, lo que proporciona una cierta homogeneidad, consistencia y sencillez, entre los diferentes lenguajes que componen la plataforma .NET. Tradicionalmente, el sistema que en otros lenguajes y plataformas se ha venido usando para informar estos errores consistan simplemente en hacer que los mtodos en cuya ejecucin pudiesen producirse devolvieran cdigos que informasen sobre si se han

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

ejecutado correctamente o, en caso contrario, sobre cul fue el error producido, (Gonzlez, s.f.) Una excepcin en el mbito de la programacin (recordemos que las excepciones son un control de errores utilizados por todos los lenguajes actuales de programacin), se define como cualquier condicin de error o comportamiento inesperado que se ha detectado en un programa en ejecucin, la podemos encontrar en la base de conocimientos de Microsoft (MSDN, 2013 f): Las excepciones proporcionan principalmente las dos siguientes ventajas novedosas frente al anterior mtodo de capturar errores en los lenguajes de programacin. Claridad: El uso de cdigos especiales para informar de error suele dificultar la legibilidad de la fuente en tanto que se mezclan las instrucciones propias de la lgica del mismo con las instrucciones propias del tratamiento de los errores que pudiesen producirse durante su ejecucin. Ms informacin: A partir del valor de un cdigo de error puede ser difcil deducir las causas del mismo y conseguirlo, muchas veces implica el tener que consultar la documentacin proporcionada por el fabricante sobre el mtodo que lo provoc y que puede incluso que no especifique claramente su causa. Por el contrario, una excepcin es un objeto que cuenta con campos que describen las causas del error y a cuyo tipo suele drsele un nombre que resuma claramente su causa, el nombre est indicado por las clases que definen el framework.

Por estas ventajas, en la actualidad la mayora de los lenguajes manejan sus errores siguiendo esta caracterstica. A continuacin se abordarn los temas acerca de cmo manejar esta tecnologa de control de errores.

3.1.1. Uso de los comandos para el control de errores: try, catch


El manejo de las excepciones se conforma de tres comandos que consisten en las palabras reservadas: try, catch y finally, (Archer, 2010). La base de conocimiento de Microsoft (MSDN, 2013 m) define el uso de los comandos try, catch y finally de la siguiente manera: consiste en obtener y utilizar recursos en un bloque try, tratar circunstancias excepcionales en el bloque catch y liberar los recursos en el bloque finally, esto se puede explicar de una manera sencilla en el siguiente diagrama:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Bloque try { En este bloque se escribe el cdigo que debe ser controlado respecto a o en relacin a los errores en tiempo de ejecucin. Por ejemplo: } A = B / C;

Bloque catch { En este bloque se escribe el cdigo que se ejecutar cuando se produzca un error en el bloque try. Por ejemplo: Console.WriteLine(Error la variable C no puede ser 0);

} Bloque finally { En esta parte se escribe el cdigo que se ejecutar indistintamente se produzca un error o no en el bloque catch. Por ejemplo: Console.WriteLine(El cdigo continua ejecutndose); } Se deben respetar las siguientes reglas en cuanto al uso de comandos para el control de errores: 1.- Slo puede haber un bloque try. 2.- Al menos deber existir un bloque catch por cada bloque try, pero puede haber ms de uno para controlar diferentes errores. 3.- El bloque finally es opcional, se puede o no incluir segn las necesidades del objeto. Por ejemplo: cuando se manejan bases de datos es necesario cerrarlas exista o no un

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

error en los procesos de operacin de la informacin. El bloque finally en estas situaciones es sumamente til. La forma en que funcionan estos bloques es sencilla y directa. Cuando una instruccin fracasa en su objetivo y no puede continuar esto significa que se detecta una situacin excepcional-, devuelve un objeto excepcin. Este objeto excepcin deber ser capturado (cachado), por el bloque catch en donde se decide qu accin se debe tomar es decir el manejo que se debe hacer del error, o la forma en que se abordar el error. Es necesario especificar qu tipo de errores (excepciones), se espera que ocurran para ser capturados. A continuacin se expone un ejemplo simple para entender esto. Se plantea la siguiente situacin: En un proyecto de desarrollo de un objeto, es necesario leer un nmero entero desde el teclado y guardarlo en una variable de tipo int. Esto de una manera sencilla se puede realizar con el siguiente cdigo.

Si se ejecuta el programa escribiendo un nmero 3 cuando la aplicacin lo solicite, la salida es el siguiente nmero: Escribe un nmero entero: 3 El nmero escrito fue: 3

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Se puede argumentar lo siguiente este programa se ejecuta correctamente, infiriendo por lo tanto que es un programa correctamente escrito. Siguiendo con la situacin propuesta se plantea que el usuario no escriba un nmero sino la palabra Hola. A continuacin se expone lo que ocurre con el programa. El programa se detiene de forma inesperada enviando la siguiente ventana:

Ejemplo de ejecucin incorrecta del programa (Elaboracin del autor: Manuel Panzi Utrera). Ahora se puede argumentar lo siguiente: el programa se ejecuta de forma incorrecta, infiriendo por lo tanto que es un programa incorrectamente escrito. Realmente en este caso no se refiere a un programa escrito de forma correcta o incorrecta es un programa que debe ser lo suficientemente desarrollado como para poder controlar situaciones inesperadas (y en este caso completamente fuera del control del desarrollador, un programa no puede forzar a un usuario del programa que escriba de forma correcta lo que se le solicita). Este tipo de problemas deben ser analizados con ms detalle por el desarrollador porque posiblemente algunas de las capturas del usuario final sean malintencionadas por ejemplo: el hecho de escribir palabras en lugar de nmeros, pero en ocasiones pueden tratarse de errores de percepcin por ejemplo en lugar de escribir 30 escribimos 3O (3 y la letra o), si se ejecuta de esta forma el error es el mismo, es decir, es un error de captura aun cuando no haya sido con mala intencin. Es labor importante del desarrollador controlar este tipo de errores evitando que el programa se detenga de forma inesperada sino por el contrario deber proporcionar una

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

serie de opciones para que el programa se autocontrole y si debe terminar esto lo realice de forma controlada o como dicen algunos autores, de forma limpia (Ferguson, 2005) En el caso ejemplo se deben colocar estas instrucciones entre bloques try y catch para que controlen de forma adecuada las acciones de escribir un nmero en formato inadecuado y no esperar que el programa se detenga inesperadamente. Aqu es necesario enfatizar o reparar en un cuestionamiento importante: Qu tipo de error se espera? Eso se puede ver en la parte superior de la pantalla que se muestra en la figura anterior.

En este caso se espera un error del tipo FormatException, que se puede traducir como Exception por un mal formato, este se puede controlar, si se re-escribe el programa de la siguiente manera:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Si se ejecuta el programa y se escribe la palabra hola la salida ser la siguiente: Escribe un nmero entero: hola Escribiste el dato 'hola' no es un nmero Sin aparecer la pantalla de error. Pero si el programa se ejecutara tecleando el nmero 3 la salida sera la siguiente, misma que se observ anteriormente: Escribe un nmero entero: 3 El nmero escrito fue: 3 Se puede observar que en el programa se han agregado 2 bloques al re-escribir el cdigo despus de identificado el error Exception por un mal formato: La parte try

En ella se escribe el cdigo que puede producir errores en el momento de la ejecucin. El bloque catch

Donde en este caso se enva al usuario un comentario indicando que se produjo un error. Al agregar este control se obtiene un programa que permite al identificar un error, terminar de forma controlada su ejecucin. Se puede observar en el cdigo que la instruccin:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

10

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Recordando la Unidad 1, esta es la instruccin que detiene el programa para poder observar los resultados del mismo (detiene la ejecucin del programa mientras no se presione la tecla [enter], para continuar), se debe ejecutar sin importar lo que ocurra, una manera clara que indicar esto, se muestra en el siguiente programa.

Si se ejecuta esta aplicacin se puede observar que el comportamiento es exactamente igual que el programa anterior pero se ha controlado el error y codificado su operacin de una manera clara y ms acorde con los estndares de .NET El bloque finally es muy utilizado por aplicaciones que deben cerrar aplicaciones de manera correcta independientemente de si se ejecutaron con errores o sin ellos. Un caso tpico es cuando se cierran bases de datos despus de haber operado sobre su informacin contenida.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

11

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Regresando al bloque catch, se observa la instruccin:

Se espera capturar un error del tipo FormatException, en realidad este error ser devuelto en un objeto que se ha llamado fe (el nombre puede ser cualquier nombre vlido de variable en C Sharp, tema revisado en la asignatura Programacin.NET I) una buena prctica de programacin es utilizar las letras maysculas que compongan la excepcin, base de datos de MSDN (2013 g). Este objeto tiene una gran cantidad de mtodos que permite conocer con mucho detalle el error que se produjo, en qu parte del programa apareci, etc. Siempre se debe capturar el objeto que contiene informacin del error aunque como en este caso, no se utiliza, por ser un ejemplo muy sencillo pero con instrucciones como fe.toString(), se podra contar con una explicacin ms amplia del error. Se ejecuta nuevamente el programa pero en esta ocasin se teclea el nmero 3.1 y se observa el siguiente error: Escribe un nmero entero: 3.1 Escribiste el dato '3.1' no es un nmero Pero si se observa, esto no es un error porque 3.1 s es un nmero, no es un nmero entero pero s es nmero. Se finaliza esta parte concluyendo que la claridad de los mensajes de error y el control de los mismos es entera responsabilidad del desarrollador. Ahora que se cuenta con elementos para tener una mejor y mayor idea del comportamiento de las excepciones en Csharp mediante .NET, es conveniente definir una serie de conceptos importantes para poderlas utilizar eficientemente. Si se tiene un programa que llama a un objeto y el objeto llama a un mtodo y ste lanza una excepcin, se inicia un proceso recursivo esperando primero que el mtodo que lanz la excepcin tenga cdigo para su control, si no lo tiene se espera que el objeto procese la excepcin si este no tiene cdigo para su control, se espera que el programa inicial que llam al objeto controle el problema, si este no tiene cdigo de control el programa se detiene mostrando la ventana de error. A esto se le conoce como propagacin de la excepcin. (Archer, 2010).

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

12

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Esquema de propagacin de excepcin (Elaboracin del autor: Manuel Panzi Utrera) Programa que llama a un objeto

El objeto llama a un mtodo

El mtodo lanza una excepcin

Inicio de un proceso recursivo El mtodo cuenta con cdigo de control Si

Se controla el error

Contina ejecucin

No Si
Contina ejecucin

Se controla el error El objeto cuenta con cdigo de control No

Si El programa cuenta con cdigo de control Se controla el error No El programa se detiene inesperadamente

Contina ejecucin

Fin

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

13

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Las excepciones finalmente son objetos y tienen toda una jerarqua de herencia, existen una gran cantidad de ellas para controlar cualquier situacin inesperada en la ejecucin de un programa. Algunos de estos objetos se pueden observar en el siguiente diagrama: Object

Exception

ExcepcionesPropias

SystemException

IOException

ArithmeticException

ArgumentException

FileNotFoundException

DivideByZeroException

ArgumentNullException

Diagrama realizado a partir de la jerarqua indicada en: (MSDN, 2013 i) Esta jerarqua no se muestra de forma completa slo muestra de una forma muy simplificada la complejidad de los objetos que se pueden recuperar en la instruccin catch, A continuacin se seala una indicacin importante: Indica que son excepciones creadas por quien realiza el objeto y pueden ser desarrolladas a partir de cualquier punto de la jerarqua. Slo por ejemplificar se est heredando de Exception. En el siguiente punto se tratar este tema con ms profundidad.

ExcepcionesPropias

Por otra parte, es recomendable que todas las instrucciones del tipo IO (input/output) sobre los medios de recursos de hardware (disco duro, memorias usb, impresoras, etc.), deben ser utilizadas entre los bloques try y catch (Michaellis, 2010).

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

14

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

A continuacin se expone un ejemplo sencillo para ejemplificar este proceso: se desarrollar un programa que escriba en un archivo de texto en el disco C:, en el directorio puntonet llamado informacin.txt, la palabra HOLA. Esto se muestra a continuacin.

Si se ejecuta el programa es posible darse cuenta de que en el directorio (se debe crear como un primer paso), existe un archivo llamado temp.txt y contiene la palabra HOLA. Este programa se puede ejecutar sin los bloques try y catch, pero siguiendo la recomendacin de los autores es conveniente utilizar esta sintaxis que otorga una mayor seguridad en la funcionalidad. Si se borra del disco duro el directorio puntonet y se ejecuta el programa. Se observar el siguiente error: System.IO.DirectoryNotFoundException: No se puede encontrar una parte de la ruta de acceso 'c:\puntonet\temp.txt'. en System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) en System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

15

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea n useLongPath, Boolean checkHost) en System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) en EscribirArchivo.Program.Main(String[] args) en c:\WorkSpaceVisualStudio\Un iversidad UnNAD\EscribirArchivo\EscribirArchivo\Program.cs:lnea 12 Se observa que se ha producido una excepcin en particular: DirectoryNotFoundException, se puede traducir como Error: el directorio no fue encontrado. Esto lleva a la conclusin que se espera capturar un error muy general (IOExcepcion = Excepcin en general de entrada y salida), y se debe ser ms especfico (DirectoryNotFoundException = Excepcin al no encontrase el directorio). Al modificar el programa de la siguiente manera.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

16

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Al ejecutar programa se podr observar que ahora el error que aparece es: Error: Debes crear primero el directorio. Tambin se observar en el cdigo que se cuenta con dos salidas para el error. La primera es para un error muy especfico de la no existencia del directorio donde se crear el archivo y el segundo muy general para cualquier tipo de error producido en el momento en el que se est ingresando al disco duro. Este orden es muy importante. Cuando una instruccin try tiene varios catch estos deben ser ordenados desde errores muy especficos hacia errores ms generales. Si se cambia el orden de las instrucciones catch de la forma en como se indica en el siguiente cdigo:

Se observar un error indicado por el compilador donde sealar que: una clausula catch previa ya detecta todas las excepciones de este tipo o de tipo superior. Segn lo indica Ferguson (2005), Los catch deben ser ordenados de la captura del error ms especfico al error ms general. Regresando al cdigo de la representacin anterior y ejecutar de nuevo el programa para que se cree el archivo de texto. Se quitar el permiso de escritura sobre ese archivo. Esto no es un tema de programacin pero el proceso es muy sencillo, y permite ejemplificar la captura de otros errores en CSharp. Si se realizan los siguientes pasos:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

17

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

1.-Entrar a la ventana de comandos de MS-DOS y escribir la siguiente instruccin: C:\windows\system32\attrib c:\puntonet\temp.txt +r 2.-Al regresar al programa y ejecutarlo se observar que aparece una ventana con el siguiente error:

Error de acceso de ruta. (Elaboracin del autor: Manuel Panzi Utrera). Se observa que se cuenta con una nueva excepcin que no se ha controlado y salta a las dos instrucciones catch. Esta nueva excepcin es de un nuevo tipo, son excepciones de control de seguridad impuestas por el sistema operativo para asegurar que no se daarn archivos en el sistema. Estas excepciones de seguridad pertenecen a las credenciales (as se llaman los permisos) que proporcionan la clave del usuario por medio del cual se ingresa al sistema Windows. Su control se muestra en el siguiente cdigo.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

18

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

El compilador ayuda a colocar la excepcin en el punto adecuado, marcando un error si se pone en otro lugar. Se finaliza este tema slo resaltando la importancia de controlar el flujo sin errores de un programa, lo que permitir que la aplicacin se mantenga estable cuando los usuarios de manera intencional o no, introduzcan datos errneos. Finalmente no olvides desde la ventana de ms-dos ejecutar el siguiente comando para permitir que se escriba sobre el archivo: C:\windows\system32\attrib c:\puntonet\temp.txt -r

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

19

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

3.1.2. Desarrollo de controles de errores personalizados


Como se observ en el tema anterior el control de situaciones no esperadas (errores), es de suma importancia en el desarrollo de software confiable pues, permitir confiar la ejecucin de un programa no slo al manejo seguro de la informacin sino incluso dejarlo a cargo de tareas consideradas crticas como se vio en la actividad 1, donde los programas controlan equipos mdicos o las actuales computadoras que controlan los vehculos de la actualidad. En C Sharp ese control de errores llamado ms exactamente control de excepciones, est controlado como se observ, por los comandos: try, catch y finally. Igualmente como se coment en el tema anterior, existen dos categoras de excepciones bajo la clase Exception, en CSharp: Las predefinidas del entorno de ejecucin (Common Language Runtime, CLR) y son derivadas de System.Exception, y las definidas por el usuario en la aplicacin. Existen decenas de excepciones que pueden ser controladas desde CSharp predefinidas por el CLR y algunas de ellas se muestran en la siguiente lista: Excepcin ArithmeticException DivideByZeroException FileNotFoundException FormatException IndexOutOfRangeException Descripcin Desbordamiento por una operacin aritmtica Error por una divisin por cero El archivo no fue encontrado El formato del dato es incorrecto Se usa un ndice mayor que el tamao de la matriz o coleccin utilizada IOException Errores de entrada y salida de informacin NullReferenceException Se utiliz un dato miembro sin inicializar OverflowException El dato no puede guardar el valor que se le indica OutOfMemoryException Se termin la memoria Listado de algunas excepciones en C Sharp, la lista completa se puede consultar en la base de conocimientos de MSDN (2013 h). En esta breve lista se puede observar el grado control que sobre los errores posibles al programar en CSharp. Aun as en ocasiones puede requerirse la creacin de excepciones propias por dos razones: 1. Se trata de un error nuevo no considerado en las excepciones estndares que proporciona la plataforma .Net 2. Se desea controlar situaciones posibles en la aplicacin siguiendo el estndar de excepciones propuesto por .Net.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

20

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

La primera situacin es un tanto difcil de que ocurra, realmente la biblioteca proporcionada por el lenguaje es muy completa. La segunda es una situacin muy recurrente en la industria de desarrollo de software. Controlar situaciones particulares de las reglas del negocio donde se va a utilizar el programa que se est desarrollando, es decir, las condiciones propias de la funcionalidad de la empresa u organizacin para quien se est desarrollando el programa, por ejemplo: si una aplicacin se ejecutar en una escuela donde la calificacin mnima aprobatoria es de 70, esa es una regla del negocio de esa escuela en particular. Si se desea que los usuarios puedan distinguir, mediante programacin, ciertas condiciones de error de otras, es posible crear sus propias excepciones definidas por el usuario. .NET Framework proporciona una jerarqua de clases de excepcin que, en ltima instancia, derivan de la clase base Exception. Cuando se creen excepciones personalizadas, es recomendable finalizar el nombre de la clase de la excepcin definida por el usuario con la palabra "Excepcin" (MSDN, 2013 e). Se recomienda tambin por Microsoft (MSDN, 2013 e) que si se define una nueva excepcin sta debe implementar 3 constructores. Como se muestra en el ejemplo:

Se observa que se hereda de: ApplicationException, se puede heredar de Exception, pero Microsoft recomienda que la manera correcta es de ApplicationException, porque Exception se produce por la interaccin con el FrameWork .Net pero ApplicationException se produce por la interaccin con un usuario. Esta excepcin supone un medio para establecer diferencias entre excepciones definidas por aplicaciones y excepciones definidas por el sistema, (MSDN, 2013 a).

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

21

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Se debe llamar a estos tres constructores porque ellos estn definidos en la clase padre: ApplicationException, al sobre-escribirlos se est agregando una nueva excepcin a la biblioteca proporcionada por CSharp. Resumiendo las sugerencias que propone Microsoft (Michaellis, 2010) para el desarrollo de excepciones propias son las siguientes: 1. Finaliza el nombre de tu clase personalizada excepcin con el sufijo Exception, por ejemplo: ErrorEnEdadException, SueldoNoEncontradoException, etc. 2. Si la frase est compuesta de varias palabras inicia cada una de ellas con letra mayscula, como se ve en los ejemplos de la sugerencia anterior. 3. La excepcin debe ser serializable (es un proceso de codificacin en donde un objeto se convierte a un conjunto de bytes y se puede almacenar en un medio como el disco duro o la memoria USB). Si se hereda de Exception o de ApplicationException ya no es necesario hacer ese proceso, esto es lo ms recomendable. 4. Se recomienda implementar tres constructores bsicos: el primero sin parmetros, el segundo con un mensaje como parmetro y un tercero con posibilidad de pasar una excepcin interna anidada. Se exponen los conceptos mencionados mediante el siguiente ejemplo: En una empresa se est desarrollando un programa donde uno de los datos a capturar es la edad del trabajador. Esta edad debe estar comprendida entre los18 y los 65 aos que son los valores vlidos autorizados por el IMSS que puede tener una persona para desempearse en un puesto administrativo. Se requiere desarrollar una excepcin que sea lanzada cuando se capture un valor de edad que pase de este rango, en los dos sentidos para valores de edad menores de 18 aos y mayores de 65. Se iniciar llamndola EdadFueraDeRangoException. La excepcin que resolvera este problema se muestra a continuacin.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

22

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

La primera clase EdadFueraDeRangoException, como se puede observar, se hereda de AplicationException. Tambin como se indic en las recomendaciones de Microsoft se implementaron los tres constructores indicados (esto como recordars en la unidad 2 es un concepto de polimorfismo en los constructores).

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

23

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

} La segunda clase program, en su programa principal main, se captura la excepcin EdadFueraDeRango, se puede ver que en la parte try manda a llamar un mtodo leerEdad, este mtodo captura la excepcin del sistema FormatException. En el bloque finally hacemos una revisin de la edad, si esta est fuera del rango indicado por el IMSS lanzamos una excepcin, el comando throw, es el comando propuesto por CSharp para lanzar excepciones. Es posible lanzar una excepcin utilizando cualquiera de los tres constructores. Esto permite personalizar el error generado por esta aplicacin.

Si se requiere integrar a la aplicacin la siguiente modificacin: El IMSS permite que una persona trabaje si tiene ms de 18 aos y menos de 65. Pero por las caractersticas de la empresa en ese puesto la edad permitida debe ser entre 25 y 40 aos. Para integrar esta

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

24

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

modificacin, es posible utilizar esta misma excepcin modificando el lanzamiento de la excepcin con el siguiente cdigo.

Ahora la excepcin se ha vuelto muy general, permitiendo que una misma sirva para capturar diferentes situaciones. Se concluye este tema enfatizando que aunque el sistema de excepciones de C# es una herramienta muy eficiente que permite hasta cierto punto, controlar imprevistos. A pesar de ello, nada puede sustituir a una programacin cuidadosa. El propio Stroustrup (1997) (Bjarne Stroustrup, es un cientfico de la computacin y catedrtico en la Universidad A&M de Texas, desarrollo el lenguaje C++), advierte en su libro: The C++ Programming Language: "Aunque las excepciones se pueden usar para sistematizar el manejo de errores, cuando se adopta este esquema, debe prestarse atencin para que cuando se lance una excepcin no cause ms problemas de los que pretende resolver. Es decir, se debe atender la seguridad de las excepciones. Curiosamente, las consideraciones sobre seguridad del mecanismo de excepciones conducen frecuentemente a un cdigo ms simple y manejable". Resumiendo, adems de tener un mejor control sobre los errores con las excepciones tambin finalmente se tendr un cdigo ms simple.

Actividad 1. La crisis del software


El propsito de esta actividad es que analices un tipo de error mediante un caso y lo relaciones con los conceptos de errores de formato, errores de captura, situaciones inesperadas revisados en este tema. 1. Revisa el planteamiento que te har llegar tu Facilitador (a). 2. Investiga las causas y consecuencias del tipo de error ocurrido. 3. Redacta en media cuartilla un reporte donde menciones el tipo de error ocurrido: de formato, por error de captura o situaciones inesperadas, integrando sus caractersticas y argumentando por qu consideras que representa el tipo

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

25

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

de error mencionado. 4. Guarda la actividad con el nombre DPRN2_U3_A1_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido. 5. Coloca tu trabajo en la opcin de trabajo Base de Datos. 6. Comenta el reporte como mnimo de uno de tus compaeros, respecto a su actividad sobre el tipo de error identificado. Recuerda que tus comentarios no deben ser agresivos sino constructivos *Consulta la rbrica para elaborar el cuadro comparativo que encontrars en el archivo Criterios de evaluacin de las actividades de la Unidad 3 para conocer los parmetros de evaluacin de esta actividad.

Actividad 2. Manejo seguro de un objeto


El propsito de la actividad es que soluciones un problema en donde sea necesario dar seguridad a la ejecucin de un programa en CSharp utilizando excepciones. Para el desarrollo de la actividad tu Facilitador (a) te har llegar un problema y las indicaciones generales, debes asegurarte de que controlas todas las opciones de error para lo cual realizars los siguientes pasos: 1. Construye una clase del tipo que se requiera segn el planteamiento del problema. 2. Integra los datos miembro. 3. Integra propiedades de lectura y escritura para cada dato miembro. 4. Desarrolla un programa que construya objetos, solicite los datos del usuario y utilizando las propiedades del objeto guarde los datos en l. 5. Construye las excepciones necesarias para controlar las reglas del negocio indicadas en el planteamiento. 6. Integra a tu programa el control de las reglas del negocio construidas en el paso anterior.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

26

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

7. Integra un archivo de texto en el cual muestres las capturas de pantalla de cada uno de los pasos de este proceso. 8. Una vez realizado tu programa, empaca todo tu proyecto en un archivo .zip incluyendo el archivo de texto con las capturas de pantalla del procedimiento realizado. 9. Guarda la actividad con el nombre DPRN2_U3_A2_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido. 10. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante la herramienta Tarea. *No olvides, consultar el documento Criterios de evaluacin de las actividades de la Unidad 3 para conocer los parmetros de esta actividad.

3.2. Conjuntos de objetos


El almacenamiento de grupos de elementos de datos relacionados es un requisito bsico de casi todas las aplicaciones de software, este grupo de elementos tambin llamados conjunto de objetos, se pueden guardar en la memoria de la computadora de dos formas principales de almacenarlos son mediante arreglos y colecciones. Es importante este almacenamiento porque un gran porcentaje de nuestras aplicaciones desarrolladas a nivel mundial estn dedicadas al proceso de la informacin donde los conjuntos de objetos que guardan informacin son importantes. Cmo podemos definir a un conjunto de objetos?, recordemos que matemticamente un conjunto es un grupo de elementos, un conjunto de objetos por lo tanto es un grupo de objetos de software similares en caractersticas pero diferentes en su contenido. Un ejemplo sencillo sera: un objeto alumno sera una entidad de software que guarda el nombre, su nmero de control. Un conjunto de objetos alumnos sera una lista de ellos donde se representa su nmero de control y su nombre. En este tema trabajaremos con ambos conceptos mediante la propuesta de CSharp para el manejo de la informacin en conjuntos de datos, como se indic en el tema 3.1. Control

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

27

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

de errores en CSharp, es necesario asegurarse de que el cdigo al ejecutarse capture todos los errores, esto es sumamente importante en relacin con un conjunto de objetos. Contina con este nuevo tema.

3.2.1. Arreglos
Los arreglos son conjuntos de objetos que tienen un mismo tipo y nombre adems de que son controlados por un ndice que los identifica (Deitel & Deitel, 2007). Los arreglos pueden tener cualquier longitud, pueden almacenar miles o millones de datos, pero la condicin es que este tamao se debe decidir al momento de crear el arreglo. Como se coment en la definicin se tiene acceso a cada elemento del arreglo utilizando un ndice, que es un nmero entero que indica la posicin del dato al que se est refiriendo. Imagina los arreglos como una grupo de cajas, cada una de ellas exactamente iguales donde se guardarn datos, esas cajas para poderlas identificar tendrn un nmero que inicia en 0 y termina en un nmero n, a ese nmero se le llamar ndice porque permite identificar cada caja. De igual manera en un arreglo como todos los elementos se llaman iguales solo se identifican con un nmero. Los arreglos pueden almacenar tipos de referencia y tipos de valor. Un tipo de referencia describe el lugar donde est el dato guardado pero no almacena propiamente ese dato, eso almacenar el dato, son los tipos de valor (MSDN, 2013 ). Esto se puede comprender mejor mediante un ejemplo. Visualiza la memoria de tu computadora como un conjunto de celdas contiguas. Si cuentas en una computadora con 2GB de memoria RAM, tendrs 2,147,483,648, celdas numeradas desde la 0 hasta la 2,147,483,647. A cada celda le cabe un byte (un nmero entre 0 y 255). Si se aade que en la celda 2,345,450 guardas un nmero 100. Almacenar una referencia significara guardar el nmero 2,345,450 que es la posicin de una celda, guardar su valor significara guardar el nmero 100 que tiene esa celda. Con lo anterior significa que para guardar una referencia se tienen que realizar dos pasos para descubrir la cantidad que se guarda en ese lugar. 1.- Primero ir a ese nmero de celda y 2.-Despus ver qu nmero guarda esa celda. Guardar un valor significa que se est slo almacenado un dato sin importar en dnde se almacena en la memoria. Los arreglos se clasifican de la siguiente manera:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

28

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

a) Arreglos unidimensionales Es un conjunto de elementos que slo tienen un ndice. Algunos autores les llaman vectores. Se pueden definir de dos maneras la primera se conforma de la siguiente sintaxis (MSDN, 2013 n). Tipo [ ] Nombre; Nombre = new Tipo [numero_de_elementos] ; La segunda forma es la que indica CSharp, la cual permite hacerlo en un nico paso, las dos instrucciones anteriores: Tipo [ ] Nombre = new Tipo[numero_de_elementos] Un ejemplo de definicin de un arreglo de esta manera se muestra a continuacin

Que segn lo anterior es lo mismo a:

Se est definiendo un arreglo utilizando una sola instruccin. Este arreglo de 5 elementos, todos ellos llamados dato, diferenciados por un ndice: dato[0], dato[1], dato[2], dato[3], dato[4]. Los arreglos en C Sharp inician en 0. La segunda forma de definir un arreglo unidimensional es la siguiente: Tipo [ ] dato = new Tipo [ ] { datos . . . } ; Tambin se puede definir de la siguiente manera: Tipo [ ] dato = { datos . . . } ; En este caso el nmero de datos indican el tamao del arreglo. A continuacin se expone un ejemplo de cmo se define esto:

Que sera similar a:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

29

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

En ambos casos se est definiendo un arreglo de cinco elementos llamados todos ellos dato, conteniendo los nmeros: 2, 3, 6, 8, y 2. Esto se puede representar de la siguiente manera: dato[0]=2, dato[1]=3, dato[2]=6, dato[3]=8 y dato[4]=2. En el primer caso slo se est definiendo el arreglo pero todos ellos inicializados con un cero. En el segundo caso tambin se est definiendo un arreglo pero adems inicializado con los valores que estn encerrados entre llaves, nuestros arreglos tendrn un valor iniciar, ambos casos son vlidos en C Sharp. b) Arreglos multidimensionales. Un arreglo multidimensional con dos dimensiones se define como un conjunto de elementos donde para hacer referencia a uno de ellos se debe indicar su fila y la columna donde est situada, segn Trey Nash (2010). Esta caracterstica de tener una fila y una columna se llaman matrices (recordar que en matemticas una matriz es un conjunto de nmeros ordenados en una tabla donde para identificar cada elemento se necesita hacer una referencia a su fila y su columna donde estn situados, esta similitud les asigna este nombre). Conceptualmente, un arreglo multidimensional con dos dimensiones se asemeja a una cuadrcula, tambin es llamada matriz por ser similares a las matrices matemticas. El siguiente ejemplo muestra una matriz de 3 filas y 3 columnas.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

30

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Un arreglo multidimensional con tres dimensiones se asemeja a un cubo. Las dimensiones pueden continuar aunque no se pueden representar de una manera conceptual, (no existen ejemplos en nuestro mundo real donde podamos comparar ms de 3 dimensiones). No existe un lmite para el nmero de dimensiones que pueden ser representadas en arreglos, pero s es conveniente considerar que el incremento de consumo de memoria es exponencial, observa la siguiente tabla, en todas las dimensiones suponemos 10 elementos por dimensin. Dimensiones 1 2 3 4 5 Producto Elementos 10 10 10X10 100 10X10X10 1,000 10X10X10x10 10,000 10X10X10X10x10 100,000 Tabla de dimensiones.

Como se puede observar en la tabla anterior, el nmero de dimensiones aumenta de forma exponencial los registros que se necesitan en memoria, (recordar que finalmente todo dato se representa por un espacio en memoria RAM de la computadora), si aumentamos las dimensiones aumentamos en consumo de este espacio. Respecto a la forma de representacin, un arreglo de dos dimensiones se puede declarar mediante el siguiente formato en CSharp: Tipo [ , ] dato; dato = new Tipo [filas, columnas] o Tipo [ , ] dato = new Tipo [filas, columnas]

Donde filas y columnas son el nmero de elementos que se quieren declarar en el arreglo. Un ejemplo sera:

Que sera equivalente a:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

31

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Si se requiere definir una matriz de 3 filas x 4 columnas, los elementos se representan de esta manera: dato[0,0], dato[0,1], dato[0,2], dato[0,3] dato[1,0], dato[1,1], dato[1,2], dato[1,3] dato[2,0], dato[2,1], dato[2,2], dato[2,3] Tambin se puede declarar de la siguiente manera, el mismo dato: Tipo [ , ] dato = { Datos } Un ejemplo de esto es lo siguiente:

La forma de definir un dato solo es una cuestin de estilos del programador. Para el compilador de C Sharp es indistinto el proceso. Si se define un arreglo de 3 filas por 4 columnas en donde el elemento dato[0,0]=2 y el elemento dato[1,2]=0. En ese mismo sentido es posible definir arreglos de cualquier nmero de dimensiones, recordando que el lmite es el rpido agotamiento de la memoria. Existe el concepto de matriz escalonada, es una variacin del arreglo multidimensional es la matriz escalonada: una matriz de matrices. Una matriz escalonada es una matriz unidimensional y cada elemento en s mismo es una matriz. No es necesario que todas las matrices de elementos sean del mismo tamao (MSDN, 2013 j). Se expone a continuacin un ejemplo de cmo definir esto:

Si se define un arreglo de tres elementos, pero el primero de ellos tiene 5 elementos, el segundo 8 y el tercero 3. A esto se le conoce como una matriz escalonada, y son llamadas as por su similitud al concepto de las matrices escalonadas en matemticas. Se propone un ejemplo, para entender ms estos conceptos: En una situacin especfica por ejemplo una investigacin de corte ambiental, se requiere tomar la presin

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

32

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

baromtrica, la temperatura mxima y la temperatura mnima de 5 ciudades de la repblica mexicana en un da determinado. El grupo de ciudades se muestra en la siguiente tabla: Numero 1 2 3 4 5 Ciudad Mxico, D.F. Puebla, Pue. Xalapa, Ver. Tepic, Nay. Mrida, Yuc.

Se desarrollar un programa que solicite los datos al usuario y despus los muestre en forma de tabla que tenga el siguiente formato:
ndice 1 Ciudad Mxico, D,F; Presin 585 Temp Max. 15 Temp. Min. 29

Y as sucesivamente. El cdigo se muestra a continuacin:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

33

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

34

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Si se ejecuta la aplicacin se obtendr la siguiente salida: Para la ciudad: Mxico, D.F. Cul es su presin baromtrica: 585 Cul es su temperatura mxima: 26 Cul es su temperatura mnima: 19 Para la ciudad: Puebla, Pue. Cul es su presin baromtrica: 593 Cul es su temperatura mxima: 27 Cul es su temperatura mnima: 15 Para la ciudad: Xalapa, Ver. Cul es su presin baromtrica: 862 Cul es su temperatura mxima: 28 Cul es su temperatura mnima: 12 Para la ciudad: Tepic, Nay. Cul es su presin baromtrica: 746 Cul es su temperatura mxima: 32 Cul es su temperatura mnima: 20 Para la ciudad: Mrida, Yuc. Cul es su presin baromtrica: 1016 Cul es su temperatura mxima: 28 Cul es su temperatura mnima: 18 Tabla capturada No. Sucesivo 1 2 3 4 5 Ciudad Mxico D.F. Puebla. Pue. Xalapa, Ver. Tepic. Nay. Mrida, Yuc. Presin 585 593 862 746 1016 Temp. Max. 26 27 28 32 28 Temp. Min. 19 15 12 20 18

Como se observa en este ejemplo es posible manejar arreglos de cualquier tipo, en este caso son doubles y string pero de manera general no existe ninguna limitante para generar arreglos de cualquier tipo, los arreglos representan una informacin a la que finalmente se accede a travs de uno o ms ndices, dependiendo del nmero de dimensiones.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

35

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Qu pasa si se define un arreglo de 3 elementos y se desea acceder el elemento nmero 5? Se plantea esto en el siguiente ejemplo. Se crear un objeto llamado alumno el cual tendr como datos miembro el nombre del alumno y su edad de tipo string e int, respectivamente. Se realizar un constructor que recibir los dos datos y slo se le integrarn 2 propiedades get para recuperar ambos datos. Esto se puede observar en el siguiente cdigo. Al definir la clase alumno con los requerimientos dados en la propuesta se observar el siguiente cdigo.

Se crea el programa que lea los datos de tres alumnos y despus nos permita consultar a uno de ellos solicitando el nmero del alumno y que muestre esa informacin. El cdigo se muestra a continuacin. La primera lnea del programa debe tener la siguiente instruccin, indicando que se utilizarn mtodos de la clase System para leer datos.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

36

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

37

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Si se ejecuta la aplicacin y se da de alta a tres alumnos y se solicitan los datos del ndice 2 y el ndice 1 se obtendr la siguiente salida: Dame el nombre del alumno: 0 MANUEL Dame la edad del alumno: 0 20 Dame el nombre del alumno: 1 JUAN Dame la edad del alumno: 1 35 Dame el nombre del alumno: 2 PEDRO Dame la edad del alumno: 2 25 1.- Mostrar datos de un alumno 2.- Terminar Tu opcin: 1 Escribe el ndice del alumno: 2 El alumno nmero: 2 El nombre es: PEDRO La edad es: 25 1.- Mostrar datos de un alumno 2.- Terminar Tu opcin: 1 Escribe el ndice del alumno: 1 El alumno numero: 1 El nombre es: JUAN La edad es: 35 1.- Mostrar datos de un alumno 2.- Terminar Tu opcin: 2

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

38

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Si con los mismos datos se solicita el ndice 4 es posible observar el siguiente error:

Imagen de una excepcin no controlada por un arreglo fuera de rango (Elaboracin del autor: Manuel Panzi Utrera) Como se revis en el tema 3.1. Control de errores en CSharp, es necesario que se controlen los errores generados al manejar arreglos, existen varias excepciones asociadas con el manejo de esta informacin, una de ellas es IndexOutOfRangeException, generada por solicitar un nmero de ndice mayor a los elementos definidos en la inicializacin del arreglo, que es el caso que se est presentando de error en la superior. Se finalizar este tema revisando el concepto de objeto que tienen los arreglos en cCSharp. Como lo indica la base de conocimientos de Microsoft (MSDN, 2013 ) en C#, los arreglos son realmente objetos. Cuando se define un arreglo de cualquier nmero de dimensiones realmente se est definiendo un objeto que adems de tener datos tendr mtodos que permiten manejar la informacin. El siguiente ejemplo muestra algunas funciones propias que aparecen al definir un arreglo:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

39

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Como se observa el arreglo a tiene propiedades como Length y mtodos como Average() o Sum(), existen otros muchos mtodos y propiedades, estos los puedes consultar en la base de conocimientos MSN de Microsoft, pero para este tema esto aclara el concepto anterior, con el simple hecho de definir un arreglo se est definiendo un objeto y podr disponer de mtodos que permitirn manipular los datos. Se concluye recordando la definicin de arreglo segn Ferguson (2005): son un conjunto finito de datos todos ellos del mismo tipo, con un mismo nombre e identificados por un ndice.

Actividad 3. Conjuntos de objetos mediante arreglos en C Sharp


El propsito de la actividad es que soluciones un problema en donde sea necesario manejar arreglos en un programa en CSharp. Para el desarrollo de la actividad tu Facilitador (a) te har llegar un problema donde debes utilizar arreglos de 2 dimensiones. 1. Construye un programa y define una matriz de acuerdo con las indicaciones de tu Facilitador (a) 2. Integra un archivo de texto en el cual muestres las capturas de pantalla de la forma como funcion tu programa. 3. Integra un tu programa las funciones necesarias para que solicite todos los datos desde el teclado que llenen la matriz. 4. Desarrolla las operaciones matemticas sobre la matriz. 5. Integra a tu programa la salida sobre la matriz resultado, coloca en cada rengln separado por espacios a los valores que conforman las diferentes filas de la matriz.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

40

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

6. Integra un archivo de texto en el cual muestres las capturas de pantalla de cada uno de los pasos de este proceso. 7. Una vez realizado tu programa, empaca todo tu proyecto en un archivo .zip incluyendo el archivo de texto con las capturas de pantalla del procedimiento realizado. 8. Guarda la actividad con el nombre DPRN2_U3_A3_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido. 9. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante la herramienta Tareas *No olvides, consultar el documento Criterios de evaluacin de las actividades de la Unidad 3 para conocer los parmetros de esta actividad.

3.2.2. Colecciones
El tema anterior se concluy con la definicin de arreglo: son un conjunto finito de datos todos ellos del mismo tipo, con un mismo nombre e identificados por un ndice. Ferguson J. (2005). En esta definicin un punto muy importante y que se relaciona con las colecciones es el que se defina como un conjunto finito de datos, esto implica un problema, imagina que te solicitan hacer un programa donde almacenars en un arreglo diferentes tipos de productos producidos por una empresa. En el momento que t llegas se producen 5 tipos diferentes y te dicen que el incremento de nuevos tipos es un proceso muy lento por la gran cantidad de trmites que se debe hacer que aumentan a razn de 1 o 2 como mximo cada ao. Una solucin que t propones es crear un arreglo de 20 elementos dndole una vida promedio a tu programa de unos 10 aos, siguiendo los datos estadsticos dados por los requisitos de la empresa. Imagina que por alguna razn no identificada durante la toma de los requerimientos, ellos registran 20 productos en slo dos aos. Inmediatamente tu programa tendr problemas porque no podr controlar 25 productos estando diseado en un arreglo de slo 20. El problema anterior se presenta porque los arreglos son finitos, es decir en el momento que los definimos y antes de usarlos se debe decidir el nmero de datos que se tendrn de ese tipo y este nmero no puede cambiar durante toda la vida del arreglo.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

41

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Una coleccin es una forma sencilla de expresar un arreglo pero no finito (esto no significa que sea infinito sino que simplemente no se tiene por qu definir al inicio de su uso cuntos elementos se tendrn, es decir que, se puede agregar elemento tras elemento segn se requiera, por supuesto, existe un lmite, por ello no es infinito ese lmite lo da la memoria de la computadora, el disco duro, el microprocesador, etc.,), el trmino coleccin es traducido por muchos autores como contenedor. Est es una herramienta proporcionada por el .NET Framework, son clases especializadas para almacenamiento y recuperacin de datos (Liberty, 2001). Las colecciones son un conjunto de clases que permiten almacenar y recuperar datos siguiendo los conceptos que viste en tu materia de estructuras de datos (listas, pilas, colas, arboles, diccionarios, etc.). Al seleccionar una de ellas es posible simplemente guardar informacin dentro de la estructura sin preocuparse de la forma en cmo se realiza esto y cundo se recupera porque no es necesario conocer los detalles de esta operacin. Como lo indicaDeitel & Deitel (2007). NET Framework proporciona una serie de componentes reutilizables llamados colecciones. Las colecciones estn normalizadas para que las aplicaciones se puedan compartir con facilidad, sin tener que preocuparse por los detalles de su implementacin. Estas colecciones estn escritas para una amplia reutilizacin. Estn diseadas para su ejecucin rpida y uso eficiente de la memoria. Existen varias clases (o colecciones), definidas por el framework de .Net, algunas de las ms importantes son listas y diccionarios slo estas se explicarn con detalle continuacin porque son el fundamento del resto de las colecciones, la primera guarda datos en forma de objetos, la segunda en forma de pares de valores compuestos por llave-valor. El resto de las colecciones funcionan bajo alguno de estos dos principios y slo cambian algunas caractersticas tales como: si estn ordenadas o no, si se recuperan en el mismo orden en que se inserta informacin, etctera. List: Es equivalente a el concepto de una lista doblemente ligada (tema que revisaste en tu materia de Estructura de datos). Se puede decir que en esta clase o coleccin, se utilizar una lista y el tipo de elementos que sta puede guardar. Automticamente el Framework de .Net proporcionar una serie de propiedades y mtodos que permitirn manipular esos datos (los que t le ingreses a la lista), tales como la longitud, buscar un elemento, borrar un elemento, ordenarlo, encontrar el mximo, encontrar el mnimo, etctera. El siguiente cdigo es un ejemplo de uso de una clase lista o List. Todos los programas debern llevar al inicio la siguiente instruccin:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

42

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

La cual indica al compilador que se utilizarn las colecciones. El cdigo se muestra a continuacin

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

43

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Diccionario: es una coleccin de elementos conformados por un par, que tiene la siguiente estructura: Llave Valor. La informacin no es recuperada por un ndice sino por un valor llave. Se explicar con el siguiente ejemplo: se desarrollar un diccionario conformado por el par, numero de control (que es un valor entero) y nombre (que es una cadena). Se da de alta la siguiente tabla: Llave Valor 345 Juan 245 Miguel 123 ngel 667 Pedro Tabla ejemplo de informacin de un diccionario (Elaboracin del autor: Manuel Panzi Utrera) Si se guarda esta informacin en un diccionario y se desea recuperar algn dato, no es posible preguntar qu informacin existe en el registro 2 porque no se maneja de esa

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

44

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

manera. La pregunta debe plantearse de esta forma: si tengo la llave 123 a qu valor le corresponde? Existen una serie de reglas para el manejo de los diccionarios en CSharp. Las llaves no pueden repetirse, pero no es trascendente si se repiten los valores. La referencia slo se hace por la llave. Por ejemplo en la tabla anterior puede ser posible tener otro alumno de nombre: Angel pero este debe tener otra llave para identificarlo. Lo que no es posible es tener dos llaves iguales que identifiquen a dos personas diferentes sera similar a pensar que existen dos personas diferentes con el mismo CURP, por eso el CURP es una clave nica de identificacin de las personas en otras palabras es nuestra llave. A continuacin se plantearn algunos ejemplos del uso de coleccin diccionario en el siguiente cdigo:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

45

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

46

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Existen otros contenedores en C Sharp para el manejo de la informacin, se mencionarn algunos de los ms comnmente usados. Queue (cola) Representa una coleccin de objetos de tipo primero en entrar, primero en salir (MSDN, 2013 b) Las colas son tiles para guardar informacin en el orden en que fueron recibidas, simulan una cola de personas ante una caja por ejemplo. Son atendidas en el orden que llegaron. Los objetos almacenados en Queue se insertan en un extremo y se quitan del otro. Se utiliza el mtodo Enqueue para poner en la cola un dato, el mtodo Dequeue para quitar el primer elemento de la cola, el mtodo Peek para localizar el siguiente elemento de la cola y el mtodo Dequeue para quitarlo de la cola. Entre muchos otros mtodos. A continuacin se expone un ejemplo de uso:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

47

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Si se ejecuta el programa la salida ser: Lista de datos guardados 0 Archivo.Txt 1 Archivo.Pdf 2 Archivo.Doc 3 Archivo.Ppt

Stack(pila) Representa una coleccin LIFO ("ltimo en entrar, primero en salir") de tamao variable de instancias del mismo tipo. (MSDN, 2013 d) Las pilas son tiles para almacenar informacin y procesar la ltima que llego. Los objetos almacenados en un Stack se insertan en un extremo y se quitan en el mismo, proporciona una serie de mtodos para el manejo de la informacin siguiendo la filosofa de la pila. Los mtodos ms importantes son: Count que indica cuntos elementos se tiene en un contenedor, push que guarda un elemento al inicio de la pila, pop que recupera el primer

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

48

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

elemento al inicio de la pila. Existe tambin el mtodo toArray que convierte el contenido en un arreglo. S expone a continuacin un ejemplo de uso de pilas.

Si se ejecuta este programa la salida que se muestra es la siguiente: Lista de datos guardados 0 Archivo.Ptt 1 Archivo.Doc 2 Archivo.Pdf 3 Archivo.Txt Se observa que las primeras en mostrarse fueron las ltimas en ser impresas. SortedList(Lista ordenada) Representa una coleccin de pares clave/valor que se ordenan conforme a la clave (MSDN, 2013 c). La clase genrica SortedList es un rbol de bsqueda binaria, que mantiene la informacin constantemente ordenada utilizando precisamente ese concepto de rbol binario. Este contenedor ya provee mecanismos para mantenerse constantemente

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

49

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

balanceado y en el caso de eliminar elementos (que internamente se representan como nodos de un rbol) tambin el balanceo ser de manera automtica. SortedList requiere la implementacin de un comparador para ordenar y realizar comparaciones (MSDN, 2013 c). Un comparador no es ms que una clase que le indicar a la coleccin como se deben ordenar los objetos dentro de l. Hasta este momento no se ha tenido necesidad de indicar cmo se deben ordenar los objetos dentro de una coleccin porque los datos que sutilizados se ordenan de manera natural, los nmeros enteros por su orden numrico y las cadenas por el orden alfabtico. Pero en el caso de que se cuente con una coleccin con los datos de un alumno tales como: Nombre, Edad, Sexo, Semestre y Carrera. Es necesario crear una clase especial que le indique a la coleccin por cul de los 5 campos debe ser ordenado o si se necesita una combinacin de ellos, (es posible que por necesidad se deba ordenar por sexo y edad).Por ejemplo las listas de alumnos se ordenan de manera comn por apellido paterno, apellido materno y nombre. Estamos usando tres campos A esa clase se le llama comparador. Se expone a continuacin un ejemplo para entender el concepto. En el supuesto caso de que se requiera hacer una coleccin que guarde los datos de los autos que estn a la venta en un lote. De los autos se conoce: La placa, la marca, el modelo (Tsuru de lujo, Focus automtico, etc.), el color, el ao y un precio estimado de venta. Nosotros necesitamos poder listarlos por placa, por modelo o por precio pero este en dos opciones de menor a mayor o de mayor a menor. Este ejemplo de uso de un SortList en cdigo se representa a continuacin. La clase Auto tendra el siguiente cdigo:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

50

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

51

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Se necesitan definir 4 comparadores para poder tener las 4 diferentes formas de ordenamiento, solicitadas: 1.- Por placa, 2.- por modelo o por precio pero este en dos opciones de 3.- menor a mayor o 4.- de mayor a menor. Esto se muestra a continuacin:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

52

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

El comparador por placa es el siguiente:

El comparador por modelo es el siguiente:

El comparador por precio descendente es el siguiente:

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

53

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

El comparador por precio ascendente es el siguiente:

Si en el lote de autos, se cuenta con los siguientes modelos:

Placa
YCS3932 YTR1010 YFG2100 YUH2010 YAT1101

Marca
Nissan Ford Volkswagen Toyota Honda

Modelo
Centra Lujo Focus Bsico Golf Estndar Corola Tpico Civic Sedan

Color
Perla Rojo Azul acero Blanco Gris plata

Ao
2000 2001 2000 2005 2010

Precio
$95,000.00 $80,000.00 $65,000.00 $90,000.00 $98,000.00

El programa principal mostrar el lote ordenado por placa, modelo, precio ascendente y descendente. Esto se observa en el siguiente cdigo. Se utilizar un List para generar estos resultados.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

54

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

55

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

En el momento de la ejecucin del programa, muestra la siguiente salida: YCS3932 Nissan Centra Lujo Perla 2000 95000 YTR1010 Ford Focus Bsico Rojo 2001 80000 YFG2100 Volkswagen Golf Estndar Azul Acero 2000 65000 YUH2010 Toyota Corola Tpico Blanco 2005 90000 YAT1101 Honda Civic Sedan Gris Plata 2010 98000

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

56

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

YAT1101 Honda Civic Sedan Gris Plata 2010 98000 YCS3932 Nissan Centra Lujo Perla 2000 95000 YFG2100 Volkswagen Golf Estndar Azul Acero 2000 65000 YTR1010 Ford Focus Bsico Rojo 2001 80000 YUH2010 Toyota Corola Tpico Blanco 2005 90000 YCS3932 Nissan Centra Lujo Perla 2000 95000 YAT1101 Honda Civic Sedan Gris Plata 2010 98000 YUH2010 Toyota Corola Tpico Blanco 2005 90000 YTR1010 Ford Focus Bsico Rojo 2001 80000 YFG2100 Volkswagen Golf Estndar Azul Acero 2000 65000 YFG2100 Volkswagen Golf Estndar Azul Acero 2000 65000 YTR1010 Ford Focus Bsico Rojo 2001 80000 YUH2010 Toyota Corola Tpico Blanco 2005 90000 YCS3932 Nissan Centra Lujo Perla 2000 95000 YAT1101 Honda Civic Sedan Gris Plata 2010 98000 YAT1101 Honda Civic Sedan Gris Plata 2010 98000 YCS3932 Nissan Centra Lujo Perla 2000 95000 YUH2010 Toyota Corola Tpico Blanco 2005 90000 YTR1010 Ford Focus Bsico Rojo 2001 80000

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

57

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

YFG2100 Volkswagen Golf Estndar Azul Acero 2000 65000 Cmo funciona el comparador que utiliza SortedList? Realmente es muy simple su lgica de funcionamiento es: requiere indicaciones de cmo se ordenan 2 de los valores que ingresarn al SortedList y el mtodo Sort lo aplicar a todo el conjunto de elementos dentro de la coleccin. Se plantea un ejemplo: recordando la clase del lote de autos, ahora se desea desarrollar un comparador para ordenar por modelo. El ordenamiento es de forma descendente. Retomando un ejemplo del modelo de 2 autos, se nombrar auto1 y auto2, se comparar el modelo del auto1 con el modelo del auto2 (esta comparacin es alfanumrica, la letra A es menor que la B y as sucesivamente, desde el punto de vista de palabras ANGEL es menor que MANUEL porque ANGEL inicia con A y MANUEL con M), si son iguales se regresa un 0, si el modelo del auto1 es mayor que el modelo del auto2 regresar un nmero positivo indicando que no se deben intercambiar de posicin, si es lo contrario el auto1 es menor que el auto2, se regresa un nmero negativo indicando que se deben intercambiar. Es importante notar que se debe devolver un valor positivo o negativo no importa el nmero en s. Esto se codifica as:

Se observa que es muy fcil obtener el valor positivo slo restndolos cuando se trata de comparar valores numricos. En el caso de comparar cadenas se utiliza el mtodo compareTo de las cadenas que devuelve precisamente un -1, +1 o un 0. De esta manera se comparan cadenas. Se concluye con este tema recapitulando acerca de la utilidad de las colecciones, esto permiten contener una gran cantidad de datos sin necesidad de definir el nmero de ellos desde un inicio como se observ en todos los ejemplos la informacin se guarda sin preocuparse por los lmites de almacenamiento y los mtodos de manejo de informacin porque estos ya se encuentran implementados, es posible tener acceso a ellos de forma directa con slo invocarlos.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

58

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Actividad 4. Conjuntos de objetos mediante colecciones en C Sharp


El propsito de la actividad es que soluciones un problema en donde sea necesario utilizar una de las colecciones que proporciona el Framework de .NET en CSharp. Para el desarrollo de la actividad tu facilitador te har llegar un problema mediante el cual debes crear un objeto, y este objeto debe ser agregado a un contenedor de los que proporciona Framework de .NET, las operaciones de alta del objeto, listado del contenido del contenedor y ordenamiento del mismo, se har mediante un men simple. 1. Construye el objeto solicitado con sus datos y propiedades indicadas por tu facilitador(a), debes sobre-escribir el mtodo ToString(), mostrando el contenido del objeto en forma ordenada y clara. 2. Construye las dos clases comparadoras para que puedas ordenar la coleccin por el dato solicitado. 3. Desarrolla un men con las siguientes opciones: a. Crea un nuevo objeto. Solicita sus datos miembro y adicinalos al contenedor. b. Lista el contenido del contenedor. c. Lista en forma ordenada por 2 opciones el contenedor. d. Esta opcin debe terminar de forma correcta el programa. 4. Integra en el men el uso de la clase desarrollada y los dos comparadores para que funcionen las diferentes opciones del men. 5. Integra un archivo de texto en el cual muestres las capturas de pantalla de cada uno de los pasos de este proceso. 6. Una vez realizado tu programa, empaca todo tu proyecto en un archivo .zip incluyendo el archivo de texto con las capturas de pantalla del procedimiento realizado. 7. Guarda la actividad con el nombre DPRN2_U3_EA_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido. 8. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante la herramienta Tarea. *No olvides, consultar el documento Criterios de evaluacin de las actividades de la Unidad 3 para conocer los parmetros de esta actividad.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

59

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Autoevaluacin
Antes de desarrollar la evidencia de aprendizaje, realiza la autoevaluacin con el fin de hacer un recuento general de la unidad; as como detectar aquellos temas que no has comprendido en su totalidad y que necesites revisar nuevamente, o bien consultar con tus compaeros(as) y Facilitador(a). Para realizar la Autoevaluacin, ingresa al listado de actividades en el aula.

Evidencia de aprendizaje. Control de errores en grupo de objetos en C Sharp


El propsito de la actividad es que soluciones un problema en donde sea necesario dar seguridad a la ejecucin de un programa CSharp, utilizando excepciones el cual maneja un conjunto de objetos. Para el desarrollo de la actividad tu Facilitador (a) te har llegar un problema donde debes controlar una serie de situaciones utilizando excepciones en el cual realizars los siguientes pasos: 1. Construye una clase del tipo indicado por tu Facilitador (a). 2. Integra los datos miembro (segn te indique tu Facilitador (a) 3. Integra propiedades de lectura y escritura para cada dato miembro. 4. Desarrolla un programa que construya objetos, solicite los datos del usuario y utilizando las propiedades del objeto guarde los datos en l. 5. Controla los errores producidos por la ejecucin de la aplicacin. 6. Construye las excepciones necesarias para controlar las reglas del negocio. 7. Integra a tu programa el control de las reglas del negocio construidas en el paso anterior. 8. Integra un archivo de texto en el cual muestres las capturas de pantalla de cada uno de los pasos de este proceso. 9. Una vez concluido el desarrollo de tu programa, empaca todo tu proyecto en un archivo .zip incluyendo el archivo de texto con las capturas de pantalla del procedimiento realizado.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

60

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

10. Guarda la actividad con el nombre DPRN2_U3_A2_EA_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z por tu segundo apellido. 11. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante el Portafolio de evidencias. *No olvides, consultar el documento EA. Criterios de evaluacin U3 para conocer los parmetros de evaluacin de esta actividad.

Cierre de la unidad
En este momento se ha concluido con el desarrollo de la Unidad III, los temas que abordamos control de errores, arreglos y colecciones son de gran utilidad en el desarrollo de aplicaciones empresariales, en C Sharp. Con esta unidad concluye tu asignatura Programacin .NET II, los temas que se abordaron redondean tus conocimientos de programacin orientados a objetos y te muestran tambin la importancia de los conocimientos previos anteriores como la de estructura de datos. El tema de control de errores nos permite crear aplicaciones estables donde se controlen situaciones especiales que pueden provocar que alguna aplicacin interrumpa su ejecucin en forma inesperada. El tema de conjunto de objetos te permite ahora visualizar la forma en que una aplicacin puede manejar mayores volmenes de informacin. Con estos dos temas has redondeado tus conocimientos de C Sharp, es momento de una reflexin de todos los temas vistos, es recomendable que contines investigando ms informacin de objetos, constructores, polimorfismo, sobrecarga, herencia, sobre escritura y en todos ellos revisa su interaccin con el control de errores. Felicidades, llegamos al final de esta aventura.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

61

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Para saber ms
En esta seccin encontrars algunos recursos que es recomendable consultes pues encontrars ms informacin acerca de los principales conceptos revisados en la unidad tales como: control de errores, colecciones y arreglos: MSDN Microsoft Developer Network. (2013 l). http://msdn.microsoft.com/eses/library/System.Collections.Generic.aspx, (Una referencia muy complete de las colecciones que proporciona C Sharp) MSDN Microsoft Developer NetWork. (2013 n). http://msdn.microsoft.com/eses/library/0yd65esw%28v=vs.110%29.aspx (Una referencia muy completa de los usos de try-catch que nos proporciona C Sharp) El libro de Jos Antonio Gonzlez Seco, llamado El lenguaje de programacin C#, que es un desarrollo libre, aunque es una versin muy anterior los conceptos fundamentales no han cambiado. Se encuentra disponible en la seccin Material de apoyo y tambin lo puedes obtener de: http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf Consulta el manual completo de C Sharp (MSDN, 2013 k) disponible en la siguiente direccin: http://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspx

Fuentes de consulta
Archer T. (2010). A fondo C#, 2010. Madrid Espaa: Ed. Mc Graw Hill.

Deitel Harvey M., Paul J. Deitel. (2007). Cmo programar en CSharp. 2da. Edicin Espaa: Editorial Pearson.

Ferguson J., Patterson B., Beres J. (2005). La biblia de C#. Madrid Espaa: Editorial Anaya. 835 Pgs.

Gibbs, W. Wayt. (1994). Software's Chronic Crisis. E.U.A: Copyright Scientific American. Recuperado de http://www.di.ufpe.br/~java/graduacao/referencias/SciAmSept1994.html

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

62

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Gonzlez Seco J.A. (s/f). Lenguaje de programacin en C#. [En lnea] Espaa: s.e Liberty, Jesse. (2001). Programming C#. Estados Unidos: Ed. Oreilly. Michaellis, M. (2010). Essential C# 4.0. Estados Unidos: Editorial Addison Wesley. Microsoft Corporation. (1999-2007). C# Language Specification Version 3.0. [En lnea] Recuperado de download.microsoft.com/.../CSharp%20Language%20Specification.doc Fecha de consulta: 15 de mayo del 2013. MSDN, Microsoft Developer Network. (2013 a). ApplicationException (Clase). Recuperado de http://msdn.microsoft.com/esx/library/system.applicationexception%28v=vs.80%29.aspx Fecha de consulta: 1 de julio del 2013. MSDN, Microsoft Developer Network. (2013 b). Clase genrica Queue. Recuperado de http://msdn.microsoft.com/es-es/library/7977ey2c%28v=vs.80%29.aspx Fecha de consulta: 5/Julio/2013. MSDN, Microsoft Developer Network. (2013 c). Clase genrica SortedList. http://msdn.microsoft.com/es-es/library/ms132319%28v=vs.80%29.aspx Fecha de consulta 5 de julio del 2013. MSDN, Microsoft Developer Network. (2013 d). Clase genrica Stack. Recuperado de http://msdn.microsoft.com/es-es/library/3278tedw%28v=vs.80%29.aspx Fecha de consulta 7 de julio del 2013. MSDN, Microsoft Developer Network. (2013 e). Cmo: Crear excepciones definidas por el usuario. Recuperado de http://msdn.microsoft.com/eses/library/87cdya3t%28v=vs.80%29.aspx Fecha de consulta: 1 de julio del 2013. MSDN, Microsoft Developer Network. (2013 f). Controlar y generar excepciones. Recuperado de http://msdn.microsoft.com/es-es/library/5b2yeyab.aspx Fecha de consulta 20 de junio del 2013.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

63

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

MSDN, Microsoft Developer Network. (2013 g). Excepciones. Recuperado de http://msdn.microsoft.com/es-es/library/vstudio/dd489406(v=vs.100).aspx Fecha de consulta: 7 de julio del 2013. MSDN, Microsoft Developer Network. (2013 h). Exception (Clase). Recuperado de http://msdn.microsoft.com/es-es/library/system.exception.aspx Fecha de consulta: 1 de julio del 2013. MSDN, Microsoft Developer Network. (2013 i). Jerarqua de excepciones. Recuperado de http://msdn.microsoft.com/es-es/library/z4c5tckx%28v=VS.80%29.aspx Fecha de consulta 20 de julio del 2013. MSDN, Microsoft Developer Network. (2013 j). Matrices y colecciones (Visual C# Express). Recuperado de http://msdn.microsoft.com/es-es/library/9ct4ey7x%28v=vs.90%29.aspx Fecha de consulta: 2 de julio del 2013. MSDN, Microsoft Developer Network. (2013 k). Manual del lenguaje C#. Recuperado de http://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspx Fecha de consulta: 17 de julio del 2013 MSDN, Microsoft Developer Network. (2013 l). System.Collections.Generic (Espacio de nombres). Recuperado de http://msdn.microsoft.com/eses/library/System.Collections.Generic.aspx Fecha de consulta 17 de julio del 2013. MSDN, Microsoft Developer Network. (2013 m). Try-catch (Referencia de C#). Recuperado de: http://msdn.microsoft.com/eses/library/0yd65esw%28v=vs.110%29.aspx Fecha de consulta: 7 de julio del 2013. MSDN, Microsoft Developer Network. (2013 n). Try-catch-finally (Referencia de C#). Recuperado de http://msdn.microsoft.com/es-es/library/dszsf989.aspx Fecha de consulta: 20 de junio del 2013. MSDN, Microsoft Developer Network. (2013 ). Tutorial de matrices http://msdn.microsoft.com/es-es/library/aa288453(v=vs.71).aspx Fecha de consulta 1 de julio del 2013.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

64

Programacin .NET II
Unidad 3. Manipulacin de errores y conjuntos de objetos

Nash Trey, (2010), Accelerated C# 2010, Estados Unidos de Amrica: Ed. Apress.

Sharp, John. (2010). Microsoft Visual C# 2010. Estados Unidos de Amrica: Editorial Microsoft Press.

Stroustrup, Bjarne. (1997). The C++ Programming Language. Tercera Edicin. Estados Unidos: Addison-Wesley.

Troelsen A. (2010). Pro C# 2010 and the .NET 4 Platform. Estados Unidos de Amrica: Editorial Apress.

Divisin de Ciencias Exactas, Ingeniera y Tecnologa | Ingeniera en Desarrollo de Software

65

También podría gustarte