domingo, 10 de abril de 2016

Facilidades que ofrece la plataforma .NET para el desarrollo de la GUI

La plataforma .NET es la propuesta de Microsoft para competir con la plataforma Java. Mientras que Java se caracteriza por la máxima "write once, run anywhere", la plataforma .NET de Microsoft está diseñada para que se puedan desarrollar componentes software utilizando casi cualquier lenguaje de programación, de forma que lo que escribamos en un lenguaje pueda utilizarse desde cualquier otro de la manera más transparente posible (utilizando servicios web como middleware). Esto es, en vez de estar limitados a un único lenguaje de programación, permitimos cualquier lenguaje de programación, siempre y cuando se adhiera a unas normas comunes establecidas para la plataforma .NET en su conjunto. De hecho, existen compiladores de múltiples lenguajes para la plataforma .NET: Visual Basic .NET, C#, Managed C++, Oberon, Component Pascal, Eiffel, Smalltalk, Cobol, Fortran, Scheme, Mercury, Mondrian/Haskell, Perl, Python, SML.NET...
La plataforma .NET apuesta por un futuro en el que las aplicaciones se ejecutan de manera distribuida en Internet. Así, una aplicación se ejecuta en un solo servidor y no existen múltiples copias de la misma. Además, una misma aplicación puede "adornarse" con distintas interfaces para que, desde diferentes dispositivos (teléfonos móviles, PDAs, portátiles, etc.) pueda accederse a la misma. La plataforma .NET no es más que un conjunto de tecnologías para desarrollar y utilizar componentes que nos permitan crear formularios web, servicios web y aplicaciones Windows.

CLR [Common Language Runtime]

El Common Language Runtime (CLR) es el núcleo de la plataforma .NET ya que es el encargado de gestionar la ejecución de código compilado para la plataforma .NET. Puede asimilarse a la máquina virtual de Java.
Las dos principales características del CLR son:
  • Ejecución multiplataforma: El CLR actúa como una máquina virtual, encargándose de ejecutar las aplicaciones diseñadas para la plataforma .NET. Su especificación está abierta, por lo que cualquier plataforma para la que exista una versión del CLR podrá ejecutar cualquier aplicación .NET. Microsoft ha desarrollado versiones del CLR para la mayoría de las versiones de Windows. Por otro lado Microsoft ha firmado un acuerdo con Corel para portar el CLR a Linux y también hay terceros que están desarrollando de manera independiente versiones de libre distribución del CLR para Linux. Asimismo, dado que la arquitectura del CLR está totalmente abierta, es posible que en el futuro se diseñen versiones del mismo para otros sistemas operativos.
  • Integración de lenguajes: Desde cualquier lenguaje para el que exista un compilador que genere código para la plataforma .NET es posible utilizar código generado para la misma usando cualquier otro lenguaje tal y como si de código escrito usando el primero se tratase.
Otras características destacables son:
  • Modelo de programación consistente: A todos los servicios y facilidades ofrecidos por el CLR se accede de la misma forma: a través de un modelo de programación orientado a objetos.
  • Eliminación del "infierno de las DLLs": En la plataforma .NET desaparece el problema conocido como "infierno de las DLLs" que se da en los sistemas operativos actuales de la familia Windows ya que en la plataforma .NET las versiones nuevas de las DLLs pueden coexistir con las viejas.
  • Gestión de memoria: El CLR incluye un recolector de basura que evita que el programador tenga que tener en cuenta cuándo ha de destruir los objetos que dejen de serle útiles.
    Este recolector es una aplicación que se activa cuando se quiere crear algún objeto nuevo y se detecta que no queda memoria libre para hacerlo. Entonces el recolector recorre la memoria dinámica asociada a la aplicación, detecta qué objetos hay en ella que no puedan ser accedidos por el código de la aplicación, y los elimina para limpiar la memoria de "objetos basura" y permitir la creación de otros nuevos. Gracias a este recolector se evitan errores de programación muy comunes como intentos de borrado de objetos ya borrados, agotamiento de memoria por olvido de eliminación de objetos inútiles o solicitud de acceso a miembros de objetos ya destruidos.
  • Seguridad de tipos: El CLR facilita la detección de errores de programación difíciles de localizar comprobando que toda conversión de tipos que se realice durante la ejecución de una aplicación .NET se haga de modo que los tipos origen y destino sean compatibles.
  • Aislamiento de procesos: El CLR asegura que desde código perteneciente a un determinado proceso no se pueda acceder a código o datos pertenecientes a otro, ni se permite acceder a posiciones arbitrarias de memoria.
  • Tratamiento de excepciones: En el CLR todo los errores que se puedan producir durante la ejecución de una aplicación se propagan de igual manera: mediante excepciones.
  • Soporte multihilo: El CLR es capaz de trabajar con aplicaciones divididas en múltiples hilos de ejecución que pueden ir evolucionando por separado en paralelo o intercalándose, según el número de procesadores de la máquina sobre la que se ejecuten. Las aplicaciones pueden lanzar nuevos hilos, destruirlos, suspenderlos por un tiempo o hasta que les llegue una notificación, enviarles notificaciones, sincronizarlos, etc.
  • Distribución transparente: El CLR ofrece la infraestructura necesaria para crear objetos remotos y acceder a ellos de manera completamente transparente a su localización real, tal y como si se encontrasen en la máquina que los utiliza.
  • Seguridad avanzada: El CLR proporciona mecanismos para restringir la ejecución de ciertos códigos o los permisos asignados a los mismos según su procedendecia o el usuario que los ejecute.
Como se puede deducir de las características comentadas, el CLR lo que hace es gestionar la ejecución de las aplicaciones diseñadas para la plataforma .NET. Por esta razón, al código de estas aplicaciones se le suele llamar código gestionado, y al código no escrito para ser ejecutado directamente en la plataforma .NET se le suele llamar código no gestionado.

Requerimientos que debe cumplir una interfaz gráfica de usuario

El objetivo de el análisis de requerimientos es determinar las condiciones o capacidades que debe cumplir el sistema que se quiere diseñar para satisfacer las necesidades de un grupo de usuarios. Para lograr esto utilizaremos la definición de requerimientos. Un requerimiento se puede entender como una descripción informal de las necesidades y deseos que tiene el usuario final respecto a un producto de software.
En los sistemas informáticos, la relación humano-computadora se realiza por medio de la interfaz, que se podría definir como mediador. Cuando existen dos sistemas cualesquiera que se deben comunicar entre ellos la interfaz será el mecanismo, el entorno o la herramienta que hará posible dicha comunicación.
Podríamos definir básicamente dos tipos de interfaces:
  • La interfaz física: un ratón y un teclado que sirven para introducir y manipular datos en nuestro ordenador.
  • La interfaz virtual o interfaz gráfica (GUI) que permite, mediante iconos (cursor + objetos gráficos metafóricos), interactuar con los elementos gráficos convirtiendo al ser humano en usuario de la aplicación.
Estas dos mediaciones son relaciones del tipo entrada de datos (input). Al igual que tenemos una entrada, necesitamos algo que facilite la salida de datos (output), para esto tenemos, por ejemplo, la pantalla de la computadora, donde se visualizan estas interfaces gráficas, o la impresora, donde se imprimen los datos.
En definitiva GUI es una interfaz de usuario en la que una persona interactúa con la información digital a través de un entorno gráfico de simulación. Este sistema de interactuación con los datos se denomina WYSIWYG (What you see is what you get, ‘lo que ves es lo que obtienes’), y en él, los objetos, iconos (representación visual) de la interfaz gráfica, se comportan como metáforas de la acción y las tareas que el usuario debe realizar (tirar documento = papelera). Estas relaciones también se denominan interfaces objetos-acción (object-action-interface, OAI).
Para diseñar una interfaz es necesario pasar por cuatro etapas:
  1. Análisis de requerimientos del producto, análisis de las tareas. Conocimiento del usuario. Generación de posibles metáforas y análisis del tipo de diálogo. Revisión.
  2. Generación de prototipos virtuales (layouts) o físicos para investigar desde lo general hasta el detalle. Desarrollo de la aplicación, del sitio o del sistema.
  3. Planificación (desarrollo del plan, definición de las medidas, selección de participantes, formación de observadores, preparación de los materiales). Test (prueba piloto, test con usuarios).
  4. Conclusión (análisis de los datos, elaboración del informe, resultados y recomendaciones). Comparación con estándares (internos y/o externos), versiones anteriores del mismo producto y productos competidores. Verificación de las diferencias. Generación de nuevas metas.
Con todas estas fases cubiertas conseguiremos ajustar las necesidades y acercarnos más a la meta deseada de transparencia y flexibilidad de uso de una interfaz gráfica de usuario.

Las características básicas de una buena interfaz  podrían sintetizarse en:
  •  Facilidad de comprensión, aprendizaje y uso
  •  Representación fija y permanente de un determinado contexto de acción (fondo)
  •  El objeto de interés ha de ser de fácil identificación
  •  Diseño ergonómico mediante el establecimiento de menús, barras de acciones e iconos de fácil acceso
  •  Las interacciones se basarán en acciones físicas sobre elementos de código visual o auditivo (iconos, botones, imágenes, mensajes de texto o sonoros, barras de desplazamiento y navegación...) y en selecciones de tipo menú con sintaxis y órdenes
  •  Las operaciones serán rápidas, incrementales y reversibles, con efectos inmediatos
  •  Existencia de herramientas de Ayuda y Consulta
  •  Tratamiento del error bien cuidado y adecuado al nivel de usuario.
El diseñador de interfaces debe facilitar y simplificar el acceso y los recorridos de los usuarios. A menudo se usa la metáfora del viaje o del camino a recorrer y se presentan iconos o símbolos de interfaz y otros dispositivos que tienen que ver con las señales utilizadas en mapas, urbanismo o arquitectura.

Los contextos navegacionales organizan el espacio de navegación, ayudando al usuario a recorrer los contenidos y ofreciéndole herramientas que guíen  o faciliten los recorridos o las búsquedas y la recuperación de información y que le ofrezcan la posibilidad de realizar una serie de acciones estableciendo mecanismos de vuelta atrás , el etiquetado y la vista previa de enlaces y otros procesos automatizados a modo de servicios interactivos. La interfaz de navegación no debe limitarse a la parte visible de la información en un momento dado, sino que debe ser capaz de ofrecer al usuario el acceso a la parte del documento que le interesa y en la forma que desea. Aun tratándose de un entorno navegacional complejo, éste se debe Presentar al usuario de una forma sumamente sencilla y que sea lo más normalizada posible.

domingo, 20 de marzo de 2016

EVENTO

Un evento es la notificación que hace un elemento gráfico cuando el usuario interactúa con el. Un evento la acción que realiza el usuario al presionar  un botón, un texto  etc.


                                                             1.1 Tipos de Eventos
Eventos de bajo nivel.
representan entradas o interacciones de bajo nivel con elementos del interfaz gráfico (cambio de tamaño, cambio de foco, operación con el ratón o con el teclado).



                                                       Eventos de bajo nivel
Evento
Significado
ComponentEvent
Cambios en el tamaño, posición o visibilidad de un componente
FocusEvent
Cambio de foco (capacidad de un componente para recibir entradas desde el teclado).
MouseEvent
Operación con el teclado.
KeyEvent
Operación con los botones del ratón o movimientos del ratón.
WindowEvent
Cambio de estado de una ventana.
AncestorEvent
Cambio en la composición, visibilidad o posición de un elemento superior (ancestro) de la jerarquía de composición.  

Eventos semánticos. 
Eventos de alto nivel que encapsulan la semántica del modelo de componentes del interfaz de usuario (Hacer una acción, un cambio de estado en un elemento, etc.). No están relacionados con una clase específica de componente sino que pueden aplicarse a todos los componentes que implementen un modelo semántico similar.
                                                                     Eventos de alto nivel
Evento
Significado
ActionEvent
Realización de la acción específica asociada al componente.
ChangeEvet
Cambio en el sonido del componente.
ItemEvent
Elemento seleccionado o deseleccionado.
CaretEvent
Cambio de posición del cursor de inserción de un componente que gestiona texto.
ListSelectionEvent
Cambio en la selección actual de una lista.



1.2 Generación y Programación de Eventos.

El paquete java.awt.event es el que contiene la mayor parte de las clases e interfaces de eventos. El modelo de delegación de eventos es un concepto que trabaja de la siguiente manera: Una fuente genera un evento y lo envía a uno a más oyentes o auditores, que han estado simplemente esperando hasta que reciben ese evento y una vez recibido lo procesan y lo devuelven. Una fuente es un objeto que genera un evento. Esto ocurre cuando cambia de alguna manera el estado interno de ese objeto. Las fuentes pueden generar más de un tipo de eventos.


Es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.

Plataformas de desarrollo.
En el año 200 Microsoft presento la plataforma.net con el objetivo de hacer frente a las nuevas tendencias de la industria del software y a la dura competencia de la plataforma java de sun. 
Net. es una plataforma para el desarrollo de aplicaciones que integra multiples tecnologías que han ido apareciendo en los últimos años. Como Asp net, Ado net, Ling, Wpf, Silverlight, etc. 

1.3 Métodos de control de eventos.

Ejemplos de componentes que puedan generar eventos.

 Button. 
Genera eventos de acción (ActionEvent) cuando se presiona el botón.

 Checkbox. 
Genera eventos de elementos (ItemEvent) cuando se selecciona o deselecciona un checkbox. 

Choice.
 Genera eventos de elementos cuando se cambia de opción choice.

 List. 
Genera eventos de acción cuando se hace doble click sobre un elemento, genera eventos de elemento cuando se selecciona o deselecciona un elemento.

 Menu Item.
 Generá eventos de acción cuando se selecciona un elemento de menú; genera eventos del elemento cuando se selecciona o se deselecciona un elemento de un menú de opciones.

 Scrollbar. 
Genera eventos de ajuste (AdjustmentEvent) cuando se manipula el scrollbar.

 Text components. 
Genera eventos de texto (TextEvent) cuando el usuario introduce un carácter. Window. Genera eventos de ventana (WindowEvent) cuando una ventana se activa, se cierra, se desactiva, se minimiza, se maximiza, se abre o se sale de ella.

                                                                         1.4 Creación de Eventos

Para la creación de eventos se necesita definir sobre que componente se desea crear dicho evento.


                                                              Creación de Eventos 
Clase de eventos
Descripción
Actio Event
Se genera cuando se presiona un botón, se hace doble clic en el elemento de la lista, o se selecciona un elemento de tipo menú.
AdjustmentEvent
Se genera cuando se manipula un Scrollbar.
ComponentEvent
Se genera cuando un componente se oculta, se mueve, se cambia de tamaño o se hace visible.
ContainerEvent
Se genera cuando se añade o se elimina un componente de un contenedor
FocusEvent
Se genera cuando un componente gana o pierde el foco.
InputEvent
Superclase abstracta de cualquier clase de evento de entrada de copmonente.
ItemEvent
Se genera cuando se hace clic en un checkbox o en un elemento de una lista; también ocurre cuando se hace una selección en una opción choise o cuando se selecciona o deselecciona un elemento del menú de opciones.
KeyEvent
Se genera cuando se recibe una entrada desde el teclado.
MouseEvent
Se genera cuando el ratón se arrastra, se mueve, se hace clic, se presiona o se libera; también se genera cuando el ratón entra o sale de un componente.
TextEvent
Se genera cuando se cambia el valor de un área de texto o  de un campo.
WindowEvent
Se genera cuando una ventana se activa, se cierra, se desactiva, se minimiza, se maximiza, se abre o se sale de ella.




                                          INTERFAZ GRÁFICA DE USUARIO

                                2.1 Creación de interfaz Gráfica de usuario

La interfaz es la parte visible de las aplicaciones, siendo lo que se percibe de las mismas; por ello, cada vez se les está dando una importancia mayor  y se esta poniendo mas cuidado en el desarrollo. La creación de interfaces de usuario es un área, dentro del desarrollo del software, que ha evolucionado mucho en los últimos años y lo sigue haciendo hasta el día de hoy.

Se podría decir que la interfaz de usuario es lo primero que se juzga de aplicación, y si no tiene la calidad adecuada puede producir rechazo por parte del usuario. Todo aquello que no se pueda expresar a través de la interfaz se perderá, por ello tiene gran importancia dentro del desarrollo de una aplicación del diseño de su interfaz.
Un buen programa con la interfaz doble y no adaptada a las tareas a realizar no sirve de mucho, ya que la interfaz sera más una barrera que un medio que facilite la interacción. Hay que tener siempre presente que la interfaz de usuario determina la usuabilidad de aplicación. 

Por lo tanto la interfaz de usuario debe ser usuable lo que implicará que el usuario consiga realizar las tareas, por medio de ella de forma rápida y sencilla.


                                                        2.2 Computación gráfica 
La computación gráfica por ordenador es el campo de la informática visual donde se utilizan computadoras tanto para generar imagenes  visuales sintéticamente  como integrar o cambiar la información visual y especial probada del mundo real.

El primer avance en la computación gráfica es la utilización de tubos de rayos catódicos. Hay dos acercamientos a la gráfica 2d; vector y gráficos raster. la gráfica del vector almacena datos geométricos precisos, topología y estilo como posiciones de coordenada de puntos.