Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

Embed Size (px)

Citation preview

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    1/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 MxicoUnADM

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    2/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    ndice

    Unidad 3. Manipulacin de errores y conjuntos de objetos ................................................ 3Presentacin de la unidad ................................................................................................. 3Propsitos .......................................................................................................................... 4Competencia especfica ..................................................................................................... 43.1. Control de errores en CSharp ..................................................................................... 43.1.1. Uso de los comandos para el control de errores: try, catch ................................. 53.1.2. Desarrollo de controles de errores personalizados ................................................ 20

    Actividad 1. La crisis del software .................................................................................... 25 Actividad 2. Manejo seguro de un objeto ......................................................................... 263.2. Conjunto de objetos .................................................................................................. 273.2.1. Arreglos ................................................................................................................. 28

    Actividad 3. Conjuntos de objetos mediante arreglos en C Sharp .................................... 403.2.2. Colecciones ........................................................................................................... 41

    Actividad 4. Conjuntos de objetos mediante colecciones en C Sharp .............................. 59 Autoevaluacin ................................................................................................................ 60Evidencia de aprendizaje. Control de errores en grupo de objetos en C Sharp................ 60Para saber ms ............................................................................................................... 62Fuentes de consulta ........................................................................................................ 62

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    3/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 orientadaa objetos con un enfoque de utilizacin del lenguaje CSharp.

    Buscar errores y manejarlos adecuadamente es un pr incipio fundamental para disear

    software correctamente, (Ferguson, 2005), en teora cuando se escribe un cdigo sepretende que todo est correctamente escrito y funcione. En el mundo real esto raramentees cierto. Es ms, algunos errores no son previstos ni controlados en el momento deprogramar por ejemplo si la conexin de red se interrumpe los servidores de bases dedatos dejan de funcionar y los archivos de disco pueden no contar con los contenidos quelas aplicaciones consideran que contienen. Esto tambin debe ser controlado y tratar deno dejar al usuario final con una aplicacin detenida sin ninguna informacin acerca dequ hacer en ciertos casos (como por ejemplo una clsica pantalla azul cuando unaaplicacin entra en una situacin no controlada). Es importante revisar este tema porquepermitir 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 loscuales son del mismo tipo. Estos elementos tendrn todos ellos el mismo nombre, yocuparn un espacio contiguo en la memoria de la computadora. La trascendencia deeste tema es el aprender a manipular un conjunto de objetos con un mismo nombre lo quepermite el poder referirse a varios elementos semejantes, que contengan informacindiferente. Si se planteara esa situacin con los conocimientos actuales de .NET seranecesario crear una variable con nombre diferente por cada dato que se necesitara. Seconcluir esta parte trabajando con colecciones que es el siguiente paso de los arreglosdonde 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 eldesarrollo de tu carrera, preparndote con esta ltima unidad a la finalizacin del curso deprogramacin de .NET II y alistndote para el siguiente curso de programacin.NET III

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    4/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 deerrores de la plataforma .NET y su manipulacin en grupos de objetos empleando laherramienta 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 esel 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 deejecucin, se aplica bien para evitarlos (como la gestin automtica de la memoria) o almenos capturarlos en tiempo de ejecucin (como por ejemplo mediante un sistemafuertemente tipado) (Archer,2010). Aun as algunos errores que slo pueden sercapturados en tiempo de ejecucin, para estos errores de tiempo de ejecucin existe unmecanismo llamado excepciones .

    Las excepciones son el procedimiento recomendado en la plataforma .NET paracontrolar 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 comoel caso de C++ tradicional, lo que proporciona una cierta homogeneidad, consistencia ysencillez, entre los diferentes lenguajes que componen la plataforma .NET.

    Tradicionalmente, el sistema que en otros lenguajes y plataformas se ha venido usandopara informar estos errores consistan simplemente en hacer que los mtodos en cuyaejecucin pudiesen producirse devolvieran cdigos que informasen sobre si se han

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    5/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 uncontrol de errores utilizados por todos los lenguajes actuales de programacin), se definecomo cualquier condicin de error o comportamiento inesperado que se ha detectado enun programa en ejecucin, la podemos encontrar en la base de conocimientos deMicrosoft (MSDN, 2013 f):

    Las excepciones proporcionan principalmente las dos siguientes ventajas novedosasfrente 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 lgicadel mismo con las instrucciones propias del tratamiento de los errores que pudiesenproducirse durante su ejecucin.

    Ms informacin : A partir del valor de un cdigo de error puede ser difcil deducir lascausas del mismo y conseguirlo, muchas veces implica el tener que consultar ladocumentacin proporcionada por el fabricante sobre el mtodo que lo provoc y quepuede incluso que no especifique claramente su causa. Por el contrario, unaexcepcin es un objeto que cuenta con campos que describen las causas del error y acuyo tipo suele drsele un nombre que resuma claramente su causa, el nombre estindicado por las clases que definen el f ramework .

    Por estas ventajas, en la actualidad la mayora de los lenguajes manejan sus erroressiguiendo esta caracterstica. A continuacin se abordarn los temas acerca de cmomanejar 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 laspalabras reservadas: t ry, catch y f in al ly , (Archer, 2010).

    La base de conocimiento de Microsoft (MSDN, 2013 m) define el uso de los comandostry, catch y finally de la siguiente manera: consiste en obtener y utilizar recursos en unbloque try , tratar circunstancias excepcionales en el bloque catch y liberar los recursos enel bloque finally , esto se puede explicar d e una manera sencilla en el siguiente diagrama:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    6/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Bloque try {

    }

    Bloque catch {

    }

    Bloque finally {

    }

    Se deben respetar las siguientes reglas en cuanto al uso de comandos para el control deerrores:

    1.- Slo puede haber un bloque try.

    2.- Al menos deber existir un bloque catch por cada bloque try, pero puede haber msde 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

    En este bloque se escribe el cdigo que debe ser controladorespecto a o en relacin a los errores en tiempo de ejecucin.

    Por ejemplo:

    A = B / C;

    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);

    En esta parte se escribe el cdigo que se ejecutar indistintamente seproduzca un error o no en el bloque catch.

    Por ejemplo:

    Console.WriteLine(El cdigo continua ejecutndose);

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    7/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    error en los procesos de operacin de la informacin. El bloque finally en estassituaciones es sumamente til.

    La forma en que funcionan estos bloques es sencilla y directa. Cuando una instruccinfracasa en su objetivo y no puede continuar esto significa que se detecta una situacinexcepcional-, 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 elmanejo 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 paraser 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 elteclado y guardarlo en una variable de tipo int. Esto de una manera sencilla se puederealizar con el siguiente cdigo.

    Si se ejecuta el programa escribiendo un nmero 3 cuando la aplicacin lo solicite, lasalida es el siguiente nmero:

    Escribe un nmero entero: 3El nmero escrito fue: 3

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    8/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Se puede argumentar lo siguiente este programa se ejecuta correctamente, infiriendopor lo tanto que es un programa correctamente escrito.

    Siguiendo con la situacin propuesta se plantea que el usuario no escriba un nmero sinola 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 PanziUtrera).

    Ahora se puede argumentar lo siguiente: el programa se ejecuta de forma in correcta,infiriendo por lo tanto que es un programa incorrectamente escrito.

    Realmente en este caso no se refiere a un programa escrito de forma correcta oincorrecta es un programa que debe ser lo suficientemente desarrollado como para podercontrolar situaciones inesperadas (y en este caso completamente fuera del control deldesarrollador, un programa no puede forzar a un usuario del programa que escriba deforma 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 finalsean 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 deescribir 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 elprograma se detenga de forma inesperada sino por el contrario deber proporcionar una

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    9/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    serie de opciones para que el programa se autocontrole y si debe terminar esto lo realicede 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 paraque controlen de forma adecuada las acciones de escribir un nmero en formatoinadecuado y no esperar que el programa se detenga inesperadamente. Aqu esnecesario enfatizar o reparar en un cuestionamiento importante: Qu tipo de error seespera?

    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 comoException por un mal formato , este se puede controlar, si se re-escribe el programade la siguiente manera:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    10/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Si se ejecuta el programa y se escribe la palabra hola la salida ser la siguiente:

    Escribe un nmero entero: holaEscribiste 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, mismaque se observ anteriormente:

    Escribe un nmero entero: 3El nmero escrito fue: 3

    Se puede observar que en el programa se han agregado 2 bloques al re-escribir el cdigodespus 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, terminarde forma controlada su ejecucin.

    Se puede observar en el cdigo que la instruccin:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    11/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

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

    Si se ejecuta esta aplicacin se puede observar que el comportamiento es exactamenteigual que el programa anterior pero se ha controlado el error y codificado su operacin deuna manera clara y ms acorde con los estndares de .NET

    El bloque finally es muy utilizado por aplicaciones que deben cerrar aplicaciones demanera correcta independientemente de si se ejecutaron con errores o sin ellos. Un casotpico es cuando se cierran bases de datos despus de haber operado sobre suinformacin contenida.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    12/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Regresando al bloque catch , se observa la instruccin:

    Se espera capturar un error del tipo FormatException , en realidad este error serdevuelto en un objeto que se ha llamado fe (el nombre puede ser cualquier nombre vlidode variable en C Sharp, tema revisado en la asignatura Programacin.NET I ) una buenaprctica 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 quepermite conocer con mucho detalle el error que se produjo, en qu parte del programaapareci, etc. Siempre se debe capturar el objeto que contiene informacin del erroraunque como en este caso, no se utiliza, por ser un ejemplo muy sencillo pero coninstrucciones como fe.toString(), se podra contar con una explicacin ms amplia delerror.

    Se ejecuta nuevamente el programa pero en esta ocasin se teclea el nmero 3.1 y seobserva el siguiente error:

    Escribe un nmero entero: 3.1Escribiste 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 nmeroentero 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 deldesarrollador .

    Ahora que se cuenta con elementos para tener una mejor y mayor idea delcomportamiento de las excepciones en Csharp mediante .NET, es conveniente definir unaserie 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 lanzauna excepcin , se inicia un proceso recursivo esperando primero que el mtodo quelanz la excepcin tenga cdigo para su control, si no lo tiene se espera que el objetoprocese la excepcin si este no tiene cdigo para su control, se espera que el programainicial que llam al objeto controle el problema, si este no tiene cdigo de control elprograma se detiene mostrando la ventana de error. A esto se le conoce comopropagacin de la excepcin . (Archer, 2010).

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    13/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Esquema de propagacin de excepcin (Elaboracin del autor: Manuel Panzi Utrera)

    No

    Si

    Inicio de un procesorecursivo

    Programa quellama a un objeto

    El objeto llama aun mtodo

    El mtodo lanza unaexcepcin

    Se controlael errorEl mtodo cuenta

    con cdigo decontrol

    Continaejecucin

    El objeto cuentacon cdigo decontrol

    Se controlael error

    Continaejecucin

    Si

    Si

    El programacuenta con cdigode control No

    Se controlael error

    Continaejecucin

    El programa sedetieneinesperadamente

    Fin

    No

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    14/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Las excepciones finalmente son objetos y tienen toda una jerarqua de herencia, existenuna gran cantidad de ellas para controlar cualquier situacin inesperada en la ejecucinde un programa.

    Algunos de estos objetos se pueden observar en el siguiente diagrama:

    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 muysimplificada la complejidad de los objetos que se pueden recuperar en la instruccincatch ,

    A continuacin se seala una indicacin importante :

    Indica que son excepciones creadas por quien realiza elobjeto y pueden ser desarrolladas a partir de cualquierpunto de la jerarqua. Slo por ejemplificar se estheredando de Exception . En el siguiente punto se tratareste tema con ms profundidad.

    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).

    Object

    Exception

    ExcepcionesPropias SystemException IOException

    ArithmeticException ArgumentException

    DivideByZeroException ArgumentNullException

    FileNotFoundException

    ExcepcionesPropias

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    15/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

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

    Si se ejecuta el programa es posible darse cuenta de que en el directorio ( se debe crearcomo 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 larecomendacin 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 observarel siguiente error:System.IO.DirectoryNotFoun dException: No se puede encontr ar una parte de la rutade acc eso 'c: \pun tonet\ temp .txt ' .

    en System .IO.__Error.Win IOError(Int32 errorCo de, String m aybeFullPath)en System .IO.FileStream.Init(String path , FileMode m ode, FileAccess ac cess , I

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    16/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    nt32 right s, Bool ean useRight s, FileShare share, Int32 buf ferSize, FileOption s options , SECURITY_ATTRIBUTES secAttrs , Str ing m sgPath, Boolean b FromProx y,

    Boolean useLon gPath, Boolean checkHos t)

    en System.IO.FileStream..ctor(String path , FileMode mod e, FileAcc ess access )en EscribirA rchiv o.Program.Main(String[] args ) en c: \WorkSpaceVisualStudio\Un

    ivers idad UnNAD\Esc ribi rAr chiv o\Escri birA rch ivo \Program .cs:lnea 12

    Se observa que se ha producido una excepcin en particular:DirectoryNotFoundException , se pue de traducir como Error: el directorio no fueencontrado.

    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 elprograma de la siguiente manera.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    17/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Al ejecutar programa se podr observar que ahora el error que aparece es: Error : Debescrear primero el directorio . Tambin se observar en el cdigo que se cuenta con dossalidas para el error. La primera es para un error muy especfico de la no existencia deldirectorio donde se crear el archivo y el segundo muy general para cualquier tipo deerror 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 debenser ordenados desde errores muy especficos hacia errores ms generales. Si se cambiael 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 clausulacatch 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 errorms especfico al error ms general. Regresando al cdigo de la representacin anteriory ejecutar de nuevo el programa para que se cree el archivo de texto. Se quitar elpermiso de escritura sobre ese archivo. Esto no es un tema de programacin pero elproceso es muy sencillo, y permite ejemplificar la captura de otros errores en CSharp.

    Si se realizan los siguientes pasos:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    18/65

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    19/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    El compilador ayuda a colocar la excepcin en el punto adecuado, marcando un error sise pone en otro lugar.

    Se finaliza este tema slo resaltando la importancia de controlar el flujo sin errores de unprograma, lo que permitir que la aplicacin se mantenga estable cuando los usuarios demanera intencional o no , introduzcan datos errneos. Finalmente no olvides desde laventana de ms-dos ejecutar el siguiente comando para permitir que se escriba sobre elarchivo:

    C:\windows\system32\attrib c:\puntonet\temp.txt -r

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    20/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    3.1.2. Desarrollo de controles de errores personalizados

    Como se observ en el tema anterior el control de situaciones no esperadas (errores), esde suma importancia en el desarrollo de software confiable pues, permitir confiar laejecucin de un programa no slo al manejo seguro de la informacin sino incluso dejarloa cargo de tareas consideradas crticas como se vio en la actividad 1, donde losprogramas controlan equipos mdicos o las actuales computadoras que controlan losvehculos de la actualidad.

    En C Sharp ese control de errores llamado ms exactamente control de excepciones, estcontrolado como se observ, por los comandos: try, catch y finally. Igualmentecomo 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 sonderivadas de System.Exception , y las definidas por el usuario en la aplicacin .Existen decenas de excepciones que pueden ser controladas desde CSharp predefinidaspor el CLR y algunas de ellas se muestran en la siguiente lista:

    Excepcin Descripcin ArithmeticException Desbordamiento por una operacin aritmticaDivideByZeroException Error por una divisin por ceroFileNotFoundException El archivo no fue encontrado

    FormatException El formato del dato es incorrectoIndexOutOfRangeException Se usa un ndice mayor que el tamao de la matriz ocoleccin utilizada

    IOException Errores de entrada y salida de informacinNullReferenceException Se utiliz un dato miembro sin inicializarOverflowException El dato no puede guardar el valor que se le indicaOutOfMemoryException Se termin la memoriaListado de algunas excepciones en C Sharp, la lista completa se puede consultar en labase 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 excepcionespropias por dos razones:1. Se trata de un error nuevo no considerado en las excepciones estndares queproporciona la plataforma .Net2. Se desea controlar situaciones posibles en la aplicacin siguiendo el estndar deexcepciones propuesto por .Net.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    21/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    La primera situacin es un tanto difcil de que ocurra, realmente la bibliotecaproporcionada por el lenguaje es muy completa. La segunda es una situacin muyrecurrente en la industria de desarrollo de software. Controlar situaciones particulares delas reglas del negocio donde se va a utilizar el programa que se est desarrollando, esdecir, las condiciones propias de la funcionalidad de la empresa u organizacin para quiense est desarrollando el programa, por ejemplo: si una aplicacin se ejecutar en unaescuela donde la calificacin mnima aprobatoria es de 70, esa es una regla del negociode esa escuela en particular.

    Si se desea que los usuarios puedan distinguir, mediante programacin, ciertascondiciones de error de otras, es posible crear sus propias excepciones definidas por elusuario. .NET Framework proporciona una jerarqua de clases de excepcin que, enltima instancia, derivan de la clase base Exception . Cuando se creen excepcionespersonalizadas, es recomendable finalizar el nombre de la clase de la excepcin definidapor el usuario con la palabra "Excepcin " (MSDN, 2013 e).

    Se recomienda tambin por Microsoft (MSDN, 2013 e) que si se define una nuevaexcepcin 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 , porqueException se produce por la interaccin con el FrameWork .Net peroApplicationException se produce por la interaccin con un usuario. Esta excepcinsupone un medio para establecer diferencias entre excepciones definidas por aplicacionesy excepciones definidas por el sistema, (MSDN, 2013 a).

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    22/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 labiblioteca proporcionada por CSharp.

    Resumiendo las sugerencias que propone Microsoft (Michaellis, 2010) para el desarrollode excepciones propias son las siguientes:

    1. Finaliza el nombre de tu clase personalizada excepcin con el sufijo Exception , porejemplo: ErrorEnEdadException, SueldoNoEncontradoException, etc.

    2. Si la frase est compuesta de varias palabras inicia cada una de ellas con letramayscula , como se ve en los ejemplos de la sugerencia anterior.

    3. La excepcin debe ser serializable (es un proceso de codificacin en donde un objetose convierte a un conjunto de bytes y se puede almacenar en un medio como el discoduro o la memoria USB). Si se hereda de Exception o de ApplicationException ya noes 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 unaexcepcin 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 esla edad del trabajador. Esta edad debe estar comprendida entre los18 y los 65 aos queson los valores vlidos autorizados por el IMSS que puede tener una persona paradesempearse en un puesto administrativo. Se requiere desarrollar una excepcin quesea lanzada cuando se capture un valor de edad que pase de este rango, en los dossentidos para valores de edad menores de 18 aos y mayores de 65. Se iniciarllamndola EdadFueraDeRangoException .

    La excepcin que resolvera este problema se muestra a continuacin.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    23/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    24/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    }

    La segunda clase program , en su programa principal main, se captura la excepcinEdadFueraDeRango , se puede ver que en la parte try manda a llamar un mtodoleerEdad, este mtodo captura la excepcin del sistema FormatException .

    En el bloque finally hacemos una revisin de la edad, si esta est fuera del rangoindicado por el IMSS lanzamos una excepcin, el comando throw , es el comandopropuesto por CSharp para lanzar excepciones. Es posible lanzar una excepcinutilizando cualquiera de los tres constructores. Esto permite personalizar el error generadopor esta aplicacin.

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    25/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

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

    Ahora la excepcin se ha vuelto muy general, permitiendo que una misma sirva paracapturar diferentes situaciones.

    Se concluye este tema enfatizando que aunque el sistema de excepciones de C# es unaherramienta muy eficiente que permite hasta cierto punto, controlar imprevistos. A pesarde 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&Mde Texas, desarrollo el lenguaje C++), advierte en su libro: The C++ ProgrammingLanguage : "Aunque las excepciones se pueden usar para sistematizar el manejo deerrores, cuando se adopta este esquema, debe prestarse atencin para que cuando selance una excepcin no cause ms problemas de los que pretende resolver. Es decir, sedebe atender la seguridad de las excepciones. Curiosamente, las consideraciones sobreseguridad 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 excepcionestambin 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 lorelaciones con los conceptos de errores de formato, errores de captura, situacionesinesperadas 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 errorocurrido: de formato, por error de captura o situaciones inesperadas, integrandosus caractersticas y argumentando por qu consideras que representa el tipo

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    26/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    de error mencionado.

    4. Guarda la actividad con el nombre DPRN2_U3_A1_XXYZ. Sustituye las XX porlas dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z portu 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 suactividad sobre el tipo de error identificado.Recuerda que tus comentarios nodeben 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 parmetrosde 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 darseguridad 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 lasindicaciones generales, debes asegurarte de que controlas todas las opciones de errorpara lo cual realizars los siguientes pasos:

    1. Construye una clase del tipo que se requiera segn el planteamiento delproblema.

    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 yutilizando las propiedades del objeto guarde los datos en l.

    5. Construye las excepciones necesarias para controlar las reglas del negocioindicadas en el planteamiento.

    6. Integra a tu programa el control de las reglas del negocio construidas en el pasoanterior.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    27/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    7. Integra un archivo de texto en el cual muestres las capturas de pantalla de cadauno de los pasos de este proceso.

    8. Una vez realizado tu programa, empaca todo tu proyecto en un archivo .zipincluyendo el archivo de texto con las capturas de pantalla del procedimientorealizado.

    9. Guarda la actividad con el nombre DPRN2_U3_A2_XXYZ. Sustituye las XX porlas dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z portu segundo apellido.

    10. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante laherramienta Tarea .

    *No olvides, consultar el documentoCriterios de evaluacin de las actividades de laUnidad 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 bsicode casi todas las aplicaciones de software, este grupo de elementos tambin llamadosconjunto de objetos, se pueden guardar en la memoria de la computadora de dos formasprincipales de almacenarlos son mediante arreglos y colecciones.

    Es importante este almacenamiento porque un gran porcentaje de nuestras aplicacionesdesarrolladas a nivel mundial estn dedicadas al proceso de la informacin donde losconjuntos de objetos que guardan informacin son importantes.

    Cmo podemos definir a un conjunto de objetos?, recordemos que matemticamente unconjunto es un grupo de elementos, un conjunto de objetos por lo tanto es un grupo deobjetos de software similares en caractersticas pero diferentes en su contenido.

    Un ejemplo sencillo sera: un objeto alumno sera una entidad de software que guarda elnombre, su nmero de control. Un conjunto de objetos alumnos sera una lista de ellosdonde se representa su nmero de control y su nombre.

    En este tema trabajaremos con ambos conceptos mediante la propuesta de CSharp parael manejo de la informacin en conjuntos de datos, como se indic en el tema 3.1. Control

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    28/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    de errores en CSharp, es necesario asegurarse de que el cdigo al ejecutarse capturetodos 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 queson controlados por un ndice que los identifica (Deitel & Deitel, 2007). Los arreglospueden tener cualquier longitud, pueden almacenar miles o millones de datos, pero lacondicin 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 igualesdonde se guardarn datos, esas cajas para poderlas identificar tendrn un nmero queinicia en 0 y termina en un nmero n, a ese nmero se le llamar ndice porque permiteidentificar cada caja. De igual manera en un arreglo como todos los elementos se llamaniguales solo se identifican con un nmero.Los arreglos pueden almacenar tipos de referencia y tipos de valor. Un tipo de referenciadescribe 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 tucomputadora como un conjunto de celdas contiguas. Si cuentas en una computadora con2GB de memoria RAM, tendrs 2,147,483,648, celdas numeradas desde la 0 hasta la2,147,483,647. A cada celda le cabe un byte (un nmero entre 0 y 255). Si se aade queen la celda 2,345,450 guardas un nmero 100. Almacenar una referencia significaraguardar el nmero 2,345,450 que es la posicin de una celda, guardar su valor significaraguardar el nmero 100 que tiene esa celda. Con lo anterior significa que para guardar unareferencia se tienen que realizar dos pasos para descubrir la cantidad que se guarda enese lugar.

    1.- Primero ir a ese nmero de celda y2.-Despus ver qu nmero guarda esa celda. Guardar un valor significa que se est sloalmacenado un dato sin importar en dnde se almacena en la memoria.

    Los arreglos se clasifican de la siguiente manera:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    29/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    a) Arreglos unidimensionalesEs un conjunto de elementos que slo tienen un ndice. Algunos autores les llamanvectores. Se pueden definir de dos maneras la primera se conforma de la siguientesintaxis (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, lasdos 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 exponeun ejemplo de cmo se define esto:

    Que sera similar a:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    30/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    En ambos casos se est definiendo un arreglo de cinco elementos llamados todos ellosdato , conteniendo los nmeros: 2, 3, 6, 8, y 2. Esto se puede representar de la siguientemanera: 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 uncero. En el segundo caso tambin se est definiendo un arreglo pero adems inicializadocon los valores que estn encerrados entre llaves, nuestros arreglos tendrn un valoriniciar, ambos casos son vlidos en C Sharp.

    b) Arreglos multidimensionales.

    Un arreglo multidimensional con dos dimensiones se define como un conjunto deelementos donde para hacer referencia a uno de ellos se debe indicar su fila y la columnadonde est situada, segn Trey Nash (2010). Esta caracterstica de tener una fila y unacolumna se llaman matrices (recordar que en matemticas una matriz es un conjunto denmeros ordenados en una tabla donde para identificar cada elemento se necesita haceruna referencia a su fila y su columna donde estn situados, esta similitud les asigna estenombre).Conceptualmente, un arreglo multidimensional con dos dimensiones se asemeja a unacuadrcula, tambin es llamada matriz por ser similares a las matrices matemticas.

    El siguiente ejemplo muestra una matriz de 3 filas y 3 columnas.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    31/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Un arreglo multidimensional con tres dimensiones se asemeja a un cubo. Lasdimensiones pueden continuar aunque no se pueden representar de una maneraconceptual, (no existen ejemplos en nuestro mundo real donde podamos comparar msde 3 dimensiones). No existe un lmite para el nmero de dimensiones que pueden serrepresentadas en arreglos, pero s es conveniente considerar que el incremento deconsumo de memoria es exponencial, observa la siguiente tabla, en todas lasdimensiones suponemos 10 elementos por dimensin.

    Dimension es Producto Elementos1 10 102 10X10 1003 10X10X10 1,0004 10X10X10x10 10,0005 10X10X10X10x10 100,000

    Tabla de dimensiones.

    Como se puede observar en la tabla anterior, el nmero de dimensiones aumenta deforma exponencial los registros que se necesitan en memoria, (recordar que finalmentetodo dato se representa por un espacio en memoria RAM de la computadora), siaumentamos las dimensiones aumentamos en consumo de este espacio.

    Respecto a la forma de representacin, un arreglo de dos dimensiones se puede declararmediante 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:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    32/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Si se requiere definir una matriz de 3 filas x 4 columnas, los elementos se representan deesta 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 elcompilador 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 elelemento 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 matrizunidimensional y cada elemento en s mismo es una matriz. No es necesario que todaslas 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, elsegundo 8 y el tercero 3. A esto se le conoce como una matriz escalonada, y sonllamadas as por su similitud al concepto de las matrices escalonadas en matemticas.

    Se propone un ejemplo, para entender ms estos conceptos: En una situacin especficapor ejemplo una investigacin de corte ambiental, se requiere tomar la presin

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    33/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    baromtrica, la temperatura mxima y la temperatura mnima de 5 ciudades de larepblica mexicana en un da determinado. El grupo de ciudades se muestra en lasiguiente tabla:

    Numero Ciudad1 Mxico, D.F.2 Puebla, Pue.3 Xalapa, Ver.4 Tepic, Nay.5 Mrida, Yuc.

    Se desarrollar un programa que solicite los datos al usuario y despus los muestre enforma de tabla que tenga el siguiente formato:

    nd ice Ciud ad Presin Temp Max. Temp . Min.1 Mxico, D,F; 585 15 29

    Y as sucesivamente.El cdigo se muestra a continuacin:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    34/65

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    35/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Si se ejecuta la aplicacin se obtendr la siguiente salida:

    Para la ciudad: Mxico, D.F.Cul es su presin baromtrica: 585Cul es su temperatura mxima: 26Cul es su temperatura mnima: 19

    Para la ciudad: Puebla, Pue.Cul es su presin baromtrica: 593Cul es su temperatura mxima: 27Cul es su temperatura mnima: 15

    Para la ciudad: Xalapa, Ver.Cul es su presin baromtrica: 862Cul es su temperatura mxima: 28Cul es su temperatura mnima: 12

    Para la ciudad: Tepic, Nay.Cul es su presin baromtrica: 746Cul es su temperatura mxima: 32Cul es su temperatura mnima: 20

    Para la ciudad: Mrida, Yuc.Cul es su presin baromtrica: 1016Cul es su temperatura mxima: 28Cul es su temperatura mnima: 18

    Tabla capturada

    No.Sucesivo

    Ciudad Presin Temp.Max.

    Temp.Min.

    1 Mxico D.F. 585 26 192 Puebla. Pue. 593 27 153 Xalapa, Ver. 862 28 124 Tepic. Nay. 746 32 205 Mrida, Yuc. 1016 28 18

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    36/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Qu pasa si se define un arreglo de 3 elementos y se desea acceder el elementonmero 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 leintegrarn 2 propiedades get para recuperar ambos datos. Esto se puede observar en elsiguiente cdigo.

    Al definir la clase alumno con los requerimientos dados en la propuesta se observar elsiguiente 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 cdigose muestra a continuacin.

    La primera lnea del programa debe tener la siguiente instruccin, indicando que seutilizarn mtodos de la clase System para leer datos.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    37/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    38/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Si se ejecuta la aplicacin y se da de alta a tres alumnos y se solicitan los datos del ndice2 y el ndice 1 se obtendr la siguiente salida:

    Dame el nombre del alumno: 0 MANUELDame la edad del alumno: 0 20Dame el nombre del alumno: 1 JUANDame la edad del alumno: 1 35Dame el nombre del alumno: 2 PEDRODame la edad del alumno: 2 251.- Mostrar datos de un alumno2.- Terminar

    Tu opcin: 1Escribe el ndice del alumno: 2El alumno nmero: 2El nombre es: PEDROLa edad es: 25

    1.- Mostrar datos de un alumno2.- TerminarTu opcin: 1Escribe el ndice del alumno: 1El alumno numero: 1El nombre es: JUANLa edad es: 35

    1.- Mostrar datos de un alumno2.- TerminarTu opcin: 2

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    39/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 delautor: 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 excepcionesasociadas con el manejo de esta informacin, una de ellas esIndexOutOfRangeException , generada por solicitar un nmero de ndice mayor a loselementos definidos en la inicializacin del arreglo, que es el caso que se estpresentando de error en la superior.

    Se finalizar este tema revisando el concepto de objeto que tienen los arreglos encCSharp. 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 dedimensiones realmente se est definiendo un objeto que adems de tener datos tendrmtodos que permiten manejar la informacin.

    El siguiente ejemplo muestra algunas funciones propias que aparecen al definir unarreglo:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    40/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Como se observa el arreglo a tiene propiedades como Length y mtodos comoAverage () o Sum(), existen otros muchos mtodos y propiedades , estos los puedesconsultar en la base de conocimientos MSN de Microsoft, pero para este tema esto aclarael concepto anterior, con el simple hecho de definir un arreglo se est definiendo un objetoy podr disponer de mtodos que permitirn manipular los datos.

    Se concluye recordando la definicin de arreglo segn Ferguson (2005): son un conjuntofinito de datos todos ellos del mismo tipo, con un mismo nombre e identificados por unndice.

    Actividad 3. Conjuntos de objetos mediante arreglos en C Sharp

    El propsito de la actividad es que soluciones un problema en donde sea necesariomanejar arreglos en un programa en CSharp.

    Para el desarrollo de la actividad tu Facilitador (a) te har llegar un problema dondedebes utilizar arreglos de 2 dimensiones.

    1. Construye un programa y define una matriz de acuerdo con las indicaciones detu Facilitador (a)

    2. Integra un archivo de texto en el cual muestres las capturas de pantalla de laforma como funcion tu programa.

    3. Integra un tu programa las funciones necesarias para que solicite todos los datosdesde 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 renglnseparado por espacios a los valores que conforman las diferentes filas de lamatriz.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    41/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 procedimientorealizado.

    8. Guarda la actividad con el nombre DPRN2_U3_A3_XXYZ. Sustituye las XX porlas dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z portu segundo apellido.

    9. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante laherramienta Tareas

    *No olvides, consultar el documentoCriterios de evaluacin de las actividades de laUnidad 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 datostodos ellos del mismo tipo, con un mismo nombre e identificados por un ndice. FergusonJ. (2005). En esta definicin un punto muy importante y que se relaciona con lascolecciones es el que se defina como un conjunto finito de datos, esto implica unproblema, imagina que te solicitan hacer un programa donde almacenars en un arreglodiferentes tipos de productos producidos por una empresa. En el momento que t llegasse producen 5 tipos diferentes y te dicen que el incremento de nuevos tipos es un procesomuy lento por la gran cantidad de trmites que se debe hacer que aumentan a razn de 1o 2 como mximo cada ao. Una solucin que t propones es crear un arreglo de 20elementos dndole una vida promedio a tu programa de unos 10 aos, siguiendo losdatos estadsticos dados por los requisitos de la empresa.

    Imagina que por alguna razn no identificada durante la toma de los requerimientos, ellosregistran 20 productos en slo dos aos. Inmediatamente tu programa tendr problemasporque 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 momentoque los definimos y antes de usarlos se debe decidir el nmero de datos que se tendrnde ese tipo y este nmero no puede cambiar durante toda la vida del arreglo.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    42/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Una coleccin es una forma sencilla de expresar un arreglo pero no finito (esto nosignifica que sea infinito sino que simplemente no se tiene por qu definir al inicio de suuso cuntos elementos se tendrn, es decir que, se puede agregar elemento traselemento segn se requiera, por supuesto, existe un lmite, por ello no es infinito eselmite lo da la memoria de la computadora, el disco duro, el microprocesador, etc.,), eltrmino coleccin es traducido por muchos autores como contenedor. Est es unaherramienta proporcionada por el .NET Framework , son clases especializadas paraalmacenamiento y recuperacin de datos (Liberty, 2001).

    Las colecciones son un conjunto de clases que permiten almacenar y recuperar datossiguiendo los conceptos que viste en tu materia de estructuras de datos (listas, pilas,colas, arboles, diccionarios, etc.). Al seleccionar una de ellas es posible simplementeguardar informacin dentro de la estructura sin preocuparse de la forma en cmo serealiza esto y cundo se recupera porque no es necesario conocer los detalles de estaoperacin. Como lo indicaDeitel & Deitel (2007). NET Framework proporciona una seriede componentes reutilizables llamados colecciones. Las colecciones estn normalizadaspara que las aplicaciones se puedan compartir con facilidad, sin tener que preocuparsepor los detalles de su implementacin. Estas colecciones estn escritas para una ampliareutilizacin. 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 lasms importantes son listas y diccionarios slo estas se explicarn con detallecontinuacin porque son el fundamento del resto de las colecciones, la primera guardadatos 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 yslo cambian algunas caractersticas tales como: si estn ordenadas o no, si se recuperanen el mismo orden en que se inserta informacin, etctera.

    Lis t : Es equivalente a el concepto de una lista doblemente ligada (tema que revisaste entu materia de Estructura de datos ). Se puede decir que en esta clase o coleccin, seutilizar una lista y el tipo de elementos que sta puede guardar. Automticamente elFramework de .Net proporcionar una serie de propiedades y mtodos que permitirnmanipular esos datos (los que t le ingreses a la lista), tales como la longitud, buscar unelemento, 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:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    43/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    44/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Diccionario : es una coleccin de elementos conformados por un par, que tiene lasiguiente estructura: Llave Valor.

    La informacin no es recuperada por un ndice sino por un valor llave. Se explicar con elsiguiente 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 Valor345 Juan245 Miguel123 ngel667 Pedro

    Tabla ejemplo de informacin de un diccionario (Elaboracin del autor: Manuel PanziUtrera)

    Si se guarda esta informacin en un diccionario y se desea recuperar algn dato, no esposible preguntar qu informacin existe en el registro 2 porque no se maneja de esa

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    45/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    manera. La pregunta debe plantearse de esta forma: si tengo la llave 123 a qu valor lecorresponde?

    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. Lareferencia slo se hace por la llave. Por ejemplo en la tabla anterior puede ser posibletener otro alumno de nombre: Angel pero este debe tener otra llave para identificarlo. Loque no es posible es tener dos llaves iguales que identifiquen a dos personas diferentessera similar a pensar que existen dos personas diferentes con el mismo CURP, por eso elCURP es una clave nica de identificacin de las personas en otras palabras es nuestrallave.

    A continuacin se plantearn algunos ejemplos del uso de coleccin diccionario en elsiguiente cdigo:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    46/65

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    47/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Existen otros contenedores en C Sharp para el manejo de la informacin, se mencionarnalgunos 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 quellegaron. Los objetos almacenados en Queue se insertan en un extremo y se quitan delotro.

    Se utiliza el mtodo Enqueue para poner en la cola un dato, el mtodo Dequeue paraquitar el primer elemento de la cola, el mtodo Peek para localizar el siguiente elementode la cola y el mtodo Dequeue para quitarlo de la cola. Entre muchos otros mtodos.

    A continuacin se expone un ejemplo de uso:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    48/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Si se ejecuta el programa la salida ser:Lista de datos guardados

    0 Archivo.Txt1 Archivo.Pdf2 Archivo.Doc3 Archivo.Ppt

    Stack(pila)

    Representa una coleccin LIFO ("ltimo en entrar, primero en salir") de tamao variablede instancias del mismo tipo. (MSDN, 2013 d)

    Las pilas son tiles para almacenar informacin y procesar la ltima que llego. Los objetosalmacenados en un Stack se insertan en un extremo y se quitan en el mismo, proporcionauna 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 uncontenedor, push que guarda un elemento al inicio de la pila, pop que recupera el primer

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    49/65

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    50/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    balanceado y en el caso de eliminar elementos (que internamente se representan comonodos de un rbol) tambin el balanceo ser de manera automtica.

    SortedList requiere la implementacin de un comparador para ordenar y realizarcomparaciones (MSDN, 2013 c).

    Un comparador no es ms que una clase que le indicar a la coleccin como se debenordenar los objetos dentro de l. Hasta este momento no se ha tenido necesidad deindicar cmo se deben ordenar los objetos dentro de una coleccin porque los datos quesutilizados se ordenan de manera natural, los nmeros enteros por su orden numrico ylas cadenas por el orden alfabtico. Pero en el caso de que se cuente con una coleccincon los datos de un alumno tales como: Nombre, Edad, Sexo, Semestre y Carrera. Esnecesario crear una clase especial que le indique a la coleccin por cul de los 5 camposdebe ser ordenado o si se necesita una combinacin de ellos, (es posible que pornecesidad se deba ordenar por sexo y edad).Por ejemplo las listas de alumnos seordenan de manera comn por apellido paterno, apellido materno y nombre. Estamosusando 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 losautos que estn a la venta en un lote. De los autos se conoce: La placa, la marca, elmodelo (Tsuru de lujo, Focus automtico, etc.), el color, el ao y un precio estimado deventa. Nosotros necesitamos poder listarlos por placa, por modelo o por precio pero esteen dos opciones de menor a mayor o de mayor a menor. Este ejemplo de uso de unSortList en cdigo se representa a continuacin.

    La clase Auto tendra el siguiente cdigo:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    51/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    52/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    53/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    El comparador por placa es el siguiente:

    El comparador por modelo es el siguiente:

    El comparador por precio descendente es el siguiente:

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    54/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    El comparador por precio ascendente es el siguiente:

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

    Placa Marc a Mo del o Co lor Ao Prec ioYCS3932 Nissan Centra Lujo Perla 2000 $95,000.00YTR1010 Ford Focus Bsico Rojo 2001 $80,000.00YFG2100 Volkswagen Golf Estndar Azul acero 2000 $65,000.00YUH2010 Toyota Corola Tpico Blanco 2005 $90,000.00YAT1101 Honda Civic Sedan Gris plata 2010 $98,000.00

    El programa principal mostrar el lote ordenado por placa, modelo, precio ascendente ydescendente. Esto se observa en el siguiente cdigo.

    Se utilizar un List para generar estos resultados.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    55/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    56/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    En el momento de la ejecucin del programa, muestra la siguiente salida:

    YCS3932 NissanCentra Lujo Perla 2000 95000

    YTR1010 FordFocus Bsico Rojo 2001 80000YFG2100 VolkswagenGolf Estndar Azul Acero 2000 65000YUH2010 ToyotaCorola Tpico Blanco 2005 90000YAT1101 HondaCivic Sedan Gris Plata 2010 98000

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    57/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    YAT1101 HondaCivic Sedan Gris Plata 2010 98000YCS3932 NissanCentra Lujo Perla 2000 95000YFG2100 VolkswagenGolf Estndar Azul Acero 2000 65000YTR1010 FordFocus Bsico Rojo 2001 80000YUH2010 ToyotaCorola Tpico Blanco 2005 90000

    YCS3932 NissanCentra Lujo Perla 2000 95000YAT1101 HondaCivic Sedan Gris Plata 2010 98000YUH2010 ToyotaCorola Tpico Blanco 2005 90000YTR1010 FordFocus Bsico Rojo 2001 80000YFG2100 VolkswagenGolf Estndar Azul Acero 2000 65000

    YFG2100 VolkswagenGolf Estndar Azul Acero 2000 65000YTR1010 FordFocus Bsico Rojo 2001 80000YUH2010 ToyotaCorola Tpico Blanco 2005 90000YCS3932 NissanCentra Lujo Perla 2000 95000YAT1101 HondaCivic Sedan Gris Plata 2010 98000

    YAT1101 HondaCivic Sedan Gris Plata 2010 98000YCS3932 NissanCentra Lujo Perla 2000 95000YUH2010 ToyotaCorola Tpico Blanco 2005 90000YTR1010 FordFocus Bsico Rojo 2001 80000

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    58/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    YFG2100 VolkswagenGolf Estndar Azul Acero 2000 65000

    Cmo funciona el comparador que utiliza SortedList? Realmente es muy simple sulgica de funcionamiento es: requiere indicaciones de cmo se ordenan 2 de los valoresque ingresarn al SortedList y el mtodo Sort lo aplicar a todo el conjunto de elementosdentro 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 esde forma descendente.

    Retomando un ejemplo del modelo de 2 autos, se nombrar auto1 y auto2, se compararel modelo del auto1 con el modelo del auto2 (esta comparacin es alfanumrica, la letraA es menor que la B y as sucesivamente, desde el punto de vista de palabrasANGEL es menor que MANUEL porque ANGEL inicia con A y MANUEL con M), si soniguales se regresa un 0, si el modelo del auto1 es mayor que el modelo del auto2regresar un nmero positivo indicando que no se deben intercambiar de posicin, si es locontrario el auto1 es menor que el auto2, se regresa un nmero negativo indicando quese deben intercambiar. Es importante notar que se debe devolver un valor positivo onegativo 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 decomparar valores numricos. En el caso de comparar cadenas se utiliza el mtodocompareTo de las cadenas que devuelve precisamente un -1, +1 o un 0. De esta manerase 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 deellos desde un inicio como se observ en todos los ejemplos la informacin se guarda sinpreocuparse por los lmites de almacenamiento y los mtodos de manejo de informacinporque estos ya se encuentran implementados, es posible tener acceso a ellos de formadirecta con slo invocarlos.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    59/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Actividad 4. Conjuntos de objetos mediante colecciones en C Sharp

    El propsito de la actividad es que soluciones un problema en donde sea necesarioutilizar 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 cualdebes crear un objeto, y este objeto debe ser agregado a un contenedor de los queproporciona Framework de .NET, las operaciones de alta del objeto, listado del contenidodel contenedor y ordenamiento del mismo, se har mediante un men simple.

    1. Construye el objeto solicitado con sus datos y propiedades indicadas por tufacilitador(a), debes sobre-escribir el mtodo ToString(), mostrando el contenidodel objeto en forma ordenada y clara.

    2. Construye las dos clases comparadoras para que puedas ordenar la coleccinpor 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 paraque funcionen las diferentes opciones del men.

    5. Integra un archivo de texto en el cual muestres las capturas de pantalla de cadauno de los pasos de este proceso.

    6. Una vez realizado tu programa, empaca todo tu proyecto en un archivo .zipincluyendo el archivo de texto con las capturas de pantalla del procedimientorealizado.

    7. Guarda la actividad con el nombre DPRN2_U3_EA_XXYZ. Sustituye las XX porlas dos primeras letras de tu primer nombre, la Y por tu primer apellido y la Z portu segundo apellido.

    8. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin mediante laherramienta Tarea .

    *No olvides, consultar el documentoCriterios de evaluacin de las actividades de laUnidad 3 para conocer los parmetros de esta actividad.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    60/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Autoevaluacin

    Antes de desarrollar la evidencia de aprendizaje, realiza la autoevaluacin con el fin dehacer un recuento general de la unidad; as como detectar aquellos temas que no hascomprendido en su totalidad y que necesites revisar nuevamente, o bien consultar contus 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 CSharp

    El propsito de la actividad es que soluciones un problema en donde sea necesario darseguridad a la ejecucin de un programa CSharp, utilizando excepciones el cual manejaun conjunto de objetos.

    Para el desarrollo de la actividad tu Facilitador (a) te har llegar un problema dondedebes controlar una serie de situaciones utilizando excepciones en el cual realizars lossiguientes 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 yutilizando 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 pasoanterior.

    8. Integra un archivo de texto en el cual muestres las capturas de pantalla de cadauno de los pasos de este proceso.

    9. Una vez concluido el desarrollo de tu programa, empaca todo tu proyecto en unarchivo .zip incluyendo el archivo de texto con las capturas de pantalla delprocedimiento realizado.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    61/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    10. Guarda la actividad con el nombre DPRN2_U3_A2_EA_XXYZ. Sustituye las XXpor 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 documentoEA. Criterios de evaluacin U3 para conocer losparmetros de evaluacin de esta actividad.

    Cierre de la unidadEn este momento se ha concluido con el desarrollo de la Unidad III, los temas queabordamos control de errores, arreglos y colecciones son de gran utilidad en el desarrollode aplicaciones empresariales, en C Sharp.

    Con esta unidad concluye tu asignatura Programacin .NET II, los temas que seabordaron redondean tus conocimientos de programacin orientados a objetos y temuestran tambin la importancia de los conocimientos previos anteriores como la deestructura de datos.

    El tema de control de errores nos permite crear aplicaciones estables donde se controlensituaciones especiales que pueden provocar que alguna aplicacin interrumpa suejecucin en forma inesperada.

    El tema de conjunto de objetos te permite ahora visualizar la forma en que una aplicacinpuede manejar mayores volmenes de informacin.

    Con estos dos temas has redondeado tus conocimientos de C Sharp, es momento de unareflexin de todos los temas vistos, es recomendable que contines investigando msinformacin 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.

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    62/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    Para saber ms

    En esta seccin encontrars algunos recursos que es recomendable consultes puesencontrars ms informacin acerca de los principales conceptos revisados en la unidadtales como: control de errores, colecciones y arreglos:

    MSDN Microsoft Developer Network. (2013 l). http://msdn.microsoft.com/es-es/library/System.Collections.Generic.aspx, (Una referencia muy complete de lascolecciones que proporciona C Sharp)

    MSDN Microsoft Developer NetWork. (2013 n). http://msdn.microsoft.com/es-es/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# , quees un desarrollo libre, aunque es una versin muy anterior los conceptosfundamentales no han cambiado. Se encuentra disponible en la seccin Material deapoyo 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 siguientedireccin: 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. EdicinEspaa: 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 dehttp://www.di.ufpe.br/~java/graduacao/referencias/SciAmSept1994.html

    http://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspx
  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    63/65

  • 8/13/2019 Unidad 3 Manipulacion de Errores y Conjuntos de Objetos

    64/65

    Programacin .NET IIUnidad 3. Manipulacin de errores y conjuntos de objetos

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

    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 dehttp://msdn.microsoft.com/es-es/library/system.exception.aspxFecha de consulta: 1 de julio del 2013.

    MSDN, Microsoft Developer Network. (2013 i).Jerarqua de excepciones . Recuperadode http://msdn.microsoft.com/es-es/library/z4c5tckx%28v=VS.80%29.aspxFecha de consulta 20 de julio del 2013.

    MSDN, Microsoft Developer Network. (2013 j ). Matrices y colecciones (Visual C#Express) . Recuperado dehttp://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#. Recuperadode 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 (Espaciode nombres) . Recuperado de http://msdn.microsoft.com/es-es/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/es-es/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.

    http://msdn.microsoft.com/es-es/library/vstudio/dd489406(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/vstudio/dd489406(v=vs.100).aspxhttp://msdn.microsoft.com/es-es/library/9ct4ey7x%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/9ct4ey7x%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspxhttp://msdn.microsoft.com/es-es/library/System.Colle