Ir al contenido principal

Tópicos avanzados de programación ll

UNIDAD 1 EVENTOS 
  • 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 del foco, operación con el ratón o con el teclado).
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.
  • Generación y propagació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.
Una fuente tiene que ir acompañada de auditores para que estos reciban las
notificaciones sobre el tipo específico de evento, cada tipo de evento tiene su
propio método de registro.
Un auditor es un objeto que es avisado cuando ocurre un evento. Tiene dos
requisitos principales. Primero tiene que ser registrado o ir acompañado por una o
más fuentes para recibir notificaciones sobre los tipos específicos de eventos.
Segundo, tiene que implementar métodos para recibir y procesar notificaciones.
  • Métodos de control de eventos.
Ejemplos de componentes que pueden generar eventos:
  1. Button: Genera eventos de acción (ActionEvent) cuando se presiona el botón.
  2. Checkbox: Genera eventos de elementos (ItemEvent) cuando se selecciona o deselecciona un checkbox.
  3. Choice: Genera eventos de elementos cuando se cambia de opción choice.
  4. 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.
  5. 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.
  6. Scrollbar: Genera eventos de ajuste (AdjustmentEvent) cuando se manipula el scrollbar.
  7. Text components: Genera eventos de texto (TextEvent) cuando el usuario introduce un carácter
  8. 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.
    https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=video&cd=1&cad=rja&uact=8&ved=0ahUKEwjPqYq565jVAhWM54MKHSAtArQQtwIIIzAA&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DP5iyElfFqj4&usg=AFQjCNE2s_4sqIjxattdzcrs7OBMfz97YQ
  • Creación de eventos.
Para la creación de eventos es necesario definir sobre que componente se desea
crear dicho evento.
Clases de eventos principales en java.awt.event
  • ActionEvent: Se genera cuando se presiona un botón, se hace dobleclic en un elemento de una 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 componente.
  • ItemEvent: Se genera cuando se hace click en un checkbox o en un elemento de una lista; también ocurre cuando se hace una selección en una opción choice o cuando se selecciona o deselecciona un elemento de un 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 un campo de texto
  • WindowEvent: Se genera cuando una ventana se activa, se cierra, se desactiva, se minimiza, se maximiza, se abre, o se sale de ella.
    https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=video&cd=3&cad=rja&uact=8&ved=0ahUKEwinrKP465jVAhUh8YMKHctaDKEQuAIIMDAC&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DEkWtVnGh8DA&usg=AFQjCNFM5Z7qg7jlJuPGzTkSpnplXZIv7g
UNIDAD 2 INTERFAZ GRÁFICA DE USUARIO
  • Creación de interfaz gráfica para usuarios.

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 está poniendo más cuidado en su desarrollo. La creación de interfaces de usuario es un área, dentro del desarrollo de software, que ha evolucionado mucho en los últimos años y lo sigue haciendo a día de hoy.
Se podría decir que la interfaz de usuario es lo primero que se juzga de una aplicación, y si no tiene la calidad adecuada puede producir rechazo por parte del usuario. 

Una interfaz puede incluso poner limitaciones en la comunicación de la máquina con el 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 el diseño de su interfaz.

Un buen programa con una interfaz pobre y no adaptada a las tareas a realizar, no sirve de mucho, ya que la interfaz será más una barrera que un medio que facilite la interacción. Hay que tener siempre presente que la interfaz de usuario determina la usabilidad de la aplicación.

La usabilidad es una medida de uso de un producto por determinados usuarios, con el fin de alcanzar ciertos objetivos de eficiencia, efectividad y satisfacción, todo ello dentro de un contexto de uso concreto.

Por lo tanto, la interfaz de usuario debe ser usable, lo que implicará que el usuario consiga realizar las tareas por medio de ella de forma rápida y sencilla, y se encuentre cómodo con la aplicación.


Una interfaz gráfica de usuario (GUI) es una interfaz de usuario en la que se hace uso de un entorno gráfico. Es decir, permite la interacción del usuario con el ordenador mediante la utilización de imágenes, objetos pictóricos (ventanas, iconos, botones, etcétera), además de texto. GUI es un acrónimo del vocablo inglés Graphical User Interface.

Una aplicación sin un interfaz fácil, impide que los usuarios saquen el máximo rendimiento del programa. Java proporciona los elementos básicos para construir decentes interfaces de usuario a través del AWT, y opciones para mejorarlas mediante Swing, que sí permite la creación de interfaces de usuario de gran impacto y sin demasiados quebraderos de cabeza por parte del programador.

Al nivel más bajo, el sistema operativo transmite información desde el ratón y el teclado como dispositivos de entrada al programa. 
El AWT fue diseñado pensando en que el programador no tuviese que preocuparse de detalles como controlar el movimiento del ratón o leer el teclado, ni tampoco atender a detalles como la escritura en pantalla. El AWT constituye una librería de clases orientada a objeto para cubrir estos recursos y servicios de bajo nivel.

Debido a que el lenguaje de programación Java es independiente de la plataforma en que se ejecuten sus aplicaciones, el AWT también es independiente de la plataforma en que se ejecute. 
El AWT proporciona un conjunto de herramientas para la construcción de interfaces gráficas que tienen una apariencia y se comportan de forma semejante en todas las plataformas en que se ejecute. Los elementos de interfaz proporcionados por el AWT están implementados utilizando toolkits nativos de las plataformas, preservando una apariencia semejante a todas las aplicaciones que se creen para esa plataforma. 

Este es un punto fuerte del AWT, pero también tiene la desventaja de que una interfaz gráfica diseñada para una plataforma, puede no visualizarse correctamente en otra diferente. Estas carencias del AWT son subsanadas en parte por Swing.
https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=video&cd=1&cad=rja&uact=8&ved=0ahUKEwiF--f47JjVAhUr4IMKHW1ICa0QtwIIIzAA&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DcEcLs2ZduJ4&usg=AFQjCNHYXWKSn4-vGbA-YdTGDRldPjs7eQ
  • Computación Gráfica.

Los elementos que componen la interfaz gráfica son elementos visuales, y a través de ellos el usuario puede interactuar con la aplicación. En esta interacción el usuario introduce datos que el programa necesita para llevar a cabo su funcionalidad y obtiene los resultados de procesar dichos datos. Por ejemplo, las ventanas, los botones, las imágenes, etc. Son elementos gráficos .

Una diferencia clara entre una aplicación de consola y una aplicación con interfaz gráfica de usuario, es que la primera no tiene ningún elemento gráfico, mientras que en la segunda éstos si existen.


Las interfaces gráficas están formadas por ventanas de diferentes tipos que se pueden solapar, mover, cerrar, etc. Dentro de estas ventanas se encuentran otros elementos (botones, etiquetas, campos de texto, imágenes, etc.) que permiten introducir datos y mostrar el estado de la aplicación. El ratón y el teclado permiten manejar los elementos que forman parte de la interfaz.

Para implementar una aplicación que nos permita generar una interfaz gráfica de usuario se debe de seguir la siguiente estructura:

ELEMENTOS PRINCIPALES DE UNA INTERFAZ GRAFICA SWING.
  • Ventanas: Las ventanas son elementos encargados de albergar a otros y que generalmente, se pueden mover libremente por la pantalla. Existen diferentes tipos en base a su uso y características.
  • Ventanas de aplicación: Las ventanas de aplicación son aquellas que contienen a todos los elementos de una aplicación.
  • Cuadros de diálogo: Los cuadros de diálogo son ventanas que, normalmente, se muestran un breve periodo de tiempo en la pantalla. Se suelen utilizar para informar al usuario de alguna situación o pedirle datos en un momento determinado.
  • Ventanas internas: Las ventanas internas son un tipo de ventanas específico. Se suelen utilizar para albergar documentos dentro de la ventana de aplicación o para mostrar cajas de herramientas.
  • Componentes: Todos aquellos elementos de una interfaz gráfica con entidad propia y una funcionalidad asociada con componentes. Por ejemplo: botones, barras de desplazamiento, etiquetas, imágenes, listas desplegables, tablas, árboles, etc. No son componentes, por ejemplo, los colores, las líneas, las letras, los píxeles, etc.
  • Controles: Los controles son aquellos componentes que pueden recibir información del usuario cuando éste interactúa con la aplicación mediante el ratón o el teclado. Los más comunes son: botones, barras de desplazamiento, cuadros de texto, etc.
  • Contenedores: Un contenedor es un componente que puede mostrar en su interior otros componentes. A los componentes que no son contenedores se les conoce como componentes atómicos.
  • Menús: Los menús son elementos que contienen botones distribuidos verticalmente. La pulsación de uno de estos botones abrirá un nuevo menú o bien iniciará alguna acción de la aplicación. Los menús pueden aparecer al pulsar el botón secundario del ratón sobre algunos elementos de la interfaz. Si el contenido del menú depende del elemento pulsado, se denomina menú contextual.
  • Barras de menús: Las barras de menús suelen aparecer en la parte superior de las ventanas. Se componen de una barra horizontal con botones, que al ser pulsados despliegan verticalmente un menú.
    https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=video&cd=5&cad=rja&uact=8&ved=0ahUKEwiF--f47JjVAhUr4IMKHW1ICa0QtwIIODAE&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5GQvgfPYSKg&usg=AFQjCNGW3NHXc0GJqz_ydgNaJRtiz7cLbQ



Para poder leer datos y mostrar mensajes se usan métodos de la clase JOptionPane y son:
  • JOptionPane.showMessageDialog(null, mensaje en el cuadro de dialogo, titulo del cuadro de dialogo, tipo de mensaje del cuadro de dialogo).
  • JOptionPane.ERROR_MESSAGE(Muestra un cuadro de dialogo que muestra un error al usuario, muestra icono)
  • JOptionPane.INFORMATION_MESSAGE(Muestra un cuadro de dialogo que muestra un mensaje informativo al usuario, muestra icono)
  • JOptionPane.WARNING_MESSAGE(Muestra un cuadro de dialogo que muestra un mensaje de peligro al usuario, muestra icono)
  • JOptionPane.QUESTION_MESSAGE(Muestra un cuadro de dialogo que muestra un mensaje de pregunta al usuario, muestra icono)
  • JOptionPane.PLAIN_MESSAGE(Muestra un cuadro de dialogo que muestra un mensaje, sin icono)


UNIDAD 3 COMPONENTES Y LIBRERÍAS 
  • Definición conceptual de componentes, paquetes/librerías.

Componente.
Un componente es el elemento básico de una interfaz gráfica. Los componentes permiten al usuario interactuar con la aplicación y proporcionar información desde el programa al usuario sobre el estado de la aplicación. Ejemplos de componentes son: los botones, las barras de desplazamiento, las etiquetas, las listas, las cajas de selección o los campos de texto, entre otros.
Cabe mencionar que los componentes nunca se encuentran de forma aislada, sino agrupados dentro de contenedores. Los contenedores contienen y organizan la situación de los componentes; además, son en sí mismos componentes y como tales pueden ser situados dentro de otros contenedores.
Paquetes.
Los paquetes en Java son una manera de organizar nuestras clases, ya sea por finalidad, por su relación con la herencia que tienen, etc.

Pasos para crear o utilizar paquetes (package):
  1.  Crear una carpeta – paquete.
  2.  Mover y/o almacenar las clases que solucionan el problema.
  3.  A cada una de las clases, se les agrega la palabra reservada “package” de la    siguiente forma:
    package NombreDeLaCarpeta;
  4.  Las clases deben llevar el modificador “public”, por ejemplo:
    public class Numero.
  5.  A las clases que utilicen las clases enpaquetadas, se les indica la ruta de las clases correspondientes, ocupando la palabra reservada “import”.
    import NombreDeLaCarpeta.*;
Librerías.
Conforme empieza a crecer un desarrollo de Software surge la necesidad de reutilizar ciertos componentes que ya han sido escritos, así como dar cierta estructura para mantener una organización de código; al igual que otros lenguajes, esta organización se lleva acabo mediante librerías, denominadas "packages" en el mundo Java .
https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=video&cd=2&cad=rja&uact=8&ved=0ahUKEwjWjp7D7ZjVAhXj7oMKHaA7CN8QtwIIJjAB&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DewarUDFZN9c&usg=AFQjCNG5wQgCrK-WHy4w59zyC52lZhROtQ

  • Uso de componentes (visuales y no visuales) proporcionados por el lenguaje.

Swing es un conjunto de componentes visuales que son parte del java. Son livianos respecto a sus antecesores llamados AWT y son independientes de la plataforma.

El siguiente es un árbol de componentes usados en SWING los cuales usan la infraestructura de AWT.


A continuación se muestra los componentes visuales.

Componentes de alto nivel para Ventanas:

Contenedor de componentes:
Componentes de menú:
Componentes de texto:
Componentes de complejos:
Controles atómicos:
  • Uso de librerías proporcionadas por el lenguaje.

Librerías/paquetes más utilizados en java:
  • java.lang: Contiene clases esenciales para el lenguaje java y es el único paquete se importa automáticamente.
  • java.io: Soporta flujos de entrada y salida java.
  • java.net: Soporta facilidades de red (URL, sockets TCP, sockets UDP, direcciones IP, conversiones binarias a texto).
  • java.util: Contiene diversas clases de utilidad (conjunto de bits, enumeración, contenedores, genéricos, Vectores y Hashtable, fecha, hora separación de token, generación de números aleatorios, propiedades del sistema).
  • java.awt: La librería java.awt proporciona un Abstract Window Toolkit para programación GUI (Interfaz gráfica de usuario), dibujo de gráficos e imágenes, asi como también eventos colores, tipo de letras, botones, campos de texto, etc.
  • javax.swing: Paquete que mejora el AWT, proporcionando un conjunto de componentes que se ejecutan uniformemente en todas las plataformas.
  • java.sql: Junto con el paquete javax.sql, permite la conexión a bases de datos, el envío de sentencias SQL y la interpretación de los resultados de las consultas.
  • java.sound.midi: Paquete con clases e interfaces que permiten la captura, procesamiento y reproducción de música.
  • java.math: Proporciona cálculos matemáticos.
  • java.applet: El paquete java.applet permite la creación de applets a través de la clase Applet, proporciona interfaces para conectar un applet a un documento Web y para audición de audio.

  • Creación de componentes (visuales y no visuales) definidos por el usuario.

El formato de ficheros de ”Archivos Java” permite empaquetar varios ficheros en un sólo archivo. Típicamente un fichero JAR contendrá los ficheros de clases y los recursos auxiliares asociados con los programas y aplicaciones. Estos recursos auxiliares podrían incluir, por ejemplo, ficheros de imagen y sonido que sean utilizados por un programa.
https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=video&cd=2&cad=rja&uact=8&ved=0ahUKEwjWgsH77ZjVAhVL5YMKHX6VC7gQtwIIJjAB&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS8YAnHmEsTM&usg=AFQjCNEqRzyD3rxaVsLax7sWIDryDfZsqQ

Proceso de creación de componentes en NetBeans:

  1. Crear un proyecto en NetBeans.
  2.  Crea un archivo .java (JPanel Form).

  3. Ya creado el JPanel Form agregar los componentes y código correspondientes para la funcionalidad del programa.
  4. Crear el .jar de la aplicación.

    Run ---- Build Proyect
  5. Ya creado el archivo .jar del JPanel, se agrega en a paleta de componentes.
  6. Se crea una nueva categoría(New Category) y después se agrega el .jar (Add from JAR…)
  7. Se busca el .jar y se carga:
  8. Se selecciona la carpeta donde se desea cargar el .jar..
  9. Después de cargar ya se puede utilizar el componente y debe aparecer en la paleta de componentes en la sección cargada.


  • Creación y uso de paquetes/librerías definidas por el usuario

Los paquetes son el mecanismo por el que Java permite agrupar clases, interfaces, excepciones y constantes. De esta forma, se agrupan conjuntos de estructuras de datos y de clases con algún tipo de relación en común.
Con la idea de mantener la reutilización y facilidad de uso de los paquetes desarrollados es conveniente que las clases e interfaces contenidas en los mismos tengan cierta relación funcional. De esta manera los desarrolladores ya tendrán una idea de lo que están buscando y fácilmente sabrán qué pueden encontrar dentro de un paquete.

Creación de un paquete:
  • Declaración


Para declarar un paquete se utiliza la sentencia package seguida del nombre del paquete que estemos creando:

package NombrePaquete;

La estructura que ha de seguir un fichero fuente en Java es:
  1. Una única sentencia de paquete (opcional).
  2. Las sentencias de importación deseadas (opcional).
  3. La declaración de una (y sólo una) clase pública (public).
  4. Las clases privadas del paquete (opcional).

Por lo tanto la sentencia de declaración de paquete ha de ser la primera en un archivo fuente Java.
  • Nomenclatura.

Para que los nombres de paquete puedan ser fácilmente reutilizados en toda una compañía o incluso en todo el mundo es conveniente darles nombres únicos. Esto puede ser una tarea realmente tediosa dentro de una gran empresa, y absolutamente imposible dentro de la comunidad de Internet.
  • Subpaquetes.

Cada paquete puede tener a su vez paquetes con contenidos parecidos, de forma que un programador probablemente estará interesado en organizar sus paquetes de forma jerárquica. Para eso se definen los subpaquetes.
Para crear un subpaquete bastará con almacenar el paquete hijo en un directorio Paquete/Subpaquete.
El JDK define una variable de entorno denominada CLASSPATH que gestiona las rutas en las que el JDK busca los subpaquetes. El directorio actual suele estar siempre incluido en la variable de entorno CLASSPATH.
  • Uso de un paquete.

Con el fin de importar paquetes ya desarrollados se utiliza la sentencia import seguida del nombre de paquete o paquetes a importar.
Se pueden importar todos los elementos de un paquete o sólo algunos.
Para importar todas las clases e interfaces de un paquete se utiliza el metacaracter *:
  • import PaquetePrueba.*;

También existe la posibilidad de que se deseen importar sólo algunas de las clases de un cierto paquete o subpaquete:
  • import Paquete.Subpaquete1.Subpaquete2.Clase1;

Para acceder a los elementos de un paquete, no es necesario importar explícitamente el paquete en que aparecen, sino que basta con referenciar el elemento tras una especificación completa de la ruta de paquetes y subpaquetes en que se encuentra.
  • Paquete.Subpaquetes1.Subpaquete2.Clase_o_Interfaz.elemento

En la API de Java se incluyen un conjunto de paquetes ya desarrollados que se pueden incluir en cualquier aplicación (o applet) Java que se desarrolle.
  • Ámbito de los elementos de un paquete.

Al introducir el concepto de paquete, surge la duda de cómo proteger los elementos de una clase, qué visibilidad presentan respecto al resto de elementos del paquete, respecto a los de otros paquetes.

UNIDAD 4
PROGRAMACIÓN CONCURRENTE MULTIHILO

  • Concepto de hilo
Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia de instrucciones un conjunto de registros y una pila. 
Cuando se crea un proceso el S.O crea su primer hilo (hilo primario) en la cual puede,a su vez,crear hilos adicionales. esto pone de manifiesto que un proceso no ejecuta,si no que es sólo el espacio de direcciones donde recide el código que es ejecutado mediante uno o más hilos. 
En un S.O tradicional. Cada proceso tiene un espacio de direcciones y un único hilo de control por ejemplo, considere que un programa que incluya la siguiente secuencia de operaciones para actualizar el saldo de una cuenta bancaria cuando se efectúa un nuevo ingreso:


Saldo=Cuenta.ObtenerSaldo (); 
Saldo+=ingreso;
Cuenta.EstablecerSaldo (saldo);


Cada hilo se ejecuta de forma estrictamente secuencial y tiene su propia pila en estados de los registros de UCP y su propio contador de un programa en cambio comparte el mismo espacio de direcciones, lo que significa compartir también las mismas variables globales, el mismo conjunto de ficheros abiertos, procesos hijos (no hilos hijos), señales, semáforos, etc. 

A continuación se mostrara un pequeño vídeo del uso de multihilos.
  • Creacion y control  de hilo
Los hilos de java se pueden crear en dos formas: escribiendo una nueva clase derivada de Theread, o bien haciendo una clase existente implementa la interfaz Runnable . 
La clase Thread,que implemente la interfaz Runnable,de forma resumida,está definida así:


public class Thread extends Object implements Runnable
//Atributos 



static int MAX_PRIORITY;
//Prioridad máxima que un hilo puede tener.



static int MIN_PRIORITY; 
//Prioridad mínima que un hilo puede tener.  



static int NORM_PRIORITY; 
//Prioridad asignada por omisión a un hilo. 
//Constructores 



Thread ([argumentos]) 
//Métodos 



static Theread currentThread()
//Devuelve una referencia al hilo que actualmente esta en ejecución. 



long getID() 
//Devuelve el identificador del hilo



String getName() 
//Devuelve el nombre del hilo.



int getPriority() 
//Devuelve la prioridad del hilo. 



void interrupt() 
//Envía este hilo al estado de preparado. 



boolean isAlive() 
//Verifica sí este hilo está vivo (no ha terminado). 



boolean isDaemon() 
//Verifica sí este hilo es un demonio. Se da este nombre a un hilo se ejecuta en segundo plano, realizando una operación específica en tiempos predefinidos, o bien en respuestas a ciertos eventos.

boolean is Interrupted() 
//Verifica si este hilo ha sido interrumpido. 

void join([milisegundos[. nanosegundos]]) 
//Espera indefinidamente o el tiempo especificado,a que este hilo termine (a que muera). 

void run()



En esta imagen se muestra la creación y utilización de un hilo, este hilo es llamado hilo.Start();
  • Sincronización de hilos 
Cuando se están utilizando hilos múltiples, algunas veces es necesario coordinar las actividades de dos o más. El proceso por el cual se logra esto se llama sincronización. 
La razón más común para la sincronización es cuando dos o más hilos necesitan acceso a un recurso compartido que sólo puede ser utilizado por un hilo a la vez. 
Otra razón para la sincronización es cuando un hilo está esperando un evento causado por otro hilo. En este caso, debe de haber algún medio por el cual el primer hilo se mantenga en estado suspendido hasta que el evento ocurra. 
La sincronización esta soportada por la palabra clave synchronized y por unos cuantos métodos bien definidos que tienen todos los objetos.

A continuación se muestra un vídeo donde se utiliza la sincronización de distintos hilos:
  • Programas vistos en clase
Este es el diseño al momento de crearlo


 Y este es cuando el programa esta en ejecución


Se utiliza un hilo.Start(); para iniciar la carrera mediante un botón llamado btnIniciar, este se detendrá cuando otro hilo se ejecute, en caso contrario seguirá en ejecución hasta que termine el programa.


Utilizamos otro hilo.Sleep(); para detener por un momento la carrera, este hilo interrumpe al hilo.Start(); ya que después del tiempo estimado este prosigue su ejecución hasta terminar el programa por completo. 


Para el botón abort (abortar) también se utiliza un hilo.Abort(); quiere decir que al momento de presionar el botón este programa se cerrara y terminara su ejecución.

UNIDAD 5
PROGRAMACIÓN DE DISPOSITIVOS MÓVILES
  • Introducción 
La generalización en los últimos años de teléfonos móviles, smartphones, PDs, etc. 
Ha generado una importante necesidad de aplicaciones para este tipo de dispositivos. 
Las prestaciones de los dispositivos móviles se incrementan día a día, posibilitando la implementación de aplicaciones muy interesantes tales como: 
  1. Acceso a Internet y conectividad mediante Bluetooth.
  2. Envío de mensajes cortos.
  • Dispositivos móviles 
Los dispositivos móviles (también conocidos como computadora de mano, laptop, celulares entre otros) son aparatos de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanente o intermitente a una red, con memoria limitada, diseñados específicamente para una función, pero que pueden llevar a cabo otras funciones más generales.

 

  • Clasificación y aplicaciones de los dispositivos móviles  
Los conceptos de móvil y sin cables muchas veces se confunden. Por ejemplo, un PDA con datos en él y aplicaciones para gestionarlos puede ser móvil, pero no tiene por qué ser wireless, ya que puede necesitar un cable para conectarse al ordenador y obtener o enviar datos y aplicaciones. 
Veamos otro ejemplo. Un teléfono móvil equipado con un pequeño navegador puede navegar por Internet. En este caso, se considera wireless, pero no se considerará móvil si no dispone de un valor añadido en forma de aplicaciones que aporte alguna función cuando no está conectado a otros sistemas. 
Si el PDA es capaz de conectarse a una red para obtener datos "en medio de la calle", entonces también será wireless. 
Algunas de las características que hacen que estos dispositivos sean diferentes de los ordenadores de sobremesa son los siguientes:  
  1. Funcionalidad limitada.  
  2. No necesariamente extensible y actualizable. 
  3. En pocos años el usuario deberá cambiarlo.  
  4. Más barato. 
  5. Menos complicado en su manejo.  
  6. Fácil de aprender su operación. 
  7. No se requieren usuarios expertos. 
Algunos de estos dispositivos son los siguientes:  
  1. Comunicadores de bolsillo. 
  2. Teléfonos con pantalla para Internet (Internet Screen Phones). 
  3. Sistemas de navegación de automóviles. 
  4. Sistemas de entretenimiento. 
  5. Sistemas de televisión e Internet (WebTV). 
  6. Teléfonos móviles.

  • Ambientes de las aplicaciones 
El desarrollo de aplicaciones móviles es un nuevo animal, y los CIO no deben pensar en domarlo usando las mismas viejas tretas. Las compañías, impulsadas por el creciente número de smartphones y tablets, junto con redes móviles más capaces, buscan cómo emplear las herramientas móviles para transformar sus procesos core y sus modelos de negocio. 
El departamento IT necesita una gestión del ciclo de vida de las aplicaciones móviles que tome en cuenta el desarrollo, distribución, seguridad, soporte y mejora. 
Estas son áreas que dicho departamento tiene que planear antes de iniciar el proceso de desarrollo, porque impactarán el enfoque en el desarrollo de aplicaciones que la organización adopte. Y los equipos IT deben entregar esas nuevas capacidades móviles tomando en cuenta la rapidez con que cambia el ambiente. Mientras los operadores móviles despliegan servicios con mayor rapidez, también están recortando los planes de datos ilimitados. Muchos negocios dejan de comprar dispositivos móviles y se avienen a los que los empleados poseen. 
Este modelo BYOD (Bring Your Own Device) significa que el departamento IT tiene que dar soporte a más plataformas y proveer seguridad y gestión en este nuevo ambiente.
El principal reto será soportar aplicaciones empresariales en iOS, Android, Windows Mobile y otros sistemas operativos, en un ambiente donde el usuario –no el área IT– es quien decide cuándo actualizar el sistema operativo.


En este link se encuentra mas información acerca del ambiente de las aplicaciones móviles:
  • Protocolo de interfaz entre aplicaciones 
Interfaz de programación de aplicaciones o API es el conjunto de funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción. Son usadas generalmente en las "librerías".
 Es una fuente de código basado en la especificación destinada a ser utilizada como una interfaz de componentes de software para comunicarse entre sí. 
Una API puede incluir especificaciones para las rutinas y estructuras de datos , las clases de objetos y variables.
 Una especificación de API puede tomar muchas formas, incluyendo una norma internacional, tales como POSIX la documentación o el vendedor como el Microsoft API de Windows , o las bibliotecas de un lenguaje de programación, por ejemplo, la Biblioteca de plantillas estándar de C + + o Java API. 
Una API difiere de una interfaz de aplicación binaria (ABI) en la que el primero es de código abierto basado mientras que el segundo es una interfaz binaria.

Protocolo para dispositivos móviles: 

Este es un pequeño vídeo acerca de las interfaces móviles:
  • Programación de teléfonos móviles y PDA
Siempre presentes a nuestro alrededor, los teléfonos móviles han agregado un sin fin de funciones que los hace cada vez mas parecidos a computadoras de bolsillo. 
Es así que la pronosticada convergencia tecnológica (computadora-TV-cámara fotografica-teléfono) está cada día más cercana y parece tener la forma de teléfono.
 Los teléfonos móviles actuales permiten alojar en ellos o acceder desde ellos a programas que pueden realizar muchas tareas que hasta hace poco tiempo solo estaban destinadas a ser realizadas por computadoras, palmtops o cámaras fotográficas. 
Desde la aparación de móviles con sistemas operativos que permitían el agregado de algún tipo de programa surgió la posibilidad de programar para los mismos.
 La desventaja fue, durante bastante tiempo, que cada módelo de aparato tenía que ser programado en una forma específica. Había diferencia entre marcas e incluso entre módelos de una misma marca.

Programación móvil en Visual Studio



En este link se encuentran algunas herramientas para la programación móvil:










Comentarios

Entradas populares de este blog

TÓPICOS AVANZADOS DE PROGRAMACIÓN

UNIDAD 4 PROGRAMACIÓN CONCURRENTE MULTIHILO CONCEPTO DE HILO Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia de instrucciones un conjunto de registros y una pila.  Cuando se crea un proceso el S.O crea su primer hilo (hilo primario) en la cual puede,a su vez,crear hilos adicionales. esto pone de manifiesto que un proceso no ejecuta,si no que es sólo el espacio de direcciones donde recide el código que es ejecutado mediante uno o más hilos.  En un S.O tradicional. Cada proceso tiene un espacio de direcciones y un único hilo de control por ejemplo, considere que un programa que incluya la siguiente secuencia de operaciones para actualizar el saldo de una cuenta bancaria cuando se efectúa un nuevo ingreso: Saldo=Cuenta.ObtenerSaldo ();  Saldo+=ingreso; Cuenta.EstablecerSaldo (saldo); Cada hilo se ejecuta de forma estrictamente secuencial y tiene...

Esta padre esta mezcla!!!!!

Dj Blend