jueves, 19 de agosto de 2010

Conceptos de Applet 19/08/2010

1.    Programación de applet
Un applet es una pequeña aplicación accesible en un servidor Internet, que se transporta por la red, se instala automáticamente y se ejecuta como parte de un documento web. Dado que los applets son soportados por ambos navegadores, su uso se ha popularizado bastante. Los applets tienen, sin embargo, un problema que impide que se utilicen más habitualmente. Este problema consiste en que, al igual que sucede con las imágenes, cuando colocamos un applet en una página web debemos definir un rectángulo de un tamaño determinado donde permanecerá el mismo, no pudiendo actuar fuera de sus márgenes.
2.    Aplicaciones autónomas
// Hola.java
import java.io.IOException;
public class Hola
{
    public static void main(String[] args)throws IOException {
        System.out.println("Hola, mundo!");
}
Este ejemplo necesita una pequeña explicación.
  • Todo en Java está dentro de una clase, incluyendo programas autónomos.
  • El código fuente se guarda en archivos con el mismo nombre que la clase que contienen y con extensión “.java”. Una clase (class) declarada pública (public) debe seguir este convenio. En el ejemplo anterior, la clase es Hola, por lo que el código fuente debe guardarse en el fichero “Hola.java”
  • El compilador genera un archivo de clase (con extensión “.class”) por cada una de las clases definidas en el archivo fuente. Una clase anónima se trata como si su nombre fuera la concatenación del nombre de la clase que la encierra, el símbolo “$”, y un número entero.
  • Los programas que se ejecutan de forma independiente y autónoma, deben contener el método ”main()”.
  • La palabra reservada  ”void” indica que el método main no devuelve nada.
  • El método main debe aceptar un array de objetos tipo String. Por acuerdo se referencia como ”args”, aunque puede emplearse cualquier otro identificador.
  • La palabra reservada  ”static” indica que el método es un método de clase, asociado a la clase en vez de una instancias de la misma. El método main debe ser estático o ’’de clase’’.
  • La palabra reservada public significa que un método puede ser llamado desde otras clases, o que la clase puede ser usada por clases fuera de la jerarquía de la propia clase. Otros tipos de acceso son ”private” o ”protected”.
  • La utilidad de impresión (en pantalla por ejemplo) forma parte de la biblioteca estándar de Java: la clase ‘’’System’’’ define un campo público estático llamado ‘’’out’’’. El objeto out es una instancia de ‘’’PrintStream’’’, que ofrece el método ‘’’println (String)’’’ para volcar datos en la pantalla (la salida estándar).
  • Las aplicaciones autónomas se ejecutan dando al entorno de ejecución de Java el nombre de la clase cuyo método main debe invocarse. Por ejemplo, una línea de comando (en Unix o Windows) de la forma java –cp . Hola ejecutará el programa del ejemplo (previamente compilado y generado “Hola.class”) . El nombre de la clase cuyo método main se llama puede especificarse también en el fichero “MANIFEST” del archivo de empaquetamiento de Java (.jar).
3.    Caracteristicas de un Applet
Un applet es una mini-aplicación escrita en Java. No tienen ventana propia, se ejecutan en la ventana del browser y tienen importantes restricciones de seguridad, las cuales se comprueban al llegar al browser: sólo pueden leer y escribir en el servidor del que han venido y solo pueden acceder a una limitada información en el servidor en el que se están ejecutando.
·         Los applets no tienen un método main( ) con el que comience la ejecución.
·         Todos los applets derivan de la clase java.applet.Applet
·         Los applets deben redefinir ciertos métodos heredados de Applet que controlan su ejecución: init(), start(), stop(), destroy().
·         Los métodos gráficos se heredan de Component, mientras que la capacidad de añadir componentes de interfase de usuario de heredan de Container y de Panel.
·         También suelen redefinir ciertos métodos gráficos: los más importantes son paint(), update() y repaint().
·         Los applets disponen de métodos relacionados con la obtención de información, como por ejemplo: getAppletInfo(), getAppletContext(), getParameterInfo(), getParameter(),getCodeBase(), getDocumentBase() e isActive()
4.    Caracteristicas de la clase AWT

AWT es el acrónimo del X Window Toolkit para Java, donde X puede ser cualquier cosa: Abstract, Alternative, Awkward o  Another. Se trata de una biblioteca de clases Java para el desarrollo de Interfaces de Usuario Gráficas. La versión del AWT que Sun proporciona con el JDK se desarrolló en sólo dos meses y es la parte más débil de todo lo que representa Java como lenguaje. El entorno que ofrece es demasiado simple, no se han tenido en cuenta las ideas de entornos gráficos novedosos, sino que se ha ahondado en estructuras orientadas a eventos, llenas de callbacks y sin soporte alguno del entorno para la construcción gráfica; veremos que la simple acción de colocar un dibujo sobre un botón se vuelve una tarea harto complicada. Quizá la presión de tener que lanzar algo al mercado haya tenido mucho que ver en la pobreza de AWT.
La estructura de la  versión actual del AWT podemos resumirla en los puntos que exponemos a continuación:
  • Los Contenedores contienen Componentes, que son los controles básicos
  • No se usan posiciones fijas de los Componentes, sino que están situados a través de una disposición controlada (layouts)
  • El común denominador de más bajo nivel se acerca al teclado, ratón y manejo de eventos
  • Alto nivel de abstracción respecto al entorno de ventanas en que se ejecute la aplicación (no hay áreas cliente, ni llamadas a X, ni hWnds, etc.)
  • La arquitectura de la aplicación es dependiente del entorno de ventanas, en vez de tener un tamaño fijo
  • Es bastante dependiente de la máquina en que se ejecuta la aplicación (no puede asumir que un diálogo tendrá el mismo tamaño en cada máquina)
  • Carece de un formato de recursos. No se puede separar el código de lo que es propiamente interface. No hay ningún diseñador de interfaces (todavía)
Características de la clase SWING
·         Swing es una de las mejoras principales que ha experimentado el JDK en su versión 1.2 con respecto a la versión 1.1, y representa la nueva generación de AWT. También es una de las API de las Clases de Fundamentos de Java (JFC), lo cual es el resultado de un esfuerzo de colaboración muy grande entre Sun, Netscape, IBM y otras empresas. Lo que da a Swing su importancia es el poder que ofrece para desarrollar interfaces gráficas de usuario (GUI) para
·         Applets y aplicaciones. La cantidad y calidad de los controles GUI que ofrece Swing no tiene
·         rival en ningún otro juego de herramientas GUI.
·         El origen de los controles GUI que presenta Swing lo encontramos en las Clases de Fundamentos de Internet de Netscape (IFC). Los componentes Swing van más allá de las IFC, hasta el punto de que no hay un parecido apreciable entre los componentes Swing y los de las IFC. Swing ofrece también la posibilidad de cambiar fácil y rápidamente el aspecto y sensación (L&F) de un único componente o grupo de componente. Esta posibilidad, que se conoce como aspecto y sensación conectables (PL&F), es un sello distintivo de Swing.


5.    Listado de clases que se utilizan en un applet y la librería AWT

AWTEventMulticaster, dispatcher para sucesos AWT, eficaz y multiprogramable. Hace el multicast de sucesos a varios componentes.
AWTPermission, para los permisos AWT.
BorderLayout, es el primer gestor de ajuste de línea. Estos gestores, que analizaremos dentro de muy poco, sirven para disponer los elementos (los componentes) en los contenedores. Éste divide el contenedor en 5 partes: norte, sur, este, oeste y centro.
Button, clase de los botones.
Canvas, área en la que se puede dibujar una aplicación.
Checkbox, CheckboxGroup, CheckboxMenuItem gestionan los botones de tipo booleano (apretado o no apretado)
Choice, presenta un menú a cortina para elegir.
Color, colores en RGB o en otros espacios arbitrarios de colores.
Component, Clase de la que derivan todos los componentes GUI (pulsadores, etiquetas,…)
Cursor, cursores.
Dialog, ventanas de diálogo en las que se indican errores y no sólo eso.
Dimension, cajas que gestionan el tamaño de los componentes, la altura y la anchura.
Event, clase que gestiona los sucesos según el viejo modelo de gestión de los sucesos (Java 1.0). Se ha dejado para que se puedan trabajar las viejas aplicaciones y apliques Java y se declara deprecated. En efecto, este modelo se ha cambiado porque, en situaciones complejas, es decir, con muchos componentes puestos unos encima de otros, no se entendía qué componente recibía el suceso.
FileDialog, dialog especial que gestiona el input y el output del archivo. Es muy cómoda.
Font, fonts para el texto.
Frame, clase ya analizada que implementa las ventanas con título y marco.
Graphics, contexto gráfico en el que se puede dibujar.
Image, superclase para todas las clases que representan una imágen gráfica.
Label, etiqueta.
List, listado
Menu, menú de tipo pull-down (a descenso).
MenuBar, barra de los menús.
Panel, contenedor.
Scrollbar, barra de desplazamiento.
ScrollPane, panel con dos barras de desplazamiento.
SystemColor, representa los colores simbólicos de un objeto GUI en un sistema.
TextComponent, superclase de todos los componentes que incluyen el texto.
TextArea, área de testo.
TextField, simple línea de texto.
Window, ventana (sin borde y barra de menú).

6.    Métodos asociados a la clase Button.


La clase Button proporciona una implementación por defecto para los botones. Un botón es un sencillo control que genera un evento Action cuando el usuario lo pulsa. La apariencia en la pantalla de los botones depende de la plataforma en que se está ejecutando y si el botón está disponible o no. La única faceta de la apariencia de un botón que puede cambiar sin crear su propia clase son la fuente, el texto mostrado, los colores de fondo y de primer plano, y (habilitando o deshabilitando el botón) si el botón aparece activado o desactivado.
Abajo tienes el código que crea los tres botones y reacciona a las pulsaciones de los botones. (Aquí tienes el programa completo.)
//en el código de inicialización:
    b1 = new Button();
    b1.setLabel("Disable middle button");
 
    b2 = new Button("Middle button");
 
    b3 = new Button("Enable middle button");
    b3.disable();
    . . .
 
public boolean action(Event e, Object arg) {
    Object target = e.target;
         
    if (target == b1) { //Han pulsado "Disable middle button"
        b2.disable();
        b1.disable();
        b3.enable();
        return true;
    }
    if (target == b3) { //Han pulsado "Enable middle button"
        b2.enable();
        b1.enable();
        b3.disable();
        return true;
    }
    return false;
}
 
 
El código anterior muestra cómo utilizar uno de los métodos más comunes de la clase Button. Además, la clase Button define un método getLabel(), que le permite encontrar el texto mostrado en un botón particular.

7.    Métodos asociados a la clase Label.
La etiqueta es un contenedor para un texto. Esta hace aparecer en la pantalla una simple línea de texto que el usuario no puede editar, y que, sin embargo, la aplicación puede cambiar.
La etiqueta, invocada en Java Label, se encuentra en el paquete java.awt. Por lo tanto para ser utilizada, nuestro programa tendrá que empezar una import java.awt.Label (para incluir sólo la clase Label del paquete), o import java.awt.* (para incluir todas las clases del paquete) internamente al programa que quiere utilizarla, por lo tanto, tendrá que declarar un objeto de tipo Label de la siguiente forma:

·         Label etiqueta = new Label();
La Label tiene tres constructores:

·         Label() , que construye una etiqueta vacía.
·         Label(String text), que construye una etiqueta con texto Text, justificada a la izquierda.
·          Label(String text, int alignment) , que construye una etiqueta con texto Texto, justificada con alignment.

Algunos métodos del objeto son:
·         int getAlignment(), da la justificación actual del objeto.
·         String getText() , da el texto incluido en el label. void setAlignment(int alignment), cambia la justificación de la Label con alignment.
·       void setText(String text), ajusta el texto de la Label.


Además existe el método AccessibleContext getAccessibleContext(), que veremos cuando analicemos los contenedores. Realmente la Label es un contenedor de texto. Label viene de la siguiente jerarquía:
http://www.htmlpoint.com/guidajava/21.gif

Por lo tanto hereda los métodos de Object y los de java.awt.Component. Todos los componentes GUI se heredan de Component, por lo tanto, al final de la panorámica de los GUI hablaremos de Component que incluye métodos muy útiles para sus gestión. Por ejemplo, métodos para ajustar y obtener informaciones sobre tamaño, colores del fondo, colores del texto, bordes, etc… del componente.
A parte los métodos de Component, estamos listos para utilizar las Label en nuestos programas. Por ahora no pongo ningún ejemplo sobre el uso de las Label porque las veremos en el siguiente párrafo cuando hablemos de los botones. El paquete swing pone a disposición una clase parecida llamada JLabel que es una extensión de Label, y que, a su vez, pone a disposición una amplia gama de funciones añadidas. Por ejemplo, es posible crear JLabel que tengan tanto un texto como una imagen

8.    Métodos asociados a la clase TextField
Para agregar un campo de texto (TextField) a  un applet, nos fijamos en la especificación de esta clase de objetos en la API (que está en la documentación que bajo para la instalación de Java). Aquí encontramos un  ejemplo que se usa para crear cuatro campos de texto con diferenctes especificaciones:
TextField tf1, tf2, tf3, tf4; 
   //  campo de texto  en blanco 
tf1  = new TextField(); 
  // campo blanco de 20 columnas
tf2  = new TextField("", 20); 
  //campo con texto predefinido 
tf3  = new TextField("Hello!"); 
  //texto predefinido en 30 columnas 
tf4  = new TextField("Hello", 30);

También se puede hacer así
//  campo de texto  en blanco 
TextField  tf1  = new TextField(); 
     // campo de texto  blanco de 20 columnas
TextField  tf2  = new TextField("", 20); 
    //con texto predefinido 
TextField tf3   = new TextField("Hello!"); 
     // con texto predefinido en 30 columnas  
TextField  tf4  = new TextField("Hello", 30);

El operador  new obtiene espacio de almacenamiento al momento de la compilación. Aquí  las variables tf1, tf2,tf3,tf4 sonreferencias   a objetos de la clase (o tipo) "TextField". Las variables tf1, tf2, tf3  y  tf4 son refrencias  a una posición de memoria creada con el contructor new.
Ahora queremos  poner esto en el cuerpo de un applet. 
import java.awt.*;
import java.applet.*;

public class CampoTexto extends Applet
{
 
 // declaración e inicialización de
  // las variables "globales"  tfi's                                       
   TextField  tf1  =
 new TextField();                     
   TextField  tf2  =
 new TextField("", 20);               
   TextField  tf3  =
 new TextField("Hello!");
   TextField  tf4  =
 new TextField("Hello", 30);


     public void init( )
    {
       add(tf1);
       add(tf2);
       add(tf3);
       add(tf4);
    }

}//


miércoles, 4 de agosto de 2010

CONCEPTOS BÁSICOS POO

POO:
 Es un método de programación muy parecido a la forma en que nosotros hacemos  cosas. Es una evolucion natural de las innovaciones mas recientes en el diseño de los lenguajes de programación.
 La POO es mas estructurada que las tentativas previas de la programación estructurada; y es mas modular y abstracta que los intentos previos de abstraccion de datos y ocultamieto de detalles. La programación orientada a objetos se caracteriza por las siguientes propiedades: Objetos, Clases, Encapsulacion, Herencia, y polimorfismo. Un programa orientado a objetos esta formado por una colección de objetos interaccionando conjuntamente para representar y solucionar algun problema.


Objetos:
Son entes, entidades, sujetos o cosas que encontramos en el dominio del problema de nuestra realidad. Entiéndase; en situaciones o problemas de nuestro mundo cotidiano empresarial, organizacional o institucional, que se requiere manejar o solucionar mediante la computadora. 
 Partes del objeto:
 Atributos: Representan su estructura , describen su forma o apariencia.
 Métodos: Métodos que manipulan los datos para hacer la entrada, proceso y salida de los                        mismos. 


Herencia:
Podemos utilizar el mecanismo de herencia, mediante un proceso de abstracción en el que definimos un objeto mas abstracto que contenga lo que es común a los demás objetos, para que, a partir de ese, derivar a los otros objetos mediante el mecanismo de herencia.


Polimorfismo: 
Significa muchas formas, y es justamente eso; una forma de dar a un método un nombre que es compartido hacia arriba y hacia abajo en la jerarquía del objeto, donde cada objeto de la jerarquía implementa el método  en forma apropiada a el mismo.  


UML:
El uml (Lenguaje Unificado De Modelado) es una herramienta que permite a los creadores de sistemas generar diseños que capturen sus ideas en una forma convencional y facil de comprender para comunicarlas a otras personas.  



Encapsulamiento:
es la propiedad que permite asegurar que el contenido de la informacion de un objeto esta oculta al mundo exterior; el objeto A no conoce lo que hace el objeto B, y viceversa, en esencia, es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus caracteristicas esenciales.



Cohesión:
La coheson es una extencion del cocepto de ocultamiento de la informacion dicho de otro modo, la cohesion describe la naturaleza de las interacciones dentro de un modulo software. Este criterio sugiere que un sistema bien modularizado es aquel en el cual los interfaces de los modulos son claros y simples.


Acoplamiento:
el acoplamiento es una medida del grado de interdependencia entre modulos, es decir, el modo en que un modulo esta siendo afectado por la estructura interna de otro modulo. El grado de acoplamiento se puede utilizar para evaluar la calidad de un diseño de sistema



Paso De Mensajes:
Los objetos se comunican entre si a travez del uso de mensajes, el interfaz del mensaje se define un interfaz claro entre el objeto y el resto de su entorno.
Esencialmente, el protocolo de un mensaje implica dos partes; el emisor y el receptor cuando un objeto emisor envia un mensaje a un objeto receptor, tiene que especificar lo siguiente:

1.Un receptor
2.Un nombre de mensaje
3.Argumentos o parametros




El lenguaje de programación
Es el medio a través del cual le comunicamos a la computadora la secuencia de instrucciones que debe ejecutar para llevar a cabo actividades,tareas o solución de problemas. Todo lenguaje permite el manejo de los tres elementos que componen un programa; estructuras de datos, operaciones primitivas elementales y estructuras de control.


JDK:
JDK( Java Developer's Kit) es la herramienta basica para empezar a desarroñar aplicaciojes on applets en java, esta herramienta consiste, basicamente, en un compilador y un interprete(JVM) para la linea de comandos.


Maquina Virtual:
Es la entidad que proporciona la independecia de plataforma para los programas Java "compilados" en byte-code.


Tipos De Datos(Java):
Java dispone de ocho tipos primitivos de variables: un tipo para almacenar valores true y false (boolean); un tipo para almacenar caracteres (char), y 6 tipos para guardar valores numéricos, cuatro tipos para enteros (byte, short, int y long) y dos para valores reales de punto flotante (float y double).



Java:

Java es un lenguaje de desarrollo de propósito general, y como tal es
válido para realizar todo tipo de aplicaciones profesionales.
 Incluye una combinación de características que lo hacen único y está siendo adoptado por
multitud de fabricantes como herramienta básica para el desarrollo de
aplicaciones comerciales de gran repercusión.



[1]  Lopez Román Leobardo. Metodología de la programación orientada a objetos.