Tematica1
Upcoming SlideShare
Loading in...5
×
 

Tematica1

on

  • 197 views

 

Statistics

Views

Total Views
197
Views on SlideShare
183
Embed Views
14

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 14

http://tics-al-dia.blogspot.com 14

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tematica1 Tematica1 Document Transcript

    • Programación Orientada a Objetos La orientación a objetos es la forma natural de cómo percibimos el mundo real, todo lo que vemos son objetos: animales, personas, arboles, montañas, nubes, carros, etc. La especie humana tiene la capacidad de pensar en términos de objetos y éstos se pueden dividir en animados e inanimados, con atributos y comportamientos que los identifican. Es por ello que la POO permite a los diseñadores implementar un diseño orientado a objetos como un sistema funcional, en dicha técnica de programación el elemento principal son las clases, un programa se construye a partir de un conjunto de clases. Una vez definida o implementada una clase, se pueden declarar elementos de esta clase de modo similar a como se declaran las variables del lenguaje. Los elementos declarados de una clase se llaman objetos de la clase, el cual es una unidad que contiene todas sus características y comportamientos en sí misma, lo cual lo hace como un todo independiente pero que se interrelaciona con objetos de su misma clase o de otras clase, como sucede en el mundo real. Los lenguajes de programación convencionales son poco más que una lista de acciones a realizar sobre un conjunto de datos en una determinada secuencia. Si en algún punto del programa modificamos la estructura de los datos o la acción realizada sobre ellos, el programa cambia. La POO aporta un enfoque nuevo, convirtiendo la estructura de datos en el centro sobre el que pivotan las operaciones. De esta forma, cualquier modificación de la estructura de datos tiene efecto inmediato sobre las acciones a realizar sobre ella, siendo esta una de las diferencias radicales respecto a la programación estructurada. La POO es un paradigma de programación diferente a la Programación estructurada o a la misma Programación Procedural al que la mayoría de los programadores están acostumbrados a utilizar, en estas lo más importante es el procedimiento que se está desarrollando a través de un lenguaje de programación. En POO, se hace un gran énfasis a los datos, y todo gira alrededor de ellos. Cada vez que alguien quiere hacer una aplicación, debe pensar en los elementos (datos) que va a utilizar para programar, y la relación que existe entre estos datos, en su forma de interactuar entre sí. Clases y Objetos Ahora vamos a realizar una aproximación sobre algunos conceptos y terminología importantes de la orientación a objetos. Un objeto puede considerarse cualquier cosa, ya sea tangible o intangible, que se pueda imaginar. Los objetos de software tienen un estado y comportamiento, el estado lo determina los atributos y el comportamiento los métodos que manipulan esos atributos, la parte publica son su comportamiento y la privada son su estado. Por ejemplo un Empleado puede tener datos como su nombre, documento identidad, dirección, teléfono,.. y operaciones (métodos) para
    • asignar y cambiar esos valores de datos. Dentro de un programa se escriben instrucciones para crear objetos, para que la computadora pueda crear un objeto, se debe hacer una definición llamada clase. Una clase es un tipo de plantilla que determina lo que los objetos pueden hacer o no hacer, es decir las clases encapsulan (envuelven) datos (atributos) y métodos (comportamientos) que definen las características comunes a todos los objetos excepto por su estado durante la ejecución de un programa. Entonces una clase equivale a la generalización de un tipo específico de objetos. La clave de la POO está en abstraer los métodos y los datos comunes a un conjunto de objetos y almacenarlos en una clase. Los tipos de datos abstractos funcionan de forma similar a los tipos predefinidos, se pueden crear variables de un tipo (llamados objetos u instancias de una clase) y manipular dichas variables (mediante el envío de mensajes o solicitudes y el objeto sabe lo que tiene que hacer con él). Encapsulamiento El encapsulamiento permite a los objetos ocultar su implementación de otros objetos, a esto se le conoce como ocultamiento de información. Aunque los objetos pueden comunicarse entre si, a través de interfaces bien definidas (ejemplo en el caso de la interfaz de un conductor de vehículo, este incluye el volante, pedal acelerador, pedal freno y palanca de velocidades), no están conscientes de cómo se implementan otros objetos (de la misma forma que el conductor no conoce como están implementados los mecanismos del volante, motor, freno y transmisión). Por lo general, los detalles de implementación se ocultan dentro de los mismos objetos. Por lo cual es posible conducir un vehículo sin saber cómo es el funcionamiento del motor, transmisión y otros sistemas del vehículo. Beneficios del encapsulamiento  Modularidad: el código fuente de un objeto puede ser escrito y dársele mantenimiento, independientemente del código fuente de otros objetos. Así mismo, un objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.  Ocultamiento de la información: un objeto tiene una "interfaz publica" que otros objetos pueden utilizar para comunicarse con él. Pero el objeto puede mantener información y métodos privados que pueden ser cambiados en cualquier tiempo sin afectar a los otros objetos que dependan de ello.
    •  Los objetos proveen el beneficio de la modularidad y el ocultamiento de la información. Las clases proveen el beneficio de la reutilización. Los programadores de software utilizan la misma clase, y por lo tanto el mismo código, una y otra vez para crear muchos objetos (reutilización de código). Herencia En la POO el mecanismo herencia se usa para diseñar dos o más clases que son diferentes pero que comparten muchas características comunes. Primero se define la clase que posee las características comunes de las clases. Luego se definen las clases como una extensión de la clase común que heredan todo de la clase común. Se llama superclase (también se conoce como: padre, base, antecesor) a la clase común y subclases (también se conoce como: hija, descendiente, derivada) a todas las clases que la heredan. La herencia permite compartir automáticamente métodos y datos entre clases, subclases y objetos, es decir el código de cualquiera de las clases puede ser utilizado sin más que crear una clase derivada de ella, o bien una subclase, lo que en POO se llama reutilización de código. Como ejemplo podemos representar la superclase InstrumentoMusical y luego definir a partir de esta las subclases Instru_Percusion, Instru_Cuerda y Instru_Viento, a partir de la subclase InstrumentoCuerda definir las subclases CuerdaFrotada, CuerdaPercutida y CuerdaPulsada, como muestra la Figura 1.1. Figura 1.1 Herencia InstrumentoMusical Instru_Viento Instru_Cuerda Instru_Percusion CuerdaFrotada CuerdaPercutida CuerdaPulsada
    • Polimorfismo La capacidad que tienen las subclases de una superclase de utilizar un mismo método de forma diferente, se denomina en POO polimorfismo. Cuando un programa invoca a un método a través de una variable de la superclase, mediante el polimorfismo se selecciona la versión correcta del método de la subclase a llamar, con base en el tipo de la referencia almacenada en la variable de la superclase. El polimorfismo permite mejorar la organización y la legibilidad del código, así como generar programas ampliables no solo durante el proceso de desarrollo del proyecto, sino también cada vez que se desean adherir nuevas características al mismo. Un ejemplo práctico: la superclase Cuadrilátero de la cual se deriva la subclase Rectángulo, un objeto Rectángulo es una versión más específica de un Objeto Cuadrilátero. Cualquier operación como por ejemplo calcular el área o el perímetro, que puede realizarse en el objeto Cuadrilátero también puede realizarse sobre un objeto Rectángulo. Estas operaciones también pueden llevarse acabo sobre otros objetos Cuadriláteros como: trapezoide, trapecios y paralelogramos. Clase Abstracta Una clase abstracta es aquella en la que se declaran métodos que no se implementan (métodos abstractos), es decir que no contiene código, este tipo de clases se usan para modelar objetos de alto nivel, los métodos abstractos deben existir en sus clases hijas. Una clase abstracta no puede ser instanciada (Crear un objeto a partir de ella), porque las clases abstractas están “incompletas” pero si se puede heredar y las clases hijas serán las encargadas de agregar la funcionalidad “las partes faltantes” a los métodos abstractos. Si no lo hacen así, las clases hijas deben ser también abstractas. Una clase abstracta puede contener métodos no-abstractos pero al menos uno de los métodos debe ser declarado abstracto. Para declarar una clase o un método como abstractos, se utiliza la palabra reservada abstract. Métodos abstractos Un método abstracto es un método declarado en una clase para el cual esa clase no proporciona la implementación (el código). Es decir son parte de clases abstractas y deben ser redefinidos en las subclases. Cada subclase puede definir el método de manera diferente.
    • Clases concretas Las clases que pueden usarse para instanciar objetos se conocen como clases concretas. Dichas clases proporcionan implementaciones de todos los métodos que declara. Introducción al Lenguaje Java Java es un lenguaje que nos ayuda a entender mucho mejor el paradigma Orientado a Objetos de una manera más sencilla y natural. En Java, lo programadores se concentran en la creación de sus propios tipos de referencia, mejor conocidos como clases. Cada clase contiene como sus miembros a un conjunto de campos (variables) y métodos que manipulan esos campos. Antecedentes del Lenguaje Java Java tiene sus inicios en 1991, cuando la empresa Sun Microsystems patrocinó un proyecto interno, el cual generó un lenguaje basado en C++, con una tecnología robusta, eficiente, orientada a objetos, independiente de la arquitectura, para programar dispositivos electrodomésticos, asistentes personales digitales PADs (Personal digital Assistants), pero sin mayor éxito comercial y utilidad en ese momento. En 1993, debido a la gran popularidad de la World Wide Web y al gran potencial de Java para agregar contenido dinámico y animaciones a las páginas Web, Java toma vida de nuevo en el ámbito comercial y es anunciado formalmente en 1995. Desde que surgió a la actualidad, Java ha tenido grandes evoluciones, ahora es una plataforma compatible con nuevos lenguajes de programación que la han aprovechado para su desarrollo. Se utiliza para desarrollar variedad de aplicaciones: juegos, programas comerciales empresariales a gran escala, para mejorar la funcionalidad de los servidores de Word Wide Web, programas de escritorio, para proporcionar funcionalidad a los dispositivos domésticos y móviles, aplicaciones de automatización e inteligencia artificial como en el manejo de brazos mecánicos y para muchos otros propósitos. Desde 2010, Java lo distribuye la firma ORACLE, uno de los más grandes y poderosos manejadores de bases datos, ello deslumbra un futuro muy prometedor para dicho lenguaje. Características en el Diseño de Java  Sencillo, orientado a objetos y familiar: Sencillo, para que no requiera grandes esfuerzos de entrenamiento para los desarrolladores. Orientado
    • a objetos, porque la tecnología de objetos se considera madura y es el enfoque más adecuado para las necesidades de los sistemas distribuidos y/o cliente/servidor. Familiar, porque aunque se rechazó C++, se mantuvo Java lo más parecido posible a C++, eliminando sus complejidades innecesarias, para facilitar la migración al nuevo lenguaje.  Robusto y seguro: Robusto, simplificando la administración de memoria y eliminando las complejidades del uso de apuntadores y aritmética de apuntadores del C. Seguro para que pueda operar en un entorno de red.  Independiente de la arquitectura y portable: Java está diseñado para soportar aplicaciones que serán instaladas en un entorno de red heterogéneo, con hardware y sistemas operativos diversos. Para hacer esto posible, el compilador Java genera un código llamado 'bytecodes' o comúnmente conocido como código byte, un formato de código independiente de la plataforma diseñado para transportar código eficientemente a través de múltiples plataformas de hardware y software. Es además portable en el sentido de que es rigurosamente el mismo lenguaje en todas las plataformas. El 'bytecode' es traducido a código máquina y ejecutado por la Java Virtual Machine, que es la implementación Java para cada plataforma hardware-software concreta.  Alto rendimiento: A pesar de ser interpretado, Java tiene en cuenta el rendimiento, y particularmente en las últimas versiones dispone de diversas herramientas para su optimización. Cuando se necesitan capacidades de proceso intensivas, pueden usarse llamadas a código nativo.  Interpretado, multi-hilo y dinámico: El intérprete Java puede ejecutar código byte en cualquier máquina que disponga de una Máquina Virtual Java (JVM). Además Java incorpora capacidades avanzadas de ejecución multi-hilo (ejecución simultánea de más de un flujo de programa) y proporciona mecanismos de carga dinámica de clases en tiempo de ejecución. Características del Lenguaje  Lenguaje de propósito general.  Lenguaje Orientado a Objetos.  Sintaxis inspirada en la de C/C++.  Lenguaje multiplataforma: Una vez el programa se ha compilado, puede ser ejecutado en diferentes sistemas operativos (Windows, UNIX, Mac, etc.) sin necesidad de realizar cambios en el código fuente y sin que haya que volver a compilar el programa. Esta independencia de la plataforma es posible gracias a la máquina virtual.  Lenguaje interpretado: El intérprete a código máquina (dependiente de la plataforma) se llama Java Virtual Machine (JVM). La JVM, es un programa nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode, los archivos con extensión .class), el cual es generado por el compilador del lenguaje Java. La JVM se sitúa
    • en un nivel superior al Hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un puente que entiende tanto el bytecode, como el sistema sobre el que se pretende ejecutar. La JVM convierte de código bytecode a código nativo del dispositivo final. Puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta código pre compilado bytecode que es independiente de la plataforma multiplataforma.  El compilador Java realiza un análisis de sintaxis del código escrito en los archivos fuente de Java (con extensión .java), si no encuentra errores en el código genera los archivos compilados (con extensión .class). En caso de errores muestra las líneas erróneas. El compilador no genera un programa (con extensión .exe) ejecutable directamente por el sistema operativo, genera código interpretable (extensión .class).  Lenguaje gratuito: Creado por SUN Microsystems, que actualmente ORACLE distribuye gratuitamente el producto base, denominado JDK (Java Development Toolkit) o actualmente Java SE6 (Java Plataform, Standard Edition 6).  API distribuida con el Java SE6: disponibilidad de un conjunto amplio de librerías para realizar cualquier tipo de aplicación, clases para la creación de interfaces graficas, gestión de red, multitarea, acceso a datos, etc. Facilidades del Java SE6 (Java Plataform, Standard Edition 6)  Herramientas para generar programas Java. Compilador, depurador, herramienta para documentación, etc.  La JVM, necesaria para ejecutar programas Java.  La API de Java (jerarquía de clases).  Código fuente de la API (Opcional).  Documentación.  Java Runtime Environment (JRE): JRE es el entorno mínimo para ejecutar programas Java SE6. Incluye la JVM y la API. Está incluida en el Java SE6 aunque puede descargarse e instalarse separadamente. En aquellos sistemas donde se vayan a ejecutar programas Java, pero no compilarlos, el JRE es suficiente. El JRE incluye el Java Plug-in, que es el 'añadido' que necesitan los navegadores de internet para poder ejecutar programas Java SE6. Es decir, que instalando el JRE se tiene soporte completo Java SE6, tanto para aplicaciones normales (denominadas 'standalone') como para Applets (programas Java que se ejecutan en una página Web, cuando esta es accedida desde un navegador).
    • API Java Java dispone de las API (Conjunto de librerías predefinidas), la conforma una amplia jerarquía de clases relacionadas con el desarrollo de software, que permiten realizar cualquier tipo de aplicación. Esta organizada por paquetes dependiendo del tema (creación de interfaces graficas, gestión de red, multitarea, entrada y salida de datos, entre otras funcionalidades), estas son incluidas en cada versión de Java. Es importante consultar progresivamente el uso de las mismas para adquirir conocimientos sobre su funcionalidad y poder determinar que paquetes de la API son las necesarias de aplicar cuando se tiene el reto de un desarrollo. A continuación la descripción de algunos paquetes de la API: java.math: Proporciona clases para realizar la aritmética de precisión arbitraria entero (BigInteger) y la aritmética de precisión arbitraria decimal (BigDecimal). java.io: Provee la entrada y salida del sistema a través de flujos de datos, la serialización y el sistema de archivos. java.lang: Este paquete es uno de los más importantes de la API Java porque incluye muchas clases e interfaces primordiales en los programas a desarrollar, incluye clases como: Object, Thread, Exception, System, Integer, Float, Math, String, Boolean, Long, etc. java.util: Este paquete es una miscelánea de clases muy útiles en programación. Se incluyen, entre otras, Date (fecha), Dictionary (diccionario), Random (números aleatorios) y Stack (pila FIFO). java.text: Proporciona clases e interfaces para el manejo de texto, fechas, números y mensajes de una manera independiente de las lenguas naturales. java.security: Proporciona las clases e interfaces para seguridad en Java: Encriptación RSA... javax.crypto: Proporciona las clases e interfaces para operaciones criptográficas. javax.imageio: Este paquete contiene las clases básicas y las interfaces para describir el contenido de archivos de imagen, incluidos los metadatos y miniaturas (IIOImage), para controlar el proceso de lectura de la imagen (ImageReader, ImageReadParam y ImageTypeSpecifier) y proceso de la escritura de imagen (ImageWriter y ImageWriteParam), para llevar a cabo transcodificación entre formatos (ImageTranscoder), y para reportar errores (IIOException).
    • javax.print: Proporciona las clases principales y las interfaces de Java ™ para el servicio de impresión. javax.sound.midi: Proporciona las interfaces y las clases de E/S, la secuenciación, y la síntesis de MIDI (Musical Instrument Digital Interface) de datos. javax.xml: Define las constantes fundamentales de XML y la funcionalidad de las especificaciones XML. java.net: Proporciona las clases para implementar aplicaciones de red. java.sql: Proporciona la API para el acceso y procesamiento de los datos almacenados en un origen de datos (normalmente una base de datos relacional) usando el lenguaje de programación Java ™. java.rmi: Paquete RMI, para localizar objetos remotos, comunicarse con ellos e incluso enviar objetos como parámetros de un objeto a otro. org.omg.CORBA: Facilita la posibilidad de utilizar OMG CORBA, para la conexión entre objetos distribuidos, aunque estén codificados en distintos lenguajes. org.omg.CosNaming : Da servicio al IDL de Java, similar al RMI pero en CORBA javax.script: Las secuencias de comandos de la API se componen de interfaces y clases que definen los motores de script de Java TM y proporciona un marco para su uso en aplicaciones Java java.applet: Este paquete contiene clases para crear applets y clases que las applets utilizan para comunicarse en su contexto. Un applet es un pequeño programa que no pretende ser ejecutado por su propia cuenta, sino más bien a ser incorporado dentro de otra aplicación. La clase Applet debe ser la superclase de cualquier applet que se incrusta en una página Web o visto por el visor de applet de Java. java.beans: contiene varias clases para desarrollar y manipular beans (componentes reutilizables definidos por la arquitectura JavaBeans). La arquitectura suministra mecanismos para manipular propiedades de componentes y lanzar eventos cuando esas propiedades cambian. Usadas en herramientas de edición de beans, en la cual los beans puedan combinarse, personalizarse y manipularse. Un tipo de editor bean es el diseñador GUI en un Entorno de Desarrollo Integrado (IDE). javax.accessibility: Define un contrato entre los componentes de interfaz de usuario y una tecnología de asistencia que proporciona acceso a los componentes.
    • java.awt: Es el paquete más antiguo para el desarrollo grafico, con esta se puede construir programas de tipo FRAME, WINDOW Y APPLET. Este paquete contiene todas las clases para crear interfaces de usuario y la pintura de los gráficos e imágenes. En una interfaz de usuario un objeto como un botón, una barra de desplazamiento, una etiqueta, una caja de texto se llama componente. Un contenedor es un componente que puede contener componentes como botones, etiquetas,.. y otros contenedores. Un contenedor puede tener también un controlador de distribución que controla la ubicación visual de los componentes en el contenedor. Este paquete incluye entre otras las clases Button, Checkbox, Choice, Component, Graphics, Menu, Panel, TextArea, y TextField. En el siguiente link encontrara más información sobre las interfaces y clases de dicho paquete http://download.oracle.com/javase/6/docs/api/. javax.swing: este paquete contiene las librerías de componentes visuales mas nueva que proporciona java, no reemplaza a la librería awt sino que se apoya en ella y añade mas componentes. Usando esta librería se podrán construir los tres tipos de programas como son JFrame, JWindow y JApplet. Swing existe desde la JDK 1.1 (como un agregado). Antes de la existencia de swing, las interfaces gráficas de usuario se realizaban a través de AWT (Abstract Window Toolkit), de quien Swing hereda todo el manejo de eventos. Usualmente, para toda componente awt existe una componente Swing, por ejemplo, para la clase Button de awt su correspondiente es la clase JButton en Swing (el nombre de todas las componentes Swing comienza con "J"). Las componentes de Swing utilizan la infraestructura de awt, incluyendo el modelo de eventos awt, el cual rige cómo una componente reacciona a eventos tales como, eventos de teclado, mouse, etc... Es por esto, que la mayoría de los programas Swing necesitan importar dos paquetes awt: java.awt.* y java.awt.event.*. Como regla, los programas no deben usar componentes pesados de AWT junto a componentes Swing, ya que los componentes de AWT son siempre pintados sobre los de Swing. (Por componentes pesadas de AWT se entiende Menu, ScrollPane y todas las componentes que heredan de las clases Canvas y Panel de AWT). Una aplicación tipo Swing debe tener un contenedor de alto nivel (los contenedores de alto nivel son aquellos que sirven para encapsular partes completas de una interfaz gráfica, ya sea una aplicación o un Applet) que
    • contendrá toda la aplicación al que se le puedan agregar otros contenedores (panel de contenido) o componentes simples (botones, áreas de texto, etiquetas,..). Los contenedores de alto nivel que dispone java swing son: javax.swing.JFrame: Una ventana independiente Un JFrame debe ser la ventana principal de una aplicación y sólo debe haber una. Veamos la jerarquía de herencia de la clase JFrame: javax.swing.JApplet: paquete del cual debe heredar todo applet. Veamos la jerarquía de herencia de la clase JApplet: Javax.swing.JDialog: Diálogos, ventanas de interacción sencilla con el usuario como por ejemplo: java.swing.JOptionPane: Ventana de diálogo tipo SI_NO, SI_NO_CANCELAR, ACEPTAR, etc. java.swing.JFileChooser: Ventana para elegir un archivo. java.swing.JColorChooser … Veamos la jerarquía de herencia de la clase JDialog:
    • JDialog es contenedor de alto nivel. Sirve para crear ventanas de diálogo. Este tipo de ventanas se integran en las aplicaciones y Applets y se utilizan para mostrar al usuario mensajes. Las ventanas de diálogo son uno de los componentes más empleados en la creación de interfaces gráficos. Un JDialog admite otra ventana (JFrame o JDialog) como padre en el constructor. JFrame no admite padres. Un JDialog puede ser modal, un JFrame no. Javax.swing.JWindow: Una Ventana genérica, Window, puede utilizarse simplemente para que sea la clase padre de otras clases y se puede intercambiar por un Diálogo, Dialog, sin pérdida de funcionalidad. Veamos la jerarquía de herencia de la clase JWindow: En el desarrollo del presente curso y demás niveles de Java se énfasis en el desarrollo grafico con el paquete javax.swing. Por ello es muy importante ingresar al link: http://download.oracle.com/javase/6/docs/api/ sitio oficial Java para tener acceso a la documentación total de la API Java™ Platform, Standard Edition 6.
    • Applets Java En Java un applet (Subprograma), es un programa que no está diseñado para funcionar "por sí solo", para que funcione puede incrustarse en un documento HTML; es decir en una página Web. Cuando un Navegador carga una página Web que contiene un Applet, éste se descarga en el navegador Web y comienza a ejecutarse. Corre en un navegador web utilizando la Java Virtual Machine (JVM), o por medio del contenedor de applets appletviewer de Sun, usado para probar los applets antes de ser incrustados en una página web. El Navegador que carga y ejecuta el applet se conoce en términos genéricos como el contenedor de Applets. Para crear un applet se deben seguir los siguientes pasos:  El primer paso: codificar el programa empleando un editor de texto (como Edit, Word pad, Bloc de Notas..) o un Entorno de Desarrollo Integrado (IDE) como Netbeans  El segundo paso: crear la página Web desde la que se accederá al applet (o modificarla, si se trata de una página que ya existe pero que se desea mejorar).  El último paso: probar el applet (programa), en un navegador Web o con la utilidad "appletviewer" o desde un IDE se lo codifica a través de estas herramientas. Características de los applets:  Seguridad: los applets tienen menos derechos que una aplicación clásica. No pueden ni leer ni escribir ficheros, ni lanzar programas, ni cargar DLL; sólo pueden comunicarse con el servidor del que han salido. Lo anterior con el objetivo de impedir que un applet pueda destruir datos y/o espiar.  Los applet no residen en el disco duro de la máquina que los ejecuta.  El ciclo de vida de un applet es diferente; una aplicación se lanza una vez, mientras que un applet se inicializa y arranca, y se vuelve a arrancar cada vez que el usuario recarga la página en la que se encuentra el applet.  Cuando el navegador arranca un applet, busca la clase (archivo .class) cuyo nombre se debe indicar en la fuente HTML. Un applet, no necesita el método main(), porque el navegador automáticamente llama los métodos de la clase Applet en awt y de la clase JApplet en swing.  Se manejan por eventos: Un applet responde cuando recibe una petición por parte del sistema o del usuario.
    •  Si se utiliza la librería awt un applet debe heredar de la clase Applet y de la clase JApplet si se utiliza la librería Swing. Estas librerías proporcionan una interfaz estándar entre los applets y su entorno. El proceso para generar el archivo .class cuyo nombre es necesario insertar en la marca <applet> de la página web es: La jerarquía de la clase JApplet es la siguiente:
    • Todos los elementos que forman parte de la interfaz gráfica de un Applet están contenidos dentro de una clase que extiende a la clase JApplet del paquete javax.swing, de ahí que en última instancia herede propiedades y métodos de la clase Container que es la que define de forma abstracta a todos los componentes que sirven para encapsular otros componentes. Estructura de un applet import javax.swing.*; // se importa swing para usar la clase JApplet import java.awt.Graphics; public class NombreClase extends JApplet { public void init(){ } public void start(){ } public void stop(){ } public void destroy(){ } public void paint(Graphics g){ } } El método init() hace las funciones de un constructor: inicializa las variables, crea componentes de la GUI, cargas de imágenes, crear subprocesos y sonidos necesarios para la ejecución del applet. En el caso de los applet, este método únicamente es llamado por el sistema al cargar el applet. Si no se define un método que herede de la clase JApplet se debe definir el método init. El método start() es la llamada para arrancar el applet cada vez que es visitado. La clase JApplet no hace nada en este método. Las clases derivadas deben sobrecargarlo para comenzar la animación, el sonido, etc. Esta función es llamada automáticamente cada vez que la zona de visualización en que está
    • ubicado el applet se expone a la visión, a fin de optimizar el uso de los recursos del sistema y no ejecutar algo que no puede ser apreciado (aunque es potestad del programador el poder variar este comportamiento impuesto por defecto, y hacer que un applet siga activo incluso cuando se encuentre fuera del área de visión). Esto es, imagínese la carga de un applet en un navegador minimizado; el sistema llamará al método init(), pero no a start(), que sí será llamado cuando se restaure el navegador a un tamaño que permita ver el applet. Naturalmente, start() se puede ejecutar varias veces: la primera tras init() y las siguientes (porque init() se ejecuta solamente una vez) tras haber aplicado al applet el método stop(). El método stopt() es la llamada para detener la ejecución del applet. Se llama cuando el applet desaparece de la pantalla. El método destroy() se llama cuando ya no se va a utilizar más el applet, cuando se necesita que sean liberados todos los recursos dispuestos por el applet, por ejemplo, cuando se cierra el navegador. El método paint() es llamado cada vez que el área de dibujo del applet necesita ser refrescada. La clase JApplet simplemente dibuja un rectángulo gris en el área, es la clase derivada, obviamente, la que debería sobrecargar este método para representar algo inteligente en la pantalla. Cada vez que la zona del applet es cubierta por otra ventana, se desplaza el applet fuera de la visión o el applet cambia de posición debido a un redimensionamiento del navegador, el sistema llama automáticamente a este método, pasando como argumento un objeto de tipo Graphics que delimita la zona a ser pintada; en realidad se pasa una referencia al contexto gráfico en uso, y que representa la ventana del applet en la página web. Se debe importar la clase JApplet y el paquete java.awt.Graphics (conjunto de herramientas de ventanas abstractas) para obtener gráficos y pintarlos (dibujarlos) en el applet. Herencia de la clase Graphics El uso de la clase Graphics que pertenece al paquete java.awt es básico para todo lo relacionado con el uso de gráficos en Java. Para poder dibujar se necesita de un contexto gráfico, es decir que se debe instanciar la clase Graphics, pero a través del método paint, preestablecido para ello, por lo que no se le puede cambiar el nombre. El método paint tiene como propósito dibujar el contenido del applet.
    • Como el JDK no tiene una interface de desarrollo, las aplicaciones/applets puede ser creadas mediante un editor de texto ( Edit, Word Pad, etc), compilarlas y ejecutarlas por medio de la línea de comandos del DOS o mediante un Entorno de desarrollo Integrado (IDE) como Netbeans. Ejemplo Applet 1: applet que dibuja líneas, rectángulos y círculos. Para realizarlo mediante un editor de texto debe abrir un archivo nuevo en el bloc de notas, agregar el siguiente código y guardar el archivo con el nombre Appletdibujar.java - Para realizarlo mediante el IDE Netbeans ver el documento Crear_Compila_Ejecutar_Applets_En_Netbeans en documentos de apoyo carpeta unidad 1. //Applet que dibuja líneas y figuras //Archivo: AppletDibujar.java import java.awt.Graphics; // importa las clases del paquete java.awt import javax.swing.*; // importa las clases del paquete javax.swing para usar JApplet public class AppletDibujar extends JApplet { // metodo para dibujar las figuras y líneas de texto en el fondo del applet public void paint(Graphics g) { // llamar a la version del metodo paint de la superclase super.paint(g); g.drawString("Dibuja figuras y líneas", 200, 80); g.drawLine(10,10, 100, 100); g.drawRect(0, 0, 150, 150); g.drawOval(100, 100, 100, 100); } // fin del metodo paint } // fin de la clase AppletDibujar Cuando el applet es creado mediante un IDE como Netbeans, se genera automáticamente el archivo .html para poder visualizar el applet. Cuando se crea el archivo (una página de Web) en el bloc de notas, se agrega el código y se guarda el archivo con extensión .html, en este caso AppletDibujar.html <html> <head> <title>Applet Dibuja figuras y líneas </title> </head> <body> <applet width="500" height="500" code="AppletDibujar"></applet> </body> </html>
    • Los dos archivos Appletdibujar.java y Appletdibujar.html se deben guardar en el mismo directorio. La forma de visualizar este applet por medio de la línea de comandos del DOS, es compilando y ejecutando el visualizador de applets de java. Como java diferencia entre mayúsculas y minúsculas se debe tener cuidado en escribir el nombre del archivo en la ventana de comandos, para que no se generen errores en la compilación y ejecución del mismo: Compilar el applet, por medio del comando javac para generar el archivo .class: Ejecutar (probar) el applet por medio del visualizador appletviewer:
    • Visualización del applet desde el Navegador Internet Explorer: Explicación del código applet: En la línea de código import java.awt.Graphics; importa las clases del paquete Graphics del paquete java.awt En la línea de código import import javax.swing.*; importa las clases del paquete javax.swing En la línea de código public class Appletdibujar extends JApplet se declara la clase Aplicacion5 y con la palabra reservada extends se indica que hereda de la clase JApplet. En la línea de código public void paint(Graphics g) el contenedor de applets llama al método paint y le pasa el argumento Graphics, es decir el método paint recibe el parámetro g (puede emplearse otro nombre para el parámetro que no sea g), un objeto de la clase Graphics. Ese objeto (g) tendrá la información sobre el dispositivo que se va a dibujar, como cantidad de colores, tamaño,... se usa el objeto de la clase Graphics entregado al método paint, para dibujar (escribir) en la zona de la applet. super.paint(g); llama a la versión del método paint de la superclase, la parte heredada de la clase base (Graphics). Para ello se usa la técnica super.metodo() g.drawString("Dibuja figuras y líneas", 200, 80); se utiliza g para enviar el mensaje drawString a el objeto Graphics. El mensaje proporciona la
    • información (argumentos) que drawString necesita para realizar su tarea y Graphics utiliza dicha información para dibujar la cadena en la posición especificada. La información consiste en la cadena de texto y las coordenadas entero “x” y entero “y” donde dibujar la cadena de texto. g.drawLine(10,10, 100, 100); dibuja una línea, los parámetros iníciales corresponden a la coordenada "x" y "y" en donde el objeto Graphics comienza a dibujar la línea y coordenadas finales "x" y "y", donde termina de dibujar la línea. g.drawRect(0, 0, 150, 150); dibuja una rectángulo, los primeros dos valores enteros representan la coordenada “x” superior izquierda y la coordenada “y” superior izquierda en donde el objeto Graphics comienza a dibujar el rectángulo. El tercer valor corresponde al ancho y el cuarto el alto del rectángulo en pixeles. g.drawOval(100, 100, 100, 100); dibuja un ovalo, los primeros dos valores enteros representan la coordenada “x” de la esquina superior izquierda del óvalo que se elaborará y la coordenada “y” de la esquina superior izquierda del óvalo que se elaborará. Las dos siguientes son el ancho y la anchura del óvalo que se elaborará. Explicación del archivo Appletdibujar.html para visualizar el applet: <html> inicio de la página web <head> inicio de cabecera de la página <title>Applet APlicacion5 </title> titulo de la pagina </head> // fin de cabecera de la página <body> // Inicio del cuerpo de la página La línea de código <applet width="500" height="500" code=" AppletDibujar"></applet> incluye el applet en la página Web a través de la marca <applet>, el parámetro code indica al navegador el archivo con el código Java compilado .class, el parámetro width indica el ancho y height la altura de la ventana del applet. </body> // fin del cuerpo de la página </html> // inicio de la página Las instrucciones html están encerradas entre los caracteres: < y >. La estructura básica de una página HTML es: <html> <head> </head> <body> Cuerpo de la página.
    • </body> </html> Una página HTML es un archivo que generalmente tiene como extensión los caracteres html, en este caso AppletDibujar.html. Toda página comienza con la marca: <html> y finaliza con la marca: </html> Los fines de marcas tienen el mismo nombre que el comienzo de marca, más el carácter / Una página HTML tiene dos secciones: La cabecera: <head> </head> Y el cuerpo de la página: <body> Cuerpo de la página. </body> Todo el texto que se disponga dentro del <body> aparece dentro del navegador tal cual lo se haya escrito. Ejemplo Applet 2: applet que dibuja un rectángulo relleno de color dentro de otro rectángulo y visualiza mensaje: //Applet que dibuja rectángulo relleno de color dentro de otro rectángulo y visualiza mensaje //Archivo: AppletRectangulo.java import java.awt.*; //importa paquete java.awt import javax.swing.*; //importa paquete javax.swing // <applet width="500" height="500" code="AppletRectangulo"></applet> public class AppletRectangulo extends JApplet{ public void paint(Graphics g) { super.paint(g); // llamar a la versión del método paint de la superclase g.setColor(Color.blue); //establece color g.drawRect(30,30,240,140);//dibuja rectángulo g.setColor(Color.orange); //establece color g.fillRect(40,40, 220, 120);//dibuja rectángulo relleno de color
    • g.setColor(Color.blue); //establece color g.drawString("Bienvenidos al Curso:", 80, 100); g.drawString("Variables y Estructura de la POO Java", 47, 140); } //fin metodo paint } //fin clase AppletRectangulo Una vez compilado el archivo, se prueba con el comando appletviewer: Explicación del ejemplo: La siguiente línea de código //<applet width="500" height="500" code="AppletRectangulo"></applet> incluida dentro del archivo del applet, evita tener que hacer un archivo html aparte, ya que un navegador o visualizador de applets lo que requiere para ejecutar el applet es solamente la directiva <applet>, dicha línea se deja como comentario dentro del applet, de manera que al compilar no da un error por esta instrucción y al usar el
    • visualizador de applets, se utiliza el mismo archivo, como se muestra en la ventana de comandos de DOS donde probó el applet. g.setColor(Color.blue); Como el color negro es el color por defecto del contexto gráfico, para establecer otro color, se utiliza la función setColor, y se le pasa un color predefinido en la clase Color del paquete java.awt, dicha clase proporciona un conjunto de colores predefinidos en forma de miembros estáticos de dicha clase. Mediante dicho método, se cambia el color con el que se dibuja una línea, un texto o se rellena una figura cerrada en el contexto gráfico como en este caso en la línea g.fillRect(40,40, 220, 120) Los colores predefinidos son los siguientes: Color.white: Blanco Color.black: Negro Color.yellow : Amarillo Color.lightGray : Gris claro Color.red: Rojo Color.green: Verde Color.gray : Gris Color.pink : Rosado Color.magenta : Fuccia Color.darkGray: Gris Ocuro Color.orange: Naranja Color.cyan : Azul claro Color.blue : Azul Otros métodos de la clase Graphics para dibujar figuras: draw3DRect ( int x, int y, int anchura, int altura, boolean b ): Dibuja un rectángulo tridimensional en el color actual, con la anchura y altura especificadas. La esquina superior izquierda del rectángulo tiene las coordenadas (x,y). El rectángulo aparece con relieve cuando b es true y sin relieve cuando b es false. fill3DRect ( int x, int y, int anchura, int altura, boolean b ), su funcionamiento es igual a draw3DRect pero con la diferencia que lo dibuja relleno de color. drawArc(int x, int y, int anchura, int altura, int anguloInicial, int anguloArco): dibuja un arco, para ello se requiere 6 parámetros: los dos primeras: la coordenada “x” de la esquina superior izquierda del arco y la coordenada “y” de la esquina superior izquierda del arco, el tercero corresponde la anchura del
    • arco, el cuarto a la altura del arco, el quinto al ángulo de inicio y el sexto a la apertura angular del arco, en relación con el ángulo de inicio Para obtener más información sobre los métodos de la clase Graphics, ingresar al siguiente link: http://download.oracle.com/javase/6/docs/api/