miércoles, 2 de agosto de 2017

proyecto multimedia

PROYECTO MULTIMEDIA


INTRODUCCION

El presente trabajo se demuestra lo aprendido a lo largo del primer parcial de la materia  TOPICOS AVANZADOS DE LA PROGRAMACION,  en el siguiente documento se encontraran evidencias de las habilidades y conocimientos obtenidos por el alumno al elaborar un programa en el cual se les pide que crean un código tales como capturas de pantalla con una breve descripción en las cuales se han desarrollado diversos códigos que al momento de ejecutarse harán más fácil la estadía del usuario, esto con el fin de hacer más práctica la forma de trabajo de un usuario. Los diversos códigos generados fueron creados a través del conocimiento sobre la aplicación de visual basic, los codigos creados servíran para que el usuario tenga un acceso más fácil a sus aplicaciones que requiera tales como galería de imágenes, música, vídeos, información sobre el proyecto.
               



OBJETIVOS
*Generar códigos mediante los cuales se generaran opciones más fáciles acerca del manejo de ciertas herramientas en visual studio
*Crear un proyecto en el cual se generaran códigos para el acceso a las diferentes galerías tales como: galería de imágenes, música y videos e información sobre el video. Generando satisfacción por parte del usuario.


CODIGO DE SEGURIDAD: las siguientes imágenes muestran el momento de ejecución del  código de seguridad  al cual  se le ha dado un nombre de usuario  y una contraseña del  mismo,  que se le fue instalado al proyecto





MENU PRINCINCIPAL: las siguientes imágenes muestran la ejecución del código del menú principal de del  mismo proyecto en el cual el usuario tiene oportunidad de  seleccionar alguna de las cuatro diferentes opciones (galería de música, galería de videos, galería de imágenes, información del tema )







 
GALERIA DE MUSICA: las siguientes imágenes muestran la ejecución de código de la galería de música el cual el usuario tiene la opción de elegir que canción desee ser reproducida




 







GALERIA DE IMÁGENES: las siguientes imágenes muestran la ejecución de código de la galería de imágenes  en la cual el usuario tiene la opción de elegir diferentes imágenes para que se le sean mostradas en tamaño mayor










GALERIA DE VIDEOS: las siguientes imágenes muestran el momento de la ejecución del código de la galería de videos donde el usuario tiene la opción de reproducir el video que sea de su agrado, mostrándolo en una pantalla dentro del proyecto







                          



INFORMACION ACERCA DEL TEMA: las siguientes imágenes muestran  la ejecucion del codigo de un cuadro de informacion el cual muestra  todo relacionado con el tema  elegido












CONCLUCION
Se logró elaborar  el proyecto multimedia  el cual incluye  un código de seguridad para que el usuario que desee  acceder  tenga personalizado su menú de opciones; al cual se le han instalado un cuadro de opciones de diferentes galerías  (galería de música, galería de video, galería de imágenes, información referente al tema que se eligió), al momento de presionar cualquier opción del menú  se irá directamente a la opción indicada  la cual contiene una lista de los diferentes formatos  que se deseen reproducir o elegir para ser observada, esto ara más practico la estadía del usuario. Generando satisfacción y un uso más cómodo y practico.

Se aprendió el uso de las diferentes herramientas que nos ofrece  el programa de visual studio, logrando así el copilamiento del programa de los diferentes códigos que se implementaron para la elaboración de este mismo 
  



temario

                                                      TECNOLOGICO DE     
ESTUDIOS SUPERIORES DE VILLA GUERRERO

NOMBRE DE LA MATERIA

TOPICOS AVANZADOS EN LA PROGRAMACION


NOMBRE DEL MAESTRO:
ING: TOMAS MARTIN MANCO TORO


NOMBRE DE LOS INTEGRANTES:

EDGAR RUBEN CASAS RUIZ

"TEMARIO COMPLETO DE LA MATERIA"



ISC “401





INTRODUCCION

El presente trabajo demuestra lo aprendido a lo largo del tercer semestre de la materia  TOPICOS AVANZADOS DE LA PROGRAMACION en el siguiente documento se encontraran evidencias de las habilidades y conocimientos obtenidos por el alumno al elaborar un programa en los diferentes programas  que el maestro le a indicado haciendo así la mejoría del conocimiento de este ala introducción  de la programación, mostrando evidencia de lo aprendido  el alumno a realizado diferentes códigos  mostrándolos en capturas de pantallas de como se realiza cada código al igual de cual es su resultado al ora de ejecutarlo, esto se realiza con el fin de hacer mas practica y cómoda la estadía de cualquier usuario que tenga contacto con el mismo documento presentado así , los siguientes códigos que se muestran a continuación  fueron creados con el conocimiento del alumno  en la plataforma de visual studio. Visual studio  es una plataforma  creada para aquellos usuarios que se les facilita o les interesa la programación ya que cuenta con diferentes herramientas para hacer mas fácil la estadía del usuario dentro de esta plataforma  y provocándole un mayor interés por el aprendizaje ala materia

OBJETIVO
*se realizara un manual  de la materia de tópicos avanzados de programación para dar a conocer lo aprendido a lo largo del cuarto semestre


CONCEPTOS

UNIDAD UNO

"EVENTOS"

1.1 TIPOS DE EVENTOS
Un evento es la notificación que  hace un elemento grafico cuando el usuario interactúa con el. Por lo tanto, si se realiza alguna acción sobre algún elemento de la interfaz, se dice que se ha generado un evento en dicho Los eventos ahora están organizados en jerarquías de clases de eventos.
El nuevo modelo hace uso de fuentes de eventos (Source) y receptores de eventos (Listener). Una fuente de eventos es un objeto que tiene la capacidad de detectar eventos y notificar a los receptores de eventos que se han producido esos eventos. Aunque el programador puede establecer el entorno en que se producen esas notificaciones, siempre hay un escenario por defecto. Un objeto receptor de eventos es una clase (o una subclase de una clase) que implementa un interfaz receptor específico. Hay definidos un determinado número de interfaces receptores, donde cada interfaz declara los métodos adecuados al tratamiento de los eventos de su clase. Luego, hay un emparejamiento natural entre clases de eventos y definiciones de interfaces. Por ejemplo, hay una clase de eventos de ratón que incluye muchos de los eventos asociados con las acciones del ratón, y hay un interfaz que se utiliza para definir los receptores de esos eventos.
Un objeto receptor puede estar registrado con un objeto fuente para ser notificado de la ocurrencia de todos los eventos de la clase para los que el objeto receptor está diseñado. Una vez que el objeto receptor está registrado para ser notificado de esos eventos, el suceso de un evento en esta clase automáticamente invocará al método sobrescrito del objeto receptor. El código en el método sobrescrito debe estar diseñado por el programador para realizar las acciones específicas que desee cuando suceda el evento.

1.1.1 TIPOS DE EVENTOS

ComponentEvent: Se producirá este tipo de evento cuando el usuario mueva o redimensione un componente.
FocusEvent: Se producirá este tipo de evento cuando se cambie el foco de un componente. El foco hace referencia al componente en el que estamos trabajando.
 MouseEvent: Se producirá cuando el usuario efectúe un movimiento con el ratón o haga un clic. Tipos de Eventos
WindowEvent: se producirá cuando se realice algún tipo de operación con la ventana como abrirla y cerrarla.
ActionEvent: Se producirá cuando se efectúe alguna acción sobre un componente, como por ejemplo: la presionar un botón.

1.2 GENERACIÓN Y PROPAGACIÓN DE EVENTOS

el paquete de java es la que contiene la mayor parte de las interfaces  de eventos y las clases, el modelo de delegación de eventos es un concepto que trabaja de la siguiente manera, una fuente crea un evento y lo envía a uno o mas oyentes o auditores que han estado simple mente  esperando  simple mente un evento y una vez recibido lo procesan o lo devuelven. una fuente es un objeto que genera un evento esto ocurre cuando cambia de manera interna un objeto las fuentes pueden generar mas de un tipo de eventos una fuente tiene que ir siempre acompañada de auditores para que estos reciban las notificaciones sobre el tipo especifico de los eventos cada tipo de evento tiene su propio método de registro un auditor es un objeto que es avisado cunado ocurre un evento tiene dos requisitos principales, primero tiene que ir registrado o ir acompañado por una o mas fuentes para recibir notificaciones sobre los tipos específicos de eventos segundo, tiene que implementar métodos para  recibir y procesar notificaciones. los eventos se crean desde una fuente y se propagan hasta los receptores, por ejemplo cuando se hace clip en un botón se genera un evento y se propaga realizando alguna opción

1.3 MÉTODO DE CONTROL DE EVENTOS

 los eventos so controlados mediante  los métodos, un método puede hacer o no hacer nada cuando se genera un evento. De esta forma se controla la acción de un evento

1.4 CREACIÓN DE EVENTOS





SEGUNDA UNIDAD

"INTERFAZ GRÁFICA DE USUARIO"

2.1 CREACIÓN DE INTERFAZ GRÁFICA PARA USUARIO

En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de usuario (IGU), es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático.
La interfaz gráfica de usuario (en inglés Graphical User Interface, GUI) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y objetos gráficos (iconos, ventanas, tipografía) para representar la información y acciones disponibles en la interfaz. Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora. Surge como evolución de la línea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplo de interfaz GUI podemos citar el escritorio o desktop del sistema operativo Windows y el entorno X-Windows de Linux.
El desarrollo de los entornos gráficos, que permitieron que las personas pudieran acceder a un PC sin tener que pasar por el tortuoso proceso de tener que aprender a manejar un entorno bajo línea de comandos. La interfaz gráfica de usuario es lo que tú y yo vemos cuando ejecutamos un programa en algún sistema operativo e interfaz gráfica, es decir, son las ventanas y los botones, los iconos, etc. En java, muchos applets y aplicaciones pueden desarrollarse explotando esta propiedad, esto se hace dentro del ambiente integrado de desarrollo de java cuando hemos abierto un archivo .java para la elaboración de algún proyecto (en concreto, me refiero a jbuilder). Ahí, facilmente, seleccionando la pestaña inferior design, creamos la interfaz arrastrando los botones y demás componentes de las barras de objetos que se encuentran en la parte superior del ambiente jbuilder

2.2 COMPUTACIÓN  GRAFICA

Medio más natural de comunicación con computador Aprovecha habilidades humanas altamente desarrolladas de reconocimiento de patrones 2D y 3D que permiten percibir y procesar rápidamente datos gráficos  Visualización científica: muy importante desde 1980 Permite sintetizar objetos concretos y también abstractos (moléculas químicas, objetos matemáticos), utiliza imágenes dinámicas para visualizar: evolución de fenómenos (se necesitan más de 15 cuadros / seg). Usuario puede controlar la animación: velocidad, zoom, cantidad de detalle, relación entre objetos.
Conceptos y elementos básicos en computación gráfica
Tubo de rayos catódicos, Tecnología raster, frame buffer, tasa de refresco, Modelo de color RGB, Rendering (proceso completo de visualización de escena 3D), Modelación de la superficie 3D de los objetos (en base a mallas de polígonos), Transformaciones geométricas básicas y transformaciones de proyección (también geométricas),Luces de la escena,  Modelo de iluminación




 UNIDAD TRES

"COMPONENTES Y LIBRERIAS"

3.1 DEFINICIÓN CONCEPTUAL DE COMPONENTES PAQUETES Y LIBRERÍAS

Componente: Es una clase abstracta que representa todo lo que tiene una posición, un tamaño, puede ser pintado en pantalla y puede recibir eventos.
LIBRERÍAS La utilización de objetos dinámicos supone dejar pendiente en el montaje de la aplicación el enlace de dichos objetos. Cuando la aplicación está en ejecución, y sólo entonces, se produce el enlace (dinámico) con los objetos contenidos en la librería. La creación de librerías dinámicas corre a cargo del enlazador o montador (en nuestro caso el id) aunque también es posible indicar al compilador las opciones necesarias para el montaje y de ese modo, será él quien se encargue de pasárselas al montador. Cuando se crea un objeto dinámico es necesario que dicho código objeto sea independiente de la posición, para conseguir este tipo de código debe especificarse al compilador la opción -fPIC (Position Independent Code). Dicho flag debe indicarse tanto en la compilación como en el montaje de la librería. Para montar los objetos es necesario además indicar la opción -shared para que el resultado sea un fichero objeto compartible.

3.2. USO DE COMPONENTES (VISUALES Y NO VISUALES) PROPORCIONADOS POR EL LENGUAJE


Un componente desde el punto de vista de programación esta compuesto por varias secciones y el conjunto de todas ellas dan lugar a la creación de dicho componente. Por tanto, primero para no perder el norte, vamos a empezar definiendo el convenio que es utilizado para organizar dichas secciones por TinyOs. En general, un componente posee tres grandes secciones que son: Configuración, Implementación, Module. Estas tres secciones han de estar obligatoriamente presentes en cualquier componente aunque puedan estar vacías. El estándar de T i n y O s determina, que las secciones de Configuración implementación han de ir en un fichero que recibirá el nombre del componente con la extensión .nc y la tercera sección de Module deberá de ir en otro fichero aparte que recibirá el nombre del componente concatenado con un M mayúscula (la M da el significado al fichero, es el significado de Module) , este último fichero también poseerá extensión .nc. Otra buena costumbre consiste en crear un fichero de heder o cabecera con extensión .h que contenga todas las enumeraciones, registros o tipos de datos creados por el usuario de los que hace uso la aplicación, y cuando se realiza esto la forma de ligar dicho fichero con los otros dos es utilizando al principio de los otros fichero la directiva includesheader; aunque como mención especial decir que si nos fijamos mejor en este directiva se puede ver que no se incorpora la extensión .h en la misma. Ahora que ya sabes cuales son las secciones que va a contener cada fichero vamos a empezar a explicar cada una de ellas. Implementación Esta sección se va a encargar de definir las conexiones que hay entre los diferentes componentes que utiliza la aplicación, esto es debido a que si recordamos un poco, se ha comentado que la programación de un componente (que se llevará a cabo en la sección de module) se hace utilizando interfaces y dichas interfaces para poder utilizarlas las ha de proporcionar un componente, entonces básicamente es esta sección se definen cuales son los componentes que proporcionan las interfaces a nuestra aplicación (por lo general serán componentes primitivos).



3.3. USO DE LIBRERÍAS PROPORCIONADAS POR EL LENGUAJE

Java es un lenguaje de programación desarrollado para una multitud de plataformas y procesadores. Consideremos los dos tipos de aplicaciones gráficas más comunes. Modelos de Frames y Applets, se pueden construir usando cualquiera de las dos galerías de componentes visuales, son: JAVA AWT: Es la librería visual más antigua de java usando esta librería, se podrán construir los tres tipos de programas mas comunes como son FRAME, WINDOW y APPLET. JAVA SWING: Es la librería de componentes visuales más nueva que proporciona java, usando esta librería se podrán construir los tres tipos de programas o aplicaciones que son JFRAME, WINDOW Y JAPPLET. Un Apple es un programa en java que se mandan a una máquina o PC remota para que los ejecuten o lo corra, cuando este applet de llegada a las máquinas remotas vía browser, dicho browser es quien activa la máquina virtual de java que da la orden de compilación y ejecución, es decir java programa. applet. Entonces es importante que la máquina virtual de java, que se encuentra en la PC remota, tenga capacidad de incluir todas las librerías de java, como la de match, la de AWT
 Existen diferentes librerías en java, entre las cuales se encuentra. Java. lang Colección de tipo básico siempre importados a cualquier unidad de compilación. Aquí están las declaraciones de objetos, clases, wrappers. Interfaces Clases. Closeable Boolean Comparable Byte Runnable Character ClassLoader Compiler Double Float InheritableThreadLocal Interger Long Math Number Object System Thread Void String, etc...

3.4. CREACIÓN DE COMPONENTES (VISUALES Y NO VISUALES) DEFINIDOS POR EL USUARIO

Se puede establecer muchas clasificaciones para los componentes. Una de ellas es la de visuales o controles, frente a no visuales. Un componente es visual cuando tiene una representación gráfica en tiempo de diseño y ejecución (botones, barras de scroll, cuadros de edición, etc.), y se dice no visual en caso contrario (temporizadores, cuadros de diálogo-no visibles en la fase de diseño, etc). Por lo demás no existen más diferencias entre ellos, excepto, claro está, las derivadas de la visualización del componente.
Los componentes no visuales se pueden colocar en los formularios de la misma manera que los controles, aunque en este caso su posición es irrelevante.
Para empezar, los componentes visuales podemos dividirlos a su vez en dos tipos: -Componentes interactivos: permiten que el usuario final los manipule, ya sea introduciendo datos, seleccionado elementos, etc. De forma que estos componentes pueden recibir el foco (con SetFocus) así como los eventos propios del teclado y del ratón. Normalmente, el propio sistema operativo es el encargado de dibujar el aspecto del componente, haciendo el componente las llamadas correspondientes para que este aspecto cambie.
Componente gráficos: el propio componente es el encargado de dibujar en la pantalla lo que crea oportuno, bien a través de las funciones básicas del API de Windows (con el objeto TCanvas) o bien a través de otras librerías gráficas, como OpenGL, DirectX, etc. Estos componentes, no suelen recibir eventos del usuario final, aunque si eventos del propio programador, ya que su cometido no suele ir más allá de mostrar ciertos gráficos o imágenes en la pantalla. Si tuviéramos que crear un componente interactivo desde el principio, sería demasiado complejo, ya que tendríamos que luchar encontrar el propio API del sistema operativo, gestionando sus mensajes, las llamadas las funciones a bajo nivel, etc. Sin embargo, podemos aprovechar la mayoría del trabajo hecho por Borland en la VCL, y crear componentes interactivos a partir de otros ya existentes, aplicado la técnica de herencia


3.5 CREACION Y USO DE PAQUETES/LIBRERIAS DEFINIDAS POR EL USUARIO

Creación y Uso de Paquetes/Librerías Definidas por el Usuario Los paquetes son grupos de clases relacionadas; ayudan a organizar su código y proporcionan otra capa encapsulamiento.
En programación, los paquetes, con frecuencia son útiles para agrupar las piezas relacionadas de un programa Un paquete sirve para dos propósitos: primero, suministra un mecanismo por el cual piezas relacionadas de un programa pueden ser organizadas como una unidad. Así, un paquete proporciona la manera de nombrar una colección de clases. Segundo, un paquete participa en los mecanismos de control de acceso en java. Las clases definidas dentro de un paquete pueden hacerse privadas a ese paquete y no accesibles por código fuera del paquete. De este modo, el paquete suministra un medio por el cual las clases pueden ser encapsuladas. DEFINIR UN PAQUETE: Todas las clases en Java pertenecen a algún paquete. Además, el paquete predeterminado no tiene nombre, lo que lo hace transparente.
Para crear un paquete, coloque un comando package en la parte superior del archivo fuente de java.
Las clases declaradas dentro de ese archivo pertenecerán al paquete especificado. La siguiente es la forma general de la declaración package:
package pkg;
Aquí, pkg es el nombre del paquete. Por ejemplo, el siguiente enunciado crea un paquete de nombre Project1.

package Project1; Puede crear una jerarquía de paquetes. Para hacerlo, simplemente, separe cada nombre de paquete del inmediatamente anterior, por medio de un punto. A continuación, la forma general de una declaración de paquete multinivel:

package pack1.pack2.pack3....packN; la librería de clase java esta contenida en paquetes: java.lang: contiene un gran número de clases de propósito general
java.io: contiene las clases de E/S
java.net: contiene aquellas clases que soportan redes

UNIDAD CUATRO
"PROGRAMACION CONCURRENTE MULTIHILOS"
4.1 CONCEPTO DE HILOS
Un hilo es una unidad básica de utilización de CPU, la cual contiene un id de hilo, su propio program counter, un conjunto de registros, y una pila; que se representa a nivel del sistema operativo con una estructura llamada TCB (thread control block). Los hilos comparten con otros hilos que pertenecen al mismo proceso la sección de código, la sección de datos, entre otras cosas. Si un proceso tiene múltiples hilos, puede realizar más de una tarea a la vez (esto es real cuando se posee más de un CPU). Veamos un ejemplo para clarificar el concepto: Un servidor web acepta solicitudes de los clientes que piden páginas web. Si este servidor tiene varios clientes y funcionara con un solo hilo de ejecución, solo podría dar servicio a un cliente por vez, y el tiempo que podría esperar un cliente para ser atendido podría ser muy grande. Una posible solución sería que el servidor funcione de tal manera que acepte una solicitud por vez, y que cuando reciba otra solicitud, cree otro proceso para dar servicio a la nueva solicitud. Pero crear un proceso lleva tiempo y utiliza muchos recursos, entonces, si cada proceso realizará las mismas tareas ¿Por qué no utilizar hilos? Generalmente es más eficiente usar un proceso que utilice múltiples hilos (un hilo para escuchar las solicitudes, y cuando llega una solicitud, el lugar de crear otro proceso, se crea otro hilo para procesar la solicitud)

4.2 COMPARACIÓN PROGRAMA FLUJO ÚNICO Y FLUJO MÚLTIPLE


Programas de flujo único
Un programa de flujo único o mono-hilvanado (single-thread) utiliza un único flujo de control (thread) para controlar su ejecución. Muchos programas no necesitan la potencia o utilidad de múltiples flujos de control. Sin necesidad de especificar explícitamente que se quiere un único flujo de control, muchos de los applets y aplicaciones son de flujo único.
Por ejemplo, en la archiconocida aplicación estándar de saludo:
public class  hola mundo{
    static public void main( String args[] ) {

        System.out.println( “Hola Mundo!” );

        }

    }
Aquí, cuando se llama a main(), la aplicación imprime el mensaje y termina. Esto ocurre dentro de un único hilo de ejecución (thread).
Debido a que la mayor parte de los entornos operativos no solían ofrecer un soporte razonable para múltiples hilos de control, los lenguajes de programación tradicionales, tales como C++, no incorporaron mecanismos para describir de manera elegante situaciones de este tipo. La sincronización entre las múltiples partes de un programa se llevaba a cabo mediante un bucle de suceso único. Estos entornos son de tipo síncrono, gestionados por sucesos. Entornos tales como el de Macintosh de Apple, Windows de Microsoft y X11/Motif fueron diseñados en torno al modelo de bucle de suceso.
Programas de flujo múltiple
En la aplicación de saludo, no se ve el hilo de ejecución que corre el programa. Sin embargo, Java posibilita la creación y control de hilos de ejecución explícitamente. La utilización de hilos (threads) en Java, permite una enorme flexibilidad a los programadores a la hora de plantearse el desarrollo de aplicaciones. La simplicidad para crear, configurar y ejecutar hilos de ejecución, permite que se puedan implementar muy poderosas y portables aplicaciones/applets que no se puede con otros lenguajes de tercera generación. En un lenguaje orientado a Internet como es Java, esta herramienta es vital.
Si se ha utilizado un navegador con soporte Java, ya se habrá visto el uso de múltiples hilos en Java. Habrá observado que dos applets se pueden ejecutar al mismo tiempo, o que puede desplazar la página del navegador mientras el applet continúa ejecutándose. Esto no significa que el applet utilice múltiples hilos, sino que el navegador es multihilo, multihilvanado o multithreaded.
Los navegadores utilizan diferentes hilos ejecutándose en paralelo para realizar varias tareas, “aparentemente” concurrentemente. Por ejemplo, en muchas páginas web, se puede desplazar la página e ir leyendo el texto antes de que todas las imágenes estén presentes en la pantalla. En este caso, el navegador está trayéndose las imágenes en un hilo de ejecución y soportando el desplazamiento de la página en otro hilo diferente.
Las aplicaciones y  multihilo utilizan muchos contextos de ejecución para cumplir su trabajo. Hacen uso del hecho de que muchas tareas contienen subtareas distintas e independientes. Se puede utilizar un hilo de ejecución para cada subtarea.
Mientras que los programas de flujo único pueden realizar su tarea ejecutando las subtareas secuencialmente, un programa multihilo permite que cada thread comience y termine tan pronto como sea posible. Este comportamiento presenta una mejor respuesta a la entrada en tiempo real.
Vamos a modificar el programa de saludo creando tres hilos de ejecución individuales, que imprimen cada uno de ellos su propio mensaje de saludo, Multi Hola.java:
// Definimos unos sencillos hilos. Se detendrán un rato
// antes de imprimir sus nombres y retardos
class Test Th extends Thread {
    private String nombre;

    private int retardo;



    // Constructor para almacenar nuestro nombre

    // y el retardo

    public Test Th( String s,int d ) {

        nombre = s;

        retardo = d;

        }



    // El metodo run() es similar al main(), pero para

    // threads. Cuando run() termina el thread muere

    public void run() {

        // Retasamos la ejecución el tiempo especificado

        try {

            sleep( retardo );

        } catch( Interrupted Exception e ) {

            ;

        }



        // Ahora imprimimos el nombre

        System.out.println( “Hola Mundo! “+nombre+” “+retardo );

        }

    }
public class Multi Hola {
    public static void main( String args[] ) {

        Test Th t1,t2,t3;



        // Creamos los threads

        t1 = new Test Th( “Thread 1,(int)(Math.random()*2000) );

        t2 = new Test Th( “Thread 2,(int)(Math.random()*2000) );

        t3 = new Test Th( “Thread 3,(int)(Math.random()*2000) );



        // Arrancamos los threads

        t1.start();

        t2.start();

        t3.start();

        }

    }


4.3 CREACIÓN Y CONTROL DE HILOS
En Java los hilos están encapsulados en la clase Thread. Para crear un hilo tenemos dos posibilidades:
·         Heredar de Thread redefiniendo el método run().
·         Crear una clase que implemente la interfaz Runnable que nos obliga a definir el método run().
En ambos casos debemos definir un método run() que será el que contenga el código del hilo. Desde dentro de este método podremos llamar a cualquier otro método de cualquier objeto, pero este método run() será el método que se invoque cuando iniciemos la ejecución de un hilo. El hilo terminará su ejecución cuando termine de ejecutarse este método run().
Para crear nuestro hilo mediante herencia haremos lo siguiente:
1
2
3
4
5
6
7
8
public class Ejemplo Hilo extends Thread 
{     
    public void run()()
    {
        // Código del hilo     
    } 
}
        
Una vez definida la clase de nuestro hilo deberemos instanciarlo y ejecutarlo de la siguiente forma:
1
2
3
Thread t = new EjemploHilo();
t.start();
        
Al llamar al método start del hilo, comenzará ejecutarse su método run. Crear un hilo heredando de Thread tiene el problema de que al no haber herencia múltiple en Java, si heredamos de Thread no podremos heredar de ninguna otra clase, y por lo tanto un hilo no podría heredar de ninguna otra clase.
Este problema desaparece si utilizamos la interfaz Runnable para crear el hilo, ya que una clase puede implementar varios interfaces. Definiremos la clase que contenga el hilo como se muestra a continuación:
1
2
3
4
5
6
7
8
public class EjemploHilo implements Runnable
{
    public void run()
    {         
        // Código del hilo     
    } 
}
        
Para instanciar y ejecutar un hilo de este tipo deberemos hacer lo siguiente:
1
2
3
Thread t = new Thread(new EjemploHilo()); 
t.start();
        
Esto es así debido a que en este caso EjemploHilo no deriva de una clase Thread, por lo que no se puede considerar un hilo, lo único que estamos haciendo implementando la interfaz es asegurar que vamos a tener definido el método run(). Con esto lo que haremos será proporcionar esta clase al constructor de la clase Thread, para que el objeto Thread que creemos llame al método run() de la clase que hemos definido al iniciarse la ejecución del hilo, ya que implementando la interfaz le aseguramos que esta función existe.
4.4 SINCRONIZACIÓN DE HILOS
Ya que los hilos permiten y potencian el comportamiento asíncrono de los programas, debe existir alguna manera de forzar el sincronismo allí donde sea necesario. Por ejemplo, si desease que dos hilos se comunicasen para compartir una estructura de datos compleja (como una lista enlazada), necesitará alguna manera de garantizar que cada uno se aparte del camino del otro. Java incorpora una versión rebuscada de un modelo clásico para la sincronización, el monitor. La mayor parte de los sistemas multihilo implementan los monitores a modo de objetos, pero Java proporciona una solución más elegante: no existe la clase monitor, cada objeto lleva asociado su propio monitor implícito, en el que puede entrar sin más que hacer una llamada a los métodos synchronized del objeto. Una vez que el hilo está dentro del método synchronized, ningún otro hilo puede efectuar una llamada a otro método synchronized sobre el mismo objeto.
Cuando en un programa tenemos varios hilos corriendo simultáneamente es posible que varios hilos intenten acceder a la vez a un mismo sitio (un fichero, una conexión, un array de datos) y es posible que la operación de uno de ellos entorpezca la del otro. Para evitar estos problemas, hay que sincronizar los hilos. Por ejemplo, si un hilo con vocación de Cervantes escribe en fichero "El Quijote" y el otro con vocación de Shakespeare escribe "Hamlet", al final quedarán todas las letras entremezcladas

UNIDAD CINCO
"PROGRAMACION DE DISPOSITIVOS MOVILES"
5.1 INTRODUCCION
En este curso vamos a estudiar la edición de la plataforma Java que Sun Microsystems ha diseñado específicamente para dispositivos móviles y embebidos: Java 2 Micro Edition (J2ME).  Aunque en esta introducción veamos una visión general de J2ME y su entorno, en este curso nos centraremos en el estudio de las herramientas y bibliotecas que ofrece J2ME para la programación de dispositivos específicos como teléfonos móviles y asistentes personales digitales.

La expansión de ordenadores personales en nuestro entorno hacen que éstos sean ya una herramienta de trabajo muy necesaria y, por supuesto, de diversión. Hoy en día hay ordenadores en casi todas las casas, hecho originado fundamentalmente por la bajada de los precios de unos años a nuestros días.  Pero cada vez, los ordenadores son más potentes y nos dan muchas más posibilidades,  lo que hace que no sólo estén en el lugar de trabajo y en nuestro hogar, sino que nos los podamos encontrar en cualquier ámbito de nuestra vida: en el coche, en la 
lavadora, en la televisión. La tecnología está haciendo posible que se reduzcan también los tamaños de los ordenadores y que nos los podamos meter en el bolsillo y transportarlos sin dificultad alguna, como es el caso de los asistentes personales digitales (Personal Digital Assistant -PDA). Estos dispositivos son ordenadores con todo el significado de la palabra, pues disponen de capacidad de procesamiento y almacenaje de datos.

Las comunicaciones también han evolucionado velozmente. Ahora podemos bajarnos música de ordenadores situados en Nueva
 Zelanda en pocos segundos, o escribirnos en tiempo real con nuestro amigo de vacaciones en China desde nuestro ordenador. Pero ya no nos hace falta un cable para comunicarnos, ahora podemos hacerlo fácilmente mediante el aire, mediante radio, por ejemplo. Y esta tecnología está al alcance de todos: el teléfono móvil, que ya tiene prestaciones de un ordenador. Por tanto, vemos que la evolución se centra en hacer los aparatos más pequeños, dotándoles de habilidad de comunicación y potencia de cálculo.  Independientemente del tipo de aparato, les requerimos que más o menos nos den las mismas prestaciones en cualquier momento. Pero eso es un problema para los desarrolladores, porque se les pide lo mismo, pero en sitios más pequeños cada vez. Hasta hace poco, la programación de estos dispositivos se hacía en código máquina o en ensamblador. La razón básica era que se disponía de entornos de ejecución muy restringidos, por lo que el uso de lenguajes de programación de alto nivel era impracticable. Esto implicaba el hecho de tener que desarrollar completamente a medida, es decir, específicamente para el dispositivo, con el consiguiente esfuerzo y lentitud en los desarrollos. El lenguaje de programación Java permitía escribir un programa una vez y poder ejecutarlo en multitud de ordenadores, con diferentes plataformas sin tener que compilarlo de nuevo. Esa es una gran ventaja y una característica muy deseable en el entorno de los pequeños dispositivos, por lo que se ha exportado esa filosofía a estos aparatos. Así, mediante J2ME se podrán escribir aplicaciones para una gran variedad de dispositivos diferentes.  
5.2 DISPOSITIVO MÓVIL 
también conocido como computadora de bolsillo o computadora de mano (palmtop o handheld), es un tipo de computadora de tamaño pequeño, con capacidades de procesamiento, con conexión a Internet , con memoria, diseñado específicamente para una función, pero que pueden llevar a cabo otras funciones más generales.
Estrictamente hablando, muchos de los llamados dispositivos móviles no tienen la capacidad de moverse. Más bien son dispositivos que pueden ser fácilmente transportados por sus usuarios.

 5.3 CLASIFICACIÓN Y APLICACIONES DE LOS DISPOSITIVOS MÓVILES

Aplicación móvil
Teléfonos inteligentes mostrando iconos de aplicaciones móviles. Una aplicación móvil, applo o app (en inglés) es una aplicación informática diseñada para ser ejecutada en teléfonos inteligentes, tabletas y otros dispositivos móviles y que permite al usuario efectuar una tarea concreta de cualquier tipo profesional, de ocio, educativa, de acceso a servicios, facilitando las gestiones o actividades a desarrollar.
Por lo general se encuentran disponibles a través de plataformas de distribución, operadas por las compañías propietarias de los sistemas operativos móviles como Android, iOS,  OS, Windows Phone, entre otros. Existen aplicaciones móviles gratuitas u otras de pago, donde en promedio el 20–30 % del costo de la aplicación se destina al distribuidor y el resto es para el desarrollador. El término app se volvió popular al ser aplicaciones residentes en los dispositivos están escritas en algún lenguaje de programación compilado, y su funcionamiento y recursos se encaminan a aportar una serie de ventajas tales como. Un acceso más rápido y sencillo a la información necesaria sin necesidad de los datos de autenticación en cada acceso. que los usuarios pueden acceder desde Internet (o Intranet) mediante un navegador web genérico o específico, dependiendo del lenguaje de programación . Un servicio de alojamiento informático o web permite a organizaciones e individuos subir, alojar, gestionar o almacenar contenido en servidores físicos o virtuales. Por ejemplo: Dropbox sería una aplicación de software destinada a ser un servicio de alojamiento de archivos multiplataforma en la nube, a la cual se puede acceder a través un interfaz web o de una app.
En los últimos años los servicios de informática distribuida han permitido que las organizaciones, incluidas las educativas, puedan gestionar sus procesos, actividad y aplicaciones informáticas a través de empresas que ofrecen comercialmente “software como servicio. alojado en un centro de datos o en servicios en la “nube”, y grandes redes de ordenadores pueden formar una “malla” que representa una potencia considerable.


5.4 AMBIENTE DE LAS APLICACIONES

Un ambiente de desarrollo  para  aplicaciones  web es  una  estructura  definida, reusable en  el  que sus componentes facilitan la creación de aplicaciones web. En cierto sentido podemos afirmar que nos proveen una capa de abstracción sobre la arquitectura original ocultándola o adaptándola para no tener que utilizar el protocolo http de manera nativa y así acelerar los tiempos de desarrollo y mantenimiento.
Los ambientes de aplicaciones mas importantes son:
 FrontPage.-  Es  un  programa  de  Microsoft para a crear  y  mantener sitios  web. Permite diseñar y  crear  páginas  directamente en el  propio sitio  de  Internet,  así como en  una computadora personal y luego publicarlas por completo en un servidor. Con este software se pueden elaborar páginas sin saber absolutamente nada del lenguaje HTML, se escriben los  textos, se  les  da  formato,  y  se  le  insertan  imágenes  mientras  el  programa elabora el código HTML correspondiente que es el que entienden los navegadores de internet.
 Dreamweaver.- Es un editor visual profesional para la creación y administración de sitios y páginas  Web. Con Dreamweaver resulta fácil  crear y  editar páginas  compatibles  con cualquier explorador y plataforma. Dreamweaver proporciona herramientas avanzadas de diseño y  formateo, y  facilita  el  uso de  funciones  de HTML  dinámico, como  capas  y comportamientos  animados, sin necesidad  de  escribir  una  sola línea de código. El establecimiento de  destino  de  exploradores  comprueba  el  trabajo  para  averiguar si  hay problemas potenciales en las plataformas y los exploradores más habituales. La tecnología Roundtrip HTML de Macromedia importa documentos HTML sin necesidad de cambiar el formato del código y, además, es posible configurar Dreamweaver para limpiar y cambiar el formato  HTML  cuando lo desee. Dreamweaver se puede  personalizar totalmente. Puede crear sus propios objetos y comandos, modificar menús y métodos abreviados de teclado, e incluso escribir código JavaScript para ampliar las posibilidades que ofrece Dreamweaver con nuevos comportamientos e inspectores de propiedades.

  ASP.NET: es  un  conjunto de  tecnologías  definidas  por  Microsoft para la  capa de presentación WEB que forma parte del .NET Framework. En pocas palabras, una página ASP.NET  es  un  archivo de  texto con  extensión aspx  que el  servidor  sabe  que debe procesar de una manera especial. El texto de las páginas puede ser HTML junto con código scripting  que se  compila dinámicamente y  se  ejecuta en el  servidor. La  página aspx  se compila  (sólo  la primera vez)  a código ejecutable  .net cuando  algún cliente  la  solicita  al servidor. Para incluir código embebido en la página se utilizan los separadores <% y %>. En este sentido es  similar al  funcionamiento de  las  páginas  JSP  de java. Las  páginas ASP.NET  pueden  tener controles  que  se ejecutan  del  lado del  servidor  (server  controls) que son objetos que representan elementos de la interfaz de usuario que se ejecutan en el servidor y  generan  código  HTML  como resultado  de su ejecución. Los  controles  tienen propiedades, métodos y eventos a los que pueden responder y mediante los que se puede modificar su estado y  comportamiento. Este comportamiento se puede  declarar  en  los atributos  de  su declaración  HTML  o de  manera programática. Los  controles  permiten contener otros controles dentro de el os y es posible, al igual que cualquier objeto, heredar y redefinir parte de su comportamiento. Un control de servidor se identifica en una página HTML por su atributo runat=”server”. De esta manera un  webform es una página HTML que contiene en algún lado una etiqueta del estilo.

5.5 PROTOCOLO DE INTERFAZ ENTRE APLICACIONES

 En el lenguaje de programación: C. Hardware: Smartphones. Android Aplicación desarrollada: smsPopUp SDK. Entornos Móviles Dispositivos multifuncionales capaces de alojar un amplio abanico de aplicaciones Puede pensarse en ellos como una extensión del computador personal Características Sistema Operativo 
orientado a dispositivos móviles Permite el desarrollo de terceros a través de su SDK (Software Development Kit)y mediante el lenguaje de programación Java. Permite el almacenamiento de datos estructurados mediante SQLite. Proporciona soporte para medios con formatos comunes de audio, vídeo e imágenes. Facilita la integración del hardware en la aplicación (Bluetooth, GPS, cámara de fotos, brújula, etc.). Integración con Google Maps. Emulador incluido en el entorno de desarrollo. Sistemas Operativos Móviles Plataforma de software sobre la que corren las aplicaciones instaladas Es el responsable de Determinar funcionalidades
y características Determinar qué aplicaciones de tercer os se podrán usar en el terminal
Las Características principales de la interfaz. Versión unificada para distintos tipos de dispositivos. Interfaz intuitiva y moderna. Reconocimiento de voz y facial. Open Source. Puede ser modificado. Gran cuota de mercado. Confianza de los fabricantes de dispositivos. Aspectos Negativos. Fragmentación del sistema de archivos.
Actualización del firmware compleja.
Nº de aplicaciones menor (comparado con la appStore de iOS). Aplicaciones Google Play Store. Tipos de aplicaciones. Aspectos dirigidos a los desarrolladores. Especificación de requerimientos de Software Requisitos de Arquitectura El sistema debe correr sobre terminales móviles con sistema operativo Android 2.2 o superior. El sistema debe contener una base de datos SQLite para el almacenamiento local de recursos. Requisitos de usuario El usuario podrá realizar una búsqueda de recursos a través del menú de opciones. El usuario podrá modificar sus preferencias aun estando desconectado. Requisitos de sistema El sistema debe ser capaz de generar pantallas con los resultados de las consultas del usuario. El sistema deberá presentar menús de opciones para las distintas pantallas. La aplicación será capaz de funcionar en segundo plano. La aplicación será capaz de acceder a los datos almacenados en el terminal. Requisitos de la interfaz Requisitos de tiempo de latencia Interfaz accesible e intuitiva. Internacionalización de la interfaz (según la configuración del terminal, se ofrecerá en español y en inglés). El sistema deberá mostrar una notificación de mensaje de texto entrante en una media no mayor a 5 segundos. Requisitos de usabilidad De tal forma que los usuarios estén lo más familiarizados posible con la aplicación, y previendo un posible cambio de terminal, el sistema presentará sus opciones de configuración, así como las mismas notificaciones de servicio, de la manera más sencilla posible. Análisis y Diseño de alto nivel Decisiones de diseño Arquitectura IDE 'ECLIPSE' SDK Android (Android Development Tools) Lenguajes:

5.6 PROGRAMACIÓN DE TELEFONOS MOVILES Y PDA

Lenguaje de programación:  Utiliza el lenguaje OPL
(Open Programming Language) es un lenguaje de programación El OPL ofrece al programador un entorno fácil, parecido al Basic, que permite desarrollar rápidamente aplicaciones para Symbian claras y limpias, con pocos comandos.
Se trata de un lenguaje interpretado, lo cual quiere decir que los programas en código comprensible para los humanos, con son convertidos directamente a ejecutables, sino que se transforman (mediante el programa OPLTRANS) en un código intermedio, que ya se puede trasladar al telefono. 
Lenguaje de programación: La plataforma Windows Phone soporta los lenguajes de programación C# y Visual Basic .NET. Esto se debe a que ambos son entendidos por el Framework .NET. Por la parte de diseño se utiliza el lenguaje Silverlight también conocido como XAML. En el caso de las aplicaciones de tipo video juegos, utilizan XNA para generar gráficas de tipo 2D y 3D e igualmente pueden hacer uso de Silverlight al mismo tiempo.
PDA´S: Un PDA (Personal Digital Assistant o Ayudante personal digital) es un dispositivo de pequeño tamaño que combina un ordenador, teléfono/fax, internet y conexiones de red.
A los PDAs también se les llama palmtops, hand held computers (ordenadores de mano) y pocket computers (ordenadores de bolsillo).
Un PDA típico puede funcionar como teléfono móvil, fax, explorador de internet, organizador personal, GPS, etc.
La mayoría de PD A empezaron a usarse con una especie de bolígrafo en lugar de teclado, por lo que incorporaban reconocimiento de escritura a mano. Hoy en día los PDAs pueden tener teclado y/o reconocimiento de escritura. Algunos PDA pueden incluso reaccionar a la voz, mediante tecnologías de reconocimiento de voz.
Apple fué una de las primeras compañías en ofrecer PDA, pero al poco tiempo otras muchas compañías empezaron a ofrecer productos similares.
ANDROID: Android es sin duda el líder del mercado móvil su programación esta en java y está basado en Linux diseñado originalmente para dispositivos móviles como los teléfonos inteligentes pero después tuvo modificación para ser usado en tabletas como es el caso del Galaxy Tab de Samsung , actualmente se encuentra en desarrollo para usarse en notebooks y Pc. Es Google, fue anunciado en el 2007 y liberado en el 2008, es usado por empresas como , LG, Samsung, Motorola entre otros.
Lenguaje de programación:: Utiliza el lenguaje C
C es el lenguaje de programación orientado a objetos que se utiliza para el desarrollo de apps en iOS. Comenzó en 1983, el mismo año en que se creó C++. Con los años, C++ ganó en popularidad. Pero en 1988, Steve Jobs cambió el destino de Objetive-C cuando lo licenció para NeXT. Tenía una cuota de mercado inferior al 1% hasta el año 2009, cuando el desarrollo para iOS comenzó a despegar, gracias sobre todo al iPhone e iPad. C++ se utiliza intensamente en sistemas de alto rendimiento mientras que C se utiliza principalmente en la industria de aplicaciones móviles.
IOS: Anteriormente denominado iPhone creado por Apple originalmente para el iPhone, siendo después usado en el iPod Touch e iPad. Es un derivado de Mac OS X, se lanzo en el año 2007, aumento el interés con el iPod Touch e iPad que son dispositivos con las capacidades multimedia del iPhone pero sin la capacidad de hacer llamadas telefónicas, en su principal revolución es una combinación casi perfecta entre hardware y software, el manejo de la pantalla multitáctil que no podía ser superada por la competencia










¿TOPICOS AVANZADOS DE PROGRAMACION?