Apuntes s3

También podría gustarte

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

Semana 3

Programación
Avanzada

Unidad 4
EVENTOS
Unidad 5
COMPONENTES Y
LIBRERÍAS

Material compilado con fines académicos, se prohíbe su reproducción total o parcial sin
la autorización de cada autor.
4. EVENTOS
La programación dirigida por eventos es un paradigma de programación en el que
tanto la estructura como la ejecución de los programas van determinados por los
sucesos que ocurran en el sistema, definidos por el usuario o por lo que ellos mismos
provoquen.

4.1. Tipos de eventos

En un programa, un evento contiene algunas acciones que deben llevarse a cabo


cuando se desencadena el evento (Normark, 2010).

• Eventos de bajo nivel: Representan entradas o interacciones de bajo


nivel con elementos de la interfaz gráfica (cambio de tamaño, cambio del
foco, operación con el ratón o con el teclado).

• Eventos semánticos: Son eventos de alto nivel que encapsulan la se-


mántica del modelo de componentes de la interfaz de usuario (hacer una
acción, un cambio de estado en un elemento, etc.).

2
4.2. Generación y propagación de eventos

Un evento es generado por una clase publicadora y notificado a un conjunto


de objetos de clases clientes o suscriptoras.

Los requisitos para el uso de eventos son:

1. Una fuente genera un evento y lo envía a uno o más oyentes o auditores


que se encuentran simplemente esperando hasta que se recibe el evento
y, al ser recibido, lo procesan y lo devuelven.
2. Una fuente consiste en un objeto que genera un evento. Esto ocurre
al cambiar de alguna manera el estado interno del objeto. Las fuentes
pueden generar más de un tipo de eventos.
3. Una fuente debe ir acompañada de auditores, para que estos reciban
las notificaciones sobre el tipo específico de evento, cada tipo de evento
tiene su propio método de registro.
4. Un auditor corresponde a un objeto que es notificado cuando ocurre un
evento. Tiene dos funciones principales:
- Tiene que ser registrado o ir acompañado por una o más fuentes
para recibir notificaciones acerca de los tipos específicos de eventos.
- Tiene que implementar métodos para recibir y procesar notificacio-
nes.

3
4.3. Métodos de control de eventos

• Button: Genera eventos de acción (ActionEvent) cuando se presiona el


botón.
• Checkbox: Genera eventos de elementos (ItemEvent) cuando se selec-
ciona o deselecciona un checkbox.
• Choice: Genera eventos de elementos cuando se cambia de opción choi-
ce.
• List: Genera eventos de acción cuando se hace doble click sobre un
elemento, genera eventos de elemento cuando se selecciona o dese-
lecciona un elemento.
• Menu Item: Genera eventos de acción cuando se selecciona un elemen-
to de menú; genera eventos del elemento cuando se selecciona o se
deselecciona un elemento de un menú de opciones.
• Scrollbar: Genera eventos de ajuste (AdjustmentEvent) cuando se ma-
nipula el scrollbar.
• Text components: Genera eventos de texto (TextEvent) cuando el usuario
introduce un carácter.
• Window: Genera eventos de ventana (WindowEvent) cuando una ven-
tana se activa, se cierra, se desactiva, se minimiza, se maximiza, se abre
o se sale de ella.

4.4. Creación de eventos

Ejemplo: Un banco desea enviar una notificación a sus clientes cuando se modifique
el saldo de su cuenta.

• Datos de la cuenta bancaria:


o Cuenta (string)
o Cliente (string)
o Saldo (double)
• Métodos
o Constructor()
o Depositar()
o Retirar()

Cuando se realiza una operación (depósito o retiro) de una cuenta bancaria, esta
clase genera un evento.

4
Para ello, la clase define un arreglo y su evento:

• CambiarSaldoEventHandler: Delegado con tres parámetros (cuenta,


cliente y saldo).
• CambioSaldo: Evento que se crea cuando se modifica el saldo de la
cuenta.

- Definiciones del delegado y el evento:

- Generación del evento al depositar:

5. COMPONENTES Y LIBRERÍAS

Primero, es importante comenzar indicado que una interfaz gráfica de usuario es la


parte del programa que permite que éste interactúe con el usuario, es decir, es la
“cara” que ve el usuario al utilizar algún programa. Por lo anterior, es el aspecto más
importante de cualquier aplicación, pues si esta interfaz no es fácil de entender por
el usuario, esto impedirá que puedan sacar el máximo provecho del programa.

5
5.1. Definición conceptual de componentes, paquetes/librerías

Componente:

Un componente consiste en un elemento básico de una interfaz gráfica. Estos


elementos permiten al usuario interactuar con la aplicación y proveer información
desde el programa al usuario acerca del estado actual de la aplicación. Algunos
componentes pueden ser: botones, barras de desplazamiento, etiquetas, listas, cajas
de selección o campos de texto, entre otros.

Los componentes no se encuentran aislados, están agrupados dentro de


contenedores, en los que se organiza la situación de los componentes. Estos
contenedores pueden ser considerados también componentes debido a que pueden
ser situados dentro de otros contenedores.

Paquetes:

Los paquetes, en programación, consisten en una forma de organizar clases, ya sea


por finalidad, por su relación con la herencia que tienen, entre otras.

Librerías:

A partir del crecimiento de un desarrollo de software, surge la necesidad de reutilizar


ciertos componentes que ya han sido creados, así como dar cierta estructura para
mantener la organización del código. Esta organización se realiza a partir de librerías.

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

Swing es un grupo de componentes visuales que pertenecen al lenguaje de


programación Java. Son ligeros e independientes de la plataforma.

Los componentes visuales de Swing son:

• Componentes de alto nivel


• Contenedores de componentes
• Componentes de menú
• Componentes de texto
• Componentes complejos
• Controles atómicos

6
5.3. Uso de librerías proporcionadas por el lenguaje

Los paquetes y librerías más utilizadas en Java son:

- java.lang: Contiene clases esenciales para uso del lenguaje Java y es el


único paquete que se importa automáticamente.
- java.io: Soporta flujos de entrada y salida java.
- java.net: Soporta elementos de red como URL, sockets TCP, sockets UDP,
direcciones IP, conversiones binarias a texto.
- java.util: Compuesto por diversas utilidades entre ellos, conjunto de bits,
enumeración, contenedores genéricos, vectores, tablas hash, fecha, hora,
generación de números aleatorios, propiedades del sistema.
- java.awt: Proporciona un Kit de Herramientas de Ventana Abstracta (en in-
glés, AWT), para la programación de Interfaz Gráfica de Usuario (en inglés
GUI), dibujos de gráficos e imágenes, además de eventos, colores, tipo de
letra, botones, campos de texto, entre otros.
- javax.swing: Paquete que permite mejorar el AWT, proporcionando un con-
junto de componentes que se ejecutan uniformemente en todas las plata-
formas.
- java.sql: En conjunto con el paquete javax.sql, permite la conexión a bases
de datos, el envío de sentencias SQL y la interpretación de los resultados

7
de consulta.
- java.sound.midi: Paquete con clases e interfaces que permite la captura,
procesamiento y reproducción de música.
- java.math: Se realizan cálculos matemáticos.
- java.applet: Permite la generación de applets a través de la clase applet,
proporciona interfaces que conectan una applet a un entorno web y realiza
la reproducción de audio.

5.4. Creación de componentes (visuales y no visuales)

definidos por el usuario

Netbeans es el IDE oficial para Java, el cual proporciona excelentes funcionalida-


des para desarrollo visual, al realizar de una manera simple la implementación de
botones, ventanas, campos de textos, etc. Para poder realizar tal desarrollo,
Netbeans debe tener componentes visuales y no visuales (Oracle, Java Platform,
Class Container, 2018).

Un componente es considerado visual cuando tiene una representación gráfica en


tiempo de diseño y ejecución (botones, ventanas, barras de scroll, cuadros de texto,
etc.), y se considera no visual en el caso opuesto (formato de diseño de los paneles,
cuadro de dialogo no visibles).

Los componentes visuales de Netbeans es posible observarlos al crear un JFrame.


En la siguiente imagen se presenta una ventana de diseño en Netbeans.

8
En la parte superior derecha se observa la paleta de controles, en la que se
encuentran diferentes clases de objetos como Swing Containers y Swing Controls.

Algunos componentes no visuales se encuentran en la librería javax.swing.Box.Filler.


Dichos componentes son utilizados para diseñar en el espacio del JFrame.

Ambos tipos de componentes, los visuales y no visuales de NetBeans, son


indispensables en la creación y diseño de programas. Si bien algunos de estos
componentes comparten propiedades, cuando se piensa en desarrollar una
aplicación, es importante elegir el componente que tenga las propiedades que se
adapten a las necesidades del programa.

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

Los paquetes representan el mecanismo a través de los cuales Java agrupa clases,
interfaces, excepciones y constantes. De esta manera, se agrupan conjuntos de
estructuras de datos y de clases con algún tipo de relación en común.

Con la finalidad de reutilizar y facilitar el uso de los paquetes desarrollados, es


conveniente que las clases e interfaces contenidas en los mismos tengan relación
funcional. De esta manera, para los desarrolladores será más fácil ubicar lo que se
encuentra dentro de un paquete.

Creación de un paquete

1. Declaración

En la declaración de un paquete se utiliza la sentencia package, seguida del nombre


del paquete que se esté creando:

o package NombrePaquete;

La estructura que deberá seguir un fichero fuente en Java es:

• Una única sentencia de paquete (opcional).


• Las sentencias de importación deseadas (opcional).
• La declaración de una, y solo una, clase pública (public).
• Las clases opcionales del paquete.

La sentencia de declaración de paquete ha de ser la primera en un archivo fuente


en Java.

2. Nomenclatura

Para reutilizar fácilmente los nombres de paquetes es conveniente asignarles


nombres únicos. Esta tarea puede ser realmente tediosa, especialmente cuando
se trata de una gran empresa y totalmente imposible dentro de la comunidad de
internet.

10
3. Subpaquetes

Cada paquete puede a su vez tener paquetes con contenidos parecidos, de tal
manera que un programador busque estrategias en la organización de sus
paquetes usando jerarquía. Para ello, se definen a los subpaquetes. En la creación de
subpaquetes se almacenan el paquete hijo en un directorio paquete/subpaquete.

El JDK define una variable de entorno nombrada como CLASSPATH, que administra
las rutas en las que el JDK busca los subpaquetes. El directorio actual suele estar
incluido en la variable de entorno CLASSPATH.

Uso de un paquete

Con la intención de importar paquetes ya desarrollados, se hace uso de la sentencia


import, seguida del nombre de paquete o paquetes a importar. Es posible importar
todos los elementos de un paquete o sólo algunos.

Para importar todas las clases e interfaces de un paquete se utiliza el metacaracter *:

o import PaquetePrueba.*;

También puede existir la importación de algunas de las clases de un cierto paquete


o subpaquete.

o import Paquete.Subpaquete1Subpaquete.Clase1;

Para acceder a los elementos de un paquete no se necesita explícitamente el


paquete en el que aparecen, sino que basta con referenciar el elemento tras una
especificación completa de la ruta de paquetes y subpaquetes en donde se
encuentra.

o Paquete.Subpaquetes1.Subpaquetes2.Clase_o_Interfaz.elemento

En la API de Java se incluye un grupo de paquetes desarrollados que pueden


incluirse en cualquier aplicación Java que se desarrolle.

11
Bibliografía consultada:

• Normark, K. (2010). Object-oriented Programming in C#. Denmark: Department of Computer


Science, Alborg.

• Oracle. (2018). Java Platform, Class Container. Obtenido de: https://docs.oracle.com/javase/7/


docs/api/java/awt/Container.html

• Oracle. (2018). Java Platform, Class JComponent. Obtenido de: https://docs.oracle.com/


javase/7/docs/api/javax/swing/JComponent.html

12

También podría gustarte