unidad 3 manipulación de errores y conjuntos de objetos net ii

64
Programación .NET II Unidad 3. Manipulación de errores y conjuntos de objetos 1 División de Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Desarrollo de Software Ingeniería en Desarrollo de Software 8º cuatrimestre Programa de la asignatura: Programación .NET II Unidad 3. Manipulación de errores y conjuntos de objetos Clave: 150930934 Universidad Abierta y a Distancia de México UnADM

Upload: leonel-morales

Post on 18-Dec-2015

41 views

Category:

Documents


7 download

TRANSCRIPT

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

    1 Divisin 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 Mxico

    UnADM

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

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

    ndice

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

    Presentacin de la Unidad ................................................................................................. 3

    Propsitos .......................................................................................................................... 3

    Competencia especfica ..................................................................................................... 4

    3.1. Control de errores en C Sharp .................................................................................... 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 ................................................................................................................. 27

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

    Autoevaluacin ................................................................................................................ 59

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

    Para saber ms ............................................................................................................... 61

    Fuentes de consulta ........................................................................................................ 62

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

    3 Divisin 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.

    Ahora aprenders conceptos fundamentales de la programacin orientada a objetos con

    un enfoque de utilizacin del lenguaje C Sharp.

    Buscar errores y manejarlos adecuadamente es un principio fundamental para disear

    software correctamente, ((Ferguson, Patterson y Beres, 2005, p. 359). 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 (la 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 del

    mismo tipo, tendrn 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 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, el siguiente paso de los arreglos,

    donde es posible guardar con un mismo nombre un conjunto de objetos diferentes (de

    diferentes tipos), y 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.

    Propsitos

    Al trmino de esta unidad logrars:

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

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

    Entender el concepto de manejo de errores y

    utilizar 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 C Sharp.

    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 y controlar los estados no

    esperados con base en el control de errores de la plataforma .NET,

    y su manipulacin en grupos de objetos al emplear la herramienta

    de colecciones.

    3.1. Control de errores en C Sharp

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

    Uno de los principales objetivos del CLR .NET, respecto a los errores en tiempo de

    ejecucin, es evitarlos (como la gestin automtica de la memoria) o al menos capturarlos

    en tiempo de ejecucin (mediante un sistema fuertemente tipado) (Archer, 2010). Aun as,

    hay algunos errores que slo pueden ser capturados en tiempo de ejecucin, para stos

    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 la componen.

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

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

    Tradicionalmente, el sistema que en otros lenguajes y plataformas se ha usado para

    informar estos errores consiste, simplemente, en hacer que los mtodos devolvieran

    cdigos que informasen sobre si se han ejecutado correctamente o, en caso contrario,

    cul fue el error (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, 2013f):

    Frente al anterior mtodo de capturar errores en los lenguajes de programacin, las

    excepciones proporcionan las dos ventajas siguientes:

    Claridad: el uso de cdigos especiales para informar del error suele dificultar la

    legibilidad de la fuente, en tanto que se mezclan las instrucciones de la lgica de ste

    con las del tratamiento de los errores que pudiesen producirse durante la ejecucin.

    Ms informacin: a partir del valor de un cdigo de error puede ser difcil deducir sus

    causas; conseguirlo muchas veces implica consultar la documentacin proporcionada

    por el fabricante sobre el mtodo que lo provoc, pero puede 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 cual est indicado por las clases que definen el

    Framework.

    Por estas ventajas, en la actualidad la mayora de los lenguajes manejan los errores con

    base en estas caractersticas. A continuacin se abordarn 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, 2013m) 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:

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

    6 Divisin 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 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

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

    Se escribe el cdigo que se ejecutar independientemente de si se produce un error o no en el bloque catch. Por ejemplo: Console.WriteLine (El cdigo continua ejecutndose);

    Se escribe el cdigo que debe ser controlado con respecto a,

    o en relacin con, los errores en tiempo de ejecucin.

    Por ejemplo:

    A = B / C;

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

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

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

    Es necesario especificar qu tipo de errores (excepciones) se espera que ocurran para

    ser capturados.

    A continuacin se expone un ejemplo para entenderlo:

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

    Se puede argumentar lo siguiente: este programa se ejecuta correctamente; Se infiere

    que es un programa escrito de forma correcta.

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

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

    Siguiendo con la situacin propuesta, se plantea que el usuario no escriba un nmero,

    sino la palabra hola. El programa se detiene de forma inesperada y enva la siguiente

    ventana:

    Ejemplo de ejecucin incorrecta del programa

    Ahora se puede argumentar que el programa se ejecuta de forma incorrecta. Se infiere

    que es un programa escrito de manera incorrecta.

    En este caso, completamente fuera del control del desarrollador, el programa no puede

    forzar al usuario a 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 (el hecho

    de escribir palabras en lugar de nmeros); pero en ocasiones puede tratarse de errores

    de percepcin; por ejemplo, en lugar de 30 se escribe 3O (el nmero tres 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 tarea del desarrollador controlar este tipo de errores y as evitar que el programa se

    detenga de forma inesperada; para ello deber proporcionar una serie de opciones con el

    fin de que el programa se autocontrole, y si debe terminar lo realice de forma controlada

    o, como dicen algunos autores, de forma limpia (Ferguson, Patterson y Beres, 2005).

    En el ejemplo se deben colocar estas instrucciones entre bloques try y catch, para que

    controlen de forma correcta las acciones de escribir un nmero en formato inadecuado, y

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

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

    no esperar que el programa se detenga de manera repentina. Aqu es necesario reparar

    en un cuestionamiento importante: qu tipo de error se espera?

    Eso puede verse en la siguiente imagen, que corresponde a la parte superior de la figura

    anterior.

    En este caso se espera un error del tipo FormatException, que puede traducirse como

    Excepcin por un mal formato. Se puede controlar si se reescribe el programa de la

    siguiente manera:

    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' el cual no es un nmero

    Sin aparecer la pantalla de error.

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

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

    Pero si el programa se ejecutara tecleando el nmero 3, la salida sera la 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 dos bloques al reescribir el

    cdigo, despus de identificado el error Excepcin 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

    En este caso se enva al usuario un comentario en el que se indica 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:

    Esta es la instruccin que detiene el programa para poder observar los resultados (hasta

    que no se presione la tecla [enter]). Se debe ejecutar sin importar lo que ocurra, una

    manera clara que indicar esto se muestra a continuacin:

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

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

    Puede observarse que el comportamiento es exactamente igual que el programa anterior,

    pero se ha controlado el error y codificado su operacin de una manera ms clara acorde

    con los estndares de .NET.

    El bloque finally es muy utilizado por aplicaciones que deben cerrar de manera correcta,

    independientemente de si se ejecutaron o no con errores. Un caso tpico es cuando se

    cierran bases de datos despus de haber operado sobre la informacin contenida.

    En el bloque catch se observa esta instruccin:

    Se espera capturar un error del tipo FormatException, que ser devuelto en un objeto

    llamado fe (puede ser cualquier nombre vlido de variable en C Sharp). Una buena

    prctica de programacin es utilizar las letras maysculas que compongan la excepcin,

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

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

    segn la base de datos de MSDN (2013g). 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, etctera. 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' el cual no es un nmero

    Esto no es un error porque 3.1 s es un nmero. No es un nmero entero, pero s es

    nmero. Para concluir, puede decirse que la claridad y el control de los mensajes de

    error es entera responsabilidad del desarrollador.

    Ahora que se cuenta con elementos para tener una mejor idea sobre el comportamiento

    de las excepciones en C Sharp mediante .NET, es conveniente definir una serie de

    conceptos importantes para utilizarlos de manera eficiente.

    Si se tiene un programa que llama a un objeto y el objeto llama a un mtodo que lanza

    una excepcin, se inicia un proceso recursivo. Primero se espera 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 ste no tiene cdigo de control, el

    programa se detiene y muestra la ventana de error. A esto se le conoce como

    propagacin de la excepcin. (Archer, 2010).

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

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

    Esquema de propagacin de excepcin

    No

    S

    Inicio de un proceso

    recursivo

    Programa que

    llama a un objeto

    El objeto llama a

    un mtodo

    El mtodo lanza una

    excepcin

    Se controla

    el error El mtodo cuenta

    con cdigo de

    control

    Contina ejecucin

    El objeto cuenta

    con cdigo de

    control

    Se controla

    el error Contina ejecucin

    S

    S El programa

    cuenta con cdigo

    de control No

    Se controla

    el error

    Contina ejecucin

    El programa se detiene inesperadamente

    Fin

    No

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

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

    Las excepciones, finalmente, son objetos y tienen toda una jerarqua de herencia. Existe

    una gran cantidad para controlar cualquier situacin inesperada en la ejecucin de un

    programa.

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

    Diagrama basado en la jerarqua indicada en MSDN (2013i)

    Esta jerarqua muestra, de manera muy simplificada, la complejidad de los objetos que se

    pueden recuperar en la instruccin catch.

    Se considera importante realizar la siguiente aclaracin sobre el diagrama:

    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 hereda de Exception. En el siguiente punto se tratar este 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,

    etctera.), deben ser utilizadas entre los bloques try y catch (Michaellis, 2010).

    Object

    Exception

    ExcepcionesPropias SystemException IOException

    ArithmeticException ArgumentException

    DivideByZeroException ArgumentNullException

    FileNotFoundException

    ExcepcionesPropias

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

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

    A continuacin se propone un ejemplo de este proceso, donde se desarrollar un

    programa que escriba en un archivo de texto en el disco C, en un directorio llamado

    puntonet un archivo de nombre informacin.txt, este archivo tendr como contenido la

    palabra hola. El cdigo se muestra a continuacin.

    Si se ejecuta el programa, es posible darse cuenta de que en el directorio (debe crearse

    como un primer paso) existe un archivo llamado temp.txt y contiene la palabra hola. Se

    puede ejecutar sin los bloques try y catch, pero la recomendacin de los autores es

    utilizar esta sintaxis porque 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

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

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

    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 (error: el directorio no fue encontrado).

    En conclusin, el resultado previsto es un error muy general: IOExcepcion (excepcin en general de entrada y salida), pero debera ser ms especfico: DirectoryNotFoundException (excepcin al no encontrase el directorio). Esto se logra al modificar el programa de la siguiente manera.

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

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

    El mensaje que ahora 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

    uno muy especfico, la no existencia del directorio donde se crear el archivo; mientras

    que el segundo es muy general, para cualquiera producido en el momento de ingresar al

    disco duro.

    Este orden es muy importante. Cuando una instruccin try tiene varios catch, deben ser

    ordenados desde los errores muy especficos hasta los ms generales. Supngase que

    se cambia el orden de las instrucciones catch de la forma en que se indica en el siguiente

    cdigo:

    Se observa un error indicado por el compilador, que sealar que una clusula catch

    previa ya detecta todas las excepciones de este tipo o de tipo superior. Segn lo

    indica Ferguson, Patterson y Beres (2005) Los catch deben ser ordenados de la captura

    del error ms especfico al error ms general (p. 363).

    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 C Sharp.

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

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

    Si se realizan los siguientes pasos:

    1. Entrar a la ventana de comandos de MS-DOS y escribir:

    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

    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 tipo nuevo, pertenece a las excepciones de control de

    seguridad impuestas por el sistema operativo, para asegurar que no se daarn archivos

    en el sistema. Son parte de las credenciales (as se llaman los permisos) que proporciona

    la clave del usuario, por medio del cual se ingresa al sistema Windows. Su control se

    muestra en el siguiente cdigo:

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

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

    El compilador ayuda a colocar la excepcin en el punto adecuado; marca error si se pone

    en otro lugar.

    Para terminar con este subtema, es de resaltarla 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. No olvides

    ejecutar, desde la ventana de MS-DOS, el siguiente comando para permitir que se escriba

    sobre el archivo:

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

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

    20 Divisin 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 subtema anterior, el control de situaciones no esperadas (errores)

    es de suma importancia en el desarrollo de software confiable, pues permitir confiar a la

    ejecucin de un programa no slo el manejo seguro de la informacin, sino incluso tareas

    consideradas crticas, como el manejo de equipos mdicos o los vehculos de la

    actualidad.

    En C Sharp ese control de errores, o control de excepciones, se basa en los comandos

    try, catch y finally. Igualmente, como se coment en el tema anterior, existen dos

    categoras de excepciones bajo la clase Exception, en C Sharp: las predefinidas del

    entorno de ejecucin (common language runtime, CLR) que derivan de

    System.Exception, y las definidas por el usuario en la aplicacin. Existen decenas de

    excepciones que pueden ser controladas desde C Sharp y predefinidas por el CLR;

    algunas de ellas se muestran a continuacin:

    Excepcin Descripcin

    ArithmeticException Desbordamiento por una operacin aritmtica.

    DivideByZeroException Error por una divisin entre cero.

    FileNotFoundException El archivo no fue encontrado.

    FormatException El formato del dato es incorrecto.

    IndexOutOfRangeException El ndice es mayor que el tamao de la matriz o coleccin utilizada.

    IOException Errores de entrada y salida de informacin.

    NullReferenceException Un dato miembro sin inicializar.

    OverflowException El dato no puede guardar el valor que se le indica.

    OutOfMemoryException Se termin la memoria. Tabla. Listado de algunas excepciones en C Sharp. Nota: la lista completa se puede consultar en la base de

    conocimientos de MSDN (2013 h).

    En esta breve lista se puede observar el grado de control sobre los errores posibles al

    programar en C Sharp. Aun as, en ocasiones puede requerirse la creacin de

    excepciones propias por dos razones:

    1. Se trata de un error nuevo y, por lo tanto, no considerado en las excepciones

    estndares que proporciona la plataforma .Net.

    2. Se desea controlar situaciones posibles en la aplicacin, con base en el estndar de

    excepciones propuesto por .Net.

    La primera situacin es un tanto difcil de que ocurra, pues la biblioteca proporcionada por

    el lenguaje es muy completa. La segunda es muy recurrente en la industria de

    desarrollo de software, porque se refiere al control de situaciones especficas del negocio

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

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

    donde se utilizar el programa; por ejemplo: si la aplicacin se ejecutar en una escuela

    donde la calificacin mnima aprobatoria es de 7.0, esa es una regla del negocio de esa

    escuela en particular.

    Si se desea que los usuarios distingan, mediante programacin, ciertas condiciones de

    error de otras, es posible crear sus propias excepciones definidas por ellos mismos; .NET

    Framework proporciona una jerarqua de clases de excepcin que, en ltima instancia,

    deriva de la clase base Exception. Cuando se creen es recomendable finalizar el nombre

    de la clase definida por el usuario con la palabra "Excepcin" (MSDN, 2013e).

    En MSDN (2013e) se recomienda que, si se define una nueva excepcin, se debe

    implementar tres constructores; tal como se muestra en el ejemplo:

    Como puede observarse, se hereda de ApplicationException. Se puede heredar de

    Exception, pero Microsoft menciona 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, 2013a).

    Se debe llamar a estos tres constructores porque estn definidos en la clase padre:

    ApplicationException. Al sobreescribirlos, se agrega una nueva excepcin a la biblioteca

    proporcionada por C Sharp.

    En resumen, las sugerencias que propone Microsoft (Michaellis, 2010) para el desarrollo

    de excepciones propias son las siguientes:

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

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

    1. Finaliza el nombre de tu clase personalizada excepcin con el sufijo Exception, por

    ejemplo: ErrorEnEdadException, SueldoNoEncontradoException, etctera.

    2. Si la frase est compuesta de varias palabras, inicia cada una de ellas con letra

    mayscula, como se ve en los ejemplos anteriores.

    3. La excepcin debe ser serializable (proceso de codificacin donde un objeto se

    convierte en 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.

    4. Se recomienda implementar tres constructores bsicos: el primero sin parmetros,

    el segundo con un mensaje como parmetro, y el tercero con posibilidad de pasar una

    excepcin interna anidada.

    Se exponen los conceptos mencionados mediante el siguiente ejemplo:

    En una empresa se desarrolla un programa donde uno de los datos a capturar es la edad

    del trabajador, que debe estar entre los 18 y los 65 aos (valores vlidos autorizados por

    el IMSS 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.

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

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

    La primera clase, EdadFueraDeRangoException, se hereda de AplicationException.

    Como se indic en las recomendaciones de Microsoft, se implementaron los tres

    constructores indicados (polimorfismo en los constructores, visto en la unidad 2).

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

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

    }

    La segunda clase, program, en su programa principal main, captura la excepcin

    EdadFueraDeRango. La parte try llama un mtodo leerEdad, ste captura la excepcin

    del sistema FormatException.

    En el bloque finally se hace una revisin de la edad, si est fuera del rango indicado por

    el IMSS, se lanza una excepcin; el comando throw es el propuesto por C Sharp para

    lanzarlas. Es posible lanzar una excepcin con cualquiera de los tres constructores. Esto

    permite personalizar el error generado por esta aplicacin.

    Ahora se requiere integrar 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 un puesto la edad permitida debe ser entre 25 y 40 aos. Es posible utilizar

    esta misma excepcin si se modifica el lanzamiento con el siguiente cdigo.

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

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

    La excepcin se ha vuelto muy general, lo que permite que una misma sirva para capturar

    diferentes situaciones.

    Para concluir este tema, debe hacerse nfasis en que, aunque el sistema de excepciones

    de C# es una herramienta muy eficiente que permite, hasta cierto punto, controlar

    imprevistos, nada puede sustituir a una programacin cuidadosa. El propio Stroustrup

    (1997), cientfico de la computacin y catedrtico en la Universidad A&M de Texas, quien

    desarroll el lenguaje C++, advierte que 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, (Stroustrup, 1997, p.

    345).

    Con las excepciones, adems de tener un mejor control sobre los errores, tambin 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 y 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. Integra sus caractersticas y argumenta por qu consideras que representa el tipo de error mencionado.

    4. Guarda la actividad con el nombre DPRN2_U3_A1_XXYZ. Sustituye las XX por

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

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

    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 Base de Datos.

    6. Comenta el reporte de uno (una) de tus compaeros(as), como mnimo, 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 el que sea necesario dar seguridad a la ejecucin de un programa en C Sharp, con base en las 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, al

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

    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

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

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

    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 mediante dos

    formas: arreglos y colecciones.

    Es importante este almacenamiento porque un gran porcentaje de las aplicaciones

    desarrolladas a nivel mundial estn dedicadas al proceso de la informacin, y los

    conjuntos de objetos que guardan informacin son importantes.

    Un conjunto de objetos es un grupo de objetos de software, similares en caractersticas,

    pero diferentes en su contenido. Ejemplo: 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 en la que se representan el nmero de control y nombre.

    En este tema se trabajar con ambos conceptos con base en la propuesta de C Sharp

    para el manejo de la informacin en conjuntos de datos, como se indic en el Tema 3.1.

    Control de errores en C Sharp. Es necesario asegurarse de que el cdigo, al ejecutarse,

    capture todos los errores. Esto es sumamente importante en relacin con un conjunto de

    objetos.

    3.2.1. Arreglos

    Los arreglos son conjuntos de objetos que tienen un mismo tipo, nombre, y son

    controlados por un ndice que los identifica (Deitel y Deitel, 2007). Pueden tener cualquier

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

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

    longitud y almacenar miles o millones de datos; la condicin es que el tamao se debe

    decidir al momento de crear el arreglo.

    Imagina los arreglos como un grupo de cajas que son exactamente iguales, donde se

    guardarn datos. Para poder identificarlas, tendrn un nmero que inicia en cero y termina

    en n. A ese nmero se le llamar ndice porque permite identificar cada caja. Como

    todos los elementos tienen el mismo nombre slo se identifican con un nmero. Pueden

    almacenar tipos de referencia y de valor. El primero describe el lugar donde est el dato

    guardado, pero no lo almacena. De almacenar el dato se encarga el segundo tipo, el 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 con 2GB de memoria

    RAM, tendrs 2 147 483 648 celdas numeradas, desde la cero hasta la 2 147 483 647. A

    cada celda le cabe un byte (un nmero entre cero 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. Es decir, se tienen que realizar dos pasos para descubrir la

    cantidad que se guarda en ese lugar:

    1. Ir al nmero de celda.

    2. 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:

    a) Unidimensionales

    Conjunto de elementos que slo tiene un ndice. Algunos autores los llaman vectores. Se

    pueden definir de dos maneras: la primera se conforma de la siguiente sintaxis (MSDN,

    2013n):

    Tipo [ ] Nombre;

    Nombre = new Tipo [numero_de_elementos];

    La segunda la indica C Sharp, la cual permite hacer en slo un paso las dos instrucciones

    anteriores:

    Tipo [ ] Nombre = new Tipo[numero_de_elementos]

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

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

    Un ejemplo de definicin de un arreglo de esta manera se muestra a continuacin:

    Que segn lo anterior es lo mismo a

    Se define un arreglo con una sola instruccin. Este arreglo es de cinco 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 . . . } ;

    O tambin:

    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:

    En ambos casos se define un arreglo de cinco elementos llamados dato, que contienen

    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 define el arreglo, pero todos ellos inicializados con un cero. En

    el segundo, tambin se define un arreglo, pero inicializado con los valores que estn

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

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

    encerrados entre llaves. Nuestros arreglos tendrn un valor iniciar, ambos casos son

    vlidos en C Sharp.

    b) Multidimensionales

    Un arreglo multidimensional con dos dimensiones se define como un conjunto de

    elementos en el que, para hacer referencia a uno de ellos, se debe indicar su fila y la

    columna donde est situado (Nash, 2010). Estas caractersticas, tener una fila y una

    columna, se llaman matrices (en matemticas, una matriz es un conjunto de nmeros

    ordenados en una tabla, y para identificarlos se necesita hacer referencia a su fila y

    columna).

    Conceptualmente, un arreglo multidimensional con dos dimensiones se asemeja a una

    cuadrcula, tambin llamada matriz.

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

    Un arreglo multidimensional con tres dimensiones se asemeja a un cubo. Las

    dimensiones pueden continuar aunque no se representen de una manera conceptual (no

    existen ejemplos en nuestro mundo real en donde podamos comparar ms de tres

    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 se suponen 10 elementos:

    Dimensiones Producto Elementos

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

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

    1 10 10

    2 10X10 100

    3 10X10X10 1 000

    4 10X10X10x10 10 000

    5 10X10X10X10x10 100 000 Tabla. Dimensiones

    Como se puede observar, el nmero de dimensiones aumenta de forma exponencial los

    registros que se necesitan en memoria, (recuerda que, finalmente, todo dato se

    representa por un espacio en la memoria RAM). Si aumentamos las dimensiones,

    aumentamos el consumo de este espacio.

    Respecto a la forma de representacin, un arreglo de dos dimensiones se puede declarar

    mediante el siguiente formato en C Sharp:

    Tipo [ , ] dato;

    dato = new Tipo [filas, columnas]

    O bien:

    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 ste:

    Equivalente a:

    Si se requiere definir una matriz de tres filas por cuatro 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]

    El mismo dato tambin puede declararse de la siguiente manera:

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

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

    Tipo [ , ] dato = { Datos }

    Un ejemplo de esto es lo siguiente:

    La forma de definir un dato es slo cuestin de estilos del programador. Para el

    compilador de C Sharp el proceso es indistinto.

    Si se define un arreglo de tres filas por cuatro columnas con estos elementos: dato[0,0]=2

    y dato[1,2]=0, es posible definir arreglos de cualquier nmero de dimensiones. Recuerda

    que el lmite es el rpido agotamiento de la memoria.

    Existe el concepto de matriz escalonada, que es una variacin del arreglo

    multidimensional, una matriz de matrices. Es una matriz unidimensional, y cada elemento

    en s mismo es una matriz. No es necesario que todas sean del mismo tamao (MSDN,

    2013j).

    A continuacin se expone un ejemplo:

    Se define un arreglo de tres elementos, pero el primero de ellos tiene cinco; el segundo,

    ocho; y el tercero, tres. A esto se le conoce como una matriz escalonada, y son llamadas

    as por su similitud con el mismo concepto en matemticas.

    Se propone un ejemplo ms para entender mejor estos conceptos: en una investigacin

    de corte ambiental se requiere tomar la presin baromtrica, la temperatura mxima y la

    temperatura mnima de cinco ciudades de la repblica mexicana en un da determinado.

    Numero Ciudad

    1 Mxico, D. F.

    2 Puebla, Pue.

    3 Xalapa, Ver.

    4 Tepic, Nay.

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

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

    5 Mrida, Yuc. Tabla. Grupo de ciudades

    Se desarrollar un programa que solicite los datos al usuario y despus los muestre en

    forma de una tabla que tenga el siguiente formato:

    ndice Ciudad Presin Temp. mx.

    Temp. mn.

    Tabla. Formato

    Y as sucesivamente. El cdigo se muestra a continuacin:

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

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

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

    35 Divisin 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: 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

    Nm. sucesivo

    Ciudad Presin Temp. mx.

    Temp. mn.

    1 Mxico D.F. 585 26 19

    2 Puebla. Pue. 593 27 15

    3 Xalapa, Ver. 862 28 12

    4 Tepic. Nay. 746 32 20

    5 Mrida, Yuc. 1016 28 18 Tabla. Captura

    Sin embargo, de manera general, no existe ninguna limitante para crear arreglos de

    cualquier tipo, en este caso doubles y string. Los arreglos representan una informacin a

    la que se accede a travs de uno o ms ndices, dependiendo del nmero de

    dimensiones.

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

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

    Qu pasa si se define un arreglo de tres elementos y se desea acceder al nmero cinco?

    En el siguiente ejemplo se crear un objeto llamado alumno, el cual tendr como datos

    miembro el nombre y edad del alumno, de tipo string e int, respectivamente. Se realizar

    un constructor que recibir los dos datos y slo se le integrarn dos propiedades get para

    recuperar ambos datos.

    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 que nos permita consultar uno

    de ellos al solicitar el nmero del alumno. La primera lnea debe tener la siguiente

    instruccin e indicar que se utilizarn mtodos de la clase System para leer datos:

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

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

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

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

    Si se ejecuta la aplicacin, se da de alta a tres alumnos y se solicitan los datos del ndice

    dos y uno, 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 nmero: 1

    El nombre es: JUAN

    La edad es: 35

    1.- Mostrar datos de un alumno

    2.- Terminar

    Tu opcin: 2

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

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

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

    Imagen de una excepcin no controlada por un arreglo fuera de rango

    Como se revis en el Tema 3.1. Control de errores en C Sharp, 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 que los

    elementos definidos en la inicializacin del arreglo, caso presentado en la imagen anterior.

    Para finalizar este tema, se revisar el concepto de objeto que tienen los arreglos en C

    Sharp. 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 se est definiendo un objeto que, adems de tener datos, tendr mtodos

    que permitirn manejar la informacin.

    El siguiente ejemplo muestra algunas funciones propias que aparecen al definir un

    arreglo:

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

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

    Como se observa, el arreglo a tiene propiedades como Length, y mtodos como

    Average() o Sum(); existen muchos otros mtodos y propiedades que puedes consultar

    en la base de conocimientos MSDN de Microsoft. Con el simple hecho de definir un

    arreglo, se est definiendo un objeto, y podr disponer de mtodos que permitirn

    manipular los datos.

    Para concluir, se recuerda la definicin de arreglo, segn Ferguson (2005): 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 el que sea necesario manejar arreglos en un programa en C Sharp. Para el desarrollo de la actividad, tu Facilitador(a) te har llegar un problema en el que debes utilizar arreglos de dos 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 a 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, los valores que conforman las diferentes filas de la matriz.

    6. Integra un archivo de texto en el cual muestres las capturas de pantalla de cada uno de los pasos del proceso.

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

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

    7. Una vez realizado tu programa, empaca todo tu proyecto en un archivo .zip; incluye 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 Rbrica de evaluacin de las actividades de la Unidad 3 para conocer los parmetros de esta actividad.

    3.2.2. Colecciones

    Segn el tema anterior, un arreglo es un conjunto finito de datos, todos ellos del mismo

    tipo, con un mismo nombre e identificados por un ndice (Ferguson, Patterson y Beres,

    2005). Un conjunto finito de datos implica un problema. Imagina que te solicitan hacer un

    programa en el que almacenars, en un arreglo, diferentes tipos de productos producidos

    por una empresa. Cuando se te pide hacer el programa, la empresa produce cinco tipos

    diferentes; te dicen que el incremento de nuevos tipos es un proceso muy lento por la

    gran cantidad de trmites que se deben hacer, que aumentan a razn de uno o dos como

    mximo cada ao. Una solucin que propones es crear un arreglo de 20 elementos; con

    lo cual das una vida promedio a tu programa de 10 aos, segn 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,

    pues est diseado en un arreglo de slo 20.

    El problema anterior se presenta porque los arreglos son finitos; es decir, en el momento

    que son definidos y antes de usarlos, se debe decidir el nmero de datos que se tendrn,

    el cual no puede cambiar durante toda la vida del arreglo.

    Una coleccin es una forma sencilla, pero no finita, de expresar un arreglo. Esto no

    significa que sea infinito, sino que no se tiene por qu definir al inicio de su uso cuntos

    elementos se tendrn; es decir, se puede agregar elemento tras elemento segn se

    requiera; por supuesto existe un lmite establecido segn la memoria de la computadora,

    el disco duro, el microprocesador, etctera. El trmino coleccin es traducido por muchos

    autores como contenedor. Es una herramienta proporcionada por .NET Framework,

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

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

    compuesta por clases especializadas para almacenamiento y recuperacin de datos

    (Liberty, 2001).

    Las colecciones son un conjunto de clases que permiten almacenar y recuperar datos

    siguiendo conceptos de estructuras de datos, tales como listas, pilas, colas, rboles,

    diccionarios, etctera. Al seleccionar una de ellas, es posible 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 indican

    Deitel y Deitel (2007), .NET Framework proporciona una serie de componentes

    reutilizables llamados colecciones, que estn normalizadas para que las aplicaciones se

    puedan compartir con facilidad, sin tener que preocuparse por los detalles de su

    implementacin. Estn escritas para una amplia reutilizacin, 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, que se explicarn con detalle a 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

    funciona bajo alguno de estos dos principios, y slo cambian algunas caractersticas; por

    ejemplo, si estn ordenadas o no, si se recuperan en el mismo orden en que se inserta la

    informacin, etctera.

    List

    Es equivalente al concepto de una lista doblemente ligada. 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 los datos (los que t ingreses en la lista), tales como la longitud, buscar o borrar

    un elemento, ordenarlo, encontrar el mximo, el mnimo, etctera. El siguiente cdigo es

    un ejemplo de su uso.

    Todos los programas debern llevar al inicio la siguiente instruccin:

    Esto indica al compilador que se utilizarn las colecciones. El cdigo se muestra a

    continuacin:

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

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

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

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

    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, tal como sucede

    en el siguiente ejemplo: se desarrollar un diccionario conformado por el par, nmero de

    control (un valor entero) y nombre (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

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

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

    Si se guarda esta informacin en un diccionario y se desea recuperar algn dato, no es

    posible preguntar qu informacin existe en el registro dos, porque no se maneja de esa

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

    corresponde?

    Existe una serie de reglas para el manejo de los diccionarios en C Sharp.

    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 ngel, pero debe tener otra llave para identificarlo. No es

    posible tener dos llaves iguales que identifiquen a dos personas diferentes, sera similar a

    pensar que existen dos personas con la misma CURP; por eso la 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:

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

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

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

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

    Existen otros contenedores en C Sharp para el manejo de la informacin. A continuacin

    se mencionan algunos de los ms usados.

    Queue (cola)

    Representa una coleccin de objetos de tipo primero en entrar, primero en salir (MSDN,

    2013b).

    Son tiles para guardar informacin en el orden en que fueron recibidas, simulan una cola

    de personas ante una caja y 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, Dequeue para quitarlo, Peek

    para localizar el siguiente elemento, entre muchos otros.

    A continuacin se expone un ejemplo de uso:

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

    48 Divisin 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.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, 2013d).

    Las pilas son tiles para almacenar informacin y procesar la ltima que lleg. Los

    objetos almacenados en un Stack se insertan en un extremo y se quitan en el otro.

    Proporciona una serie de mtodos para el manejo de la informacin con base en el

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

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

    principio bsico 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 elemento al inicio de la pila. Existe tambin el mtodo

    toArray, que convierte el contenido en un arreglo.

    Se expone a continuacin un ejemplo de uso de pilas:

    Si se ejecuta este programa, la salida ser:

    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.

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

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

    SortedList (lista ordenada)

    Representa una coleccin de pares clave/valor que se ordenan conforme a la clave

    (MSDN, 2013c).

    La clase genrica SortedList es un rbol de bsqueda binaria, que mantiene la

    informacin constantemente ordenada con base, precisamente, en el concepto de rbol

    binario. Este contenedor ya provee mecanismos para mantenerse constantemente

    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 es una clase que le indicar a la coleccin cmo se deben ordenar los

    objetos. Hasta este momento no se ha tenido necesidad de indicar cmo se deben

    ordenar los objetos dentro de una coleccin, porque los datos utilizados se ordenan de

    manera natural, numrica o alfabtica. 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 cinco

    campos debe ser ordenado, o tambin si se necesita una combinacin de ellos (es posible

    que por necesidad deba ordenarse segn sexo y edad). Por ejemplo, las listas de

    alumnos se ordenan por apellido paterno, apellido materno y nombre. Se usan tres

    campos, a esa clase se le llama comparador.

    Un ejemplo de lo dicho es el siguiente: se requiere hacer una coleccin que guarde los

    datos de los autos en un lote a la venta. Se conoce la placa, marca, modelo, color, ao y

    un precio estimado de venta. Se necesita listarlos por placa, modelo o precio; sta ltima

    caracterstica en dos opciones: de menor a mayor, o de mayor a menor. Para lo anterior

    se necesitar el uso de un SortList.

    La clase Auto tendra el siguiente cdigo:

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

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

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

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

    Se necesitan definir cuatro comparadores para tener las cuatro diferentes formas de

    ordenamiento solicitadas: 1) por placa; 2) por modelo o precio, pero ste en dos opciones:

    3) de menor a mayor, y 4) de mayor a menor: tal como se muestra a continuacin.

    Comparador por placa:

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

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

    Comparador por modelo:

    Comparador por precio descendente:

    Comparador por precio ascendente:

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

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

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

    Tabla. Existencias

    Placa Marca Modelo Color Ao Precio

    YCS3932 Nissan Centra Lujo Perla 2000 $95,000.00

    YTR1010 Ford Focus Bsico Rojo 2001 $80,000.00

    YFG2100 Volkswagen Golf Estndar Azul acero 2000 $65,000.00

    YUH2010 Toyota Corola Tpico Blanco 2005 $90,000.00

    YAT1101 Honda Civic Sedan Gris plata 2010 $98,000.00

    El programa principal mostrar el lote ordenado por placa, modelo, precio ascendente y

    descendente. Esto se observa en el siguiente cdigo, en el que se utiliza un List para

    generar los resultados.

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

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

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

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

    En el momento de la ejecucin del programa, se 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

    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

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

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

    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

    YFG2100 Volkswagen

    Golf Estndar Azul Acero 2000 65000

    Cmo funciona el comparador que utiliza SortedList?

    Su lgica de funcionamiento requiere indicaciones de cmo se ordenan dos 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: en la clase del lote de autos

    ahora se desea desarrollar un comparador para ordenar por modelo.

    Con base en el modelo de dos autos, se nombrar auto1 y auto2, se comparar el modelo

    del auto1 con el del auto2 (comparacin alfanumrica donde A es menor que B, y as

    sucesivamente, ANGEL es menor que MANUEL por las iniciales). Si son iguales, se

    regresa un 0; si el modelo del auto1 es mayor que el del auto2, regresar un nmero

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

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

    positivo que indica que no se deben intercambiar de posicin; si es lo contrario, el auto1

    resulta menor que el auto2, se regresa un nmero negativo que indica 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 de la siguiente manera:

    Es muy fcil obtener el valor positivo con base en una resta, cuando se trata de comparar

    valores numricos. En las cadenas se utiliza el mtodo compareTo, de las que devuelve

    un -1, +1 o cero. De esta manera se comparan cadenas.

    Se concluye este tema con una recapitulacin acerca de la utilidad de las colecciones,

    que permiten contener una gran cantidad de datos sin necesidad de definir su nmero

    desde el inicio. La informacin se guarda sin preocuparse por los lmites de

    almacenamiento y los mtodos de manejo de informacin, porque ya se encuentran

    implementados; es posible tener acceso a ellos de forma directa con slo invocarlos.

    Actividad 4. Conjuntos de objetos mediante colecciones en C Sharp

    El propsito de la actividad es que soluciones un problema en el que sea necesario utilizar una de las colecciones que proporciona el Framework de .NET en C Sharp. Para el desarrollo de la actividad tu Facilitador(a) 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 de los datos, se har mediante un men simple.

    1. Construye el objeto solicitado con los datos y propiedades indicadas por tu

    Facilitador(a); debes sobreescribir el mtodo ToString() y mostrar 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.

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

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

    3. Desarrolla un men con las siguientes opciones:

    a. Crea un nuevo objeto. Solicita los datos miembro y adicinalos al contenedor.

    b. Lista el contenido del contenedor. c. Lista en forma ordenada por dos opciones el contenedor. d. 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 que 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, donde incluyas 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 Tareas.

    * No olvides, consultar el documento Rubrica de evaluacin de las actividades de la Unidad 3 para conocer los parmetros de esta actividad.

    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 el que sea necesario dar

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

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

    seguridad a la ejecucin de un programa C Sharp, debes utilizar excepciones que manejen un conjunto de objetos. Para el desarrollo de la actividad, tu Facilitador(a) te har llegar un problema en el que debes controlar una serie de situaciones con base en excepciones; para ello 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, a partir de 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 que 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 que incluya el archivo de texto con las capturas de pantalla del procedimiento realizado.

    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

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

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

    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 la importancia de los conocimientos previos, tales como la 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 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 lo visto. Es recomendable que investigues ms sobre objetos,

    constructores, polimorfismo, sobrecarga, herencia y sobreescritura. Revisa su interaccin

    con el control de errores.

    Felicidades, llegaste al final de esta aventura.

    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:

    Referencia muy completa de las colecciones que proporciona C Sharp:

    MSDN. (2013). Jerarqua de excepciones. Recuperado de

    http://msdn.microsoft.com/es-es/library/z4c5tckx%28v=VS.80%29.aspx

    Referencia muy completa de los usos de try-catch que nos proporciona C Sharp:

    MSDN. (2013). Try-catch-finally (Referencia de C#). Recuperado de

    http://msdn.microsoft.com/es-es/library/dszsf989.aspx

    El libro de Jos Antonio Gonzlez Seco, El lenguaje de programacin C#, 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/LibroC Sharp.pdf

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

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

    Consulta el manual completo de C Sharp (MSDN, 2013) 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: McGraw-Hill.

    Deitel, M. y Deitel, P. (2007). Cmo programar en C Sharp, 2a. ed. Madrid: Pearson.

    Ferguson, J., Patterson, B. y Beres, J. (2005). La biblia de C#. Madrid: Anaya.

    Gibbs, W. (1994). Softwares Chronic Crisis. Recuperado de

    http://www.di.ufpe.br/~java/graduacao/referencias/SciAmSept1994.html

    Gonzlez, J. (s. f.). Lenguaje de programacin en C#. Recuperado de

    http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf

    Liberty, J. (2001). Programming C#. Estados Unidos: Oreilly.

    Michaellis, M. (2010). Essential C# 4.0. Estados Unidos: Addison Wesley.

    Microsoft Corporation. (1999-2007). C# Language Specification Version 3.0.

    Recuperado de http://www.microsoft.com/en-us/download/details.aspx?id=7029

    MSDN. (2013a). ApplicationException (Clase). Recuperado de

    http://msdn.microsoft.com/es-

    x/library/system.applicationexception%28v=vs.80%29.aspx

    _____________________________. (2013b). Clase genrica Queue. Recuperado de

    http://msdn.microsoft.com/es-es/library/7977ey2c%28v=vs.80%29.aspx

    ______________________________. (2013c). Clase genrica SortedList.

    Recuperado de

    http://msdn.microsoft.com/es-es/library/ms132319%28v=vs.80%29.aspx

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

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

    _____________________________. (2013d). Clase genrica Stack. Recuperado de

    http://msdn.microsoft.com/es-es/library/3278tedw%28v=vs.80%29.aspx

    _____________________________. (2013e). Cmo: Crear excepciones definidas por

    el usuario. Recuperado de http://msdn.microsoft.com/es-

    es/library/87cdya3t%28v=vs.80%29.aspx

    _____________________________. (2013f). Controlar y generar excepciones.

    Recuperado de http://msdn.microsoft.com/es-es/library/5b2yeyab.aspx

    _____________________________. (2013g). Excepciones. Recuperado de

    http://msdn.microsoft.com/es-es/library/vstudio/dd489406(v=vs.100).aspx

    _____________________________. (201h). Exception (Clase). Recuperado de

    http://msdn.microsoft.com/es-es/library/system.exception.aspx

    _____________________________. (2013i). 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.

    _____________________________. (2013j). Matrices y colecciones (Visual C#

    Express). Recuperado de

    http://msdn.microsoft.com/es-es/library/9ct4ey7x%28v=vs.90%29.aspx

    _____________________________. (2013k). Manual del lenguaje C#. Recuperado de

    http://msdn.microsoft.com/es-es/library/zkxk2fwf%28v=vs.90%29.aspx

    _____________________________. (2013l). System.Collections.Generic (Espacio de

    nombres). Recuperado de http://msdn.microsoft.com/es-

    es/library/System.Collections.Generic.aspx

    _____________________________. (2013m). Try-catch (Referencia de C#).

    Recuperado de http://msdn.microsoft.com/es-

    es/library/0yd65esw%28v=vs.110%29.aspx

    _____________________________. (2013n). Try-catch-finally (Referencia de C#).

    Recuperado de http://msdn.microsoft.com/es-es/library/dszsf989.aspx

    _____________________________. (2013). Tutorial de matrices

    http://msdn.microsoft.com/es-es/library/aa288453(v=vs.71).aspx

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

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

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

    Sharp, J. (2010). Microsoft Visual C# 2010. Estados Unidos de Amrica: Microsoft

    Press.

    Stroustrup, B. (1997). The C++ Programming Language, 3a. ed. Estados Unidos:

    Addison-Wesley.

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

    Amrica: Apress.