Sunteți pe pagina 1din 195

Creación de aplicaciones con

Java
Introducción
Introducción
• Desarrollo de microprocesadores contribuyeron
• Desarrollo del computador personal
• Dispositivos electrónicos inteligentes
• Sun Microsystems
• 1991 creación de proyecto Green que dio como resultado un lenguaje basado
en C++-
• James Gosling lo llamo Oak y luego paso a llamarse Java.
• Anticipado a la época de la popularidad de los dispositivos inteligentes.
Introducción
• 1993 World Wide Web exploto en popularidad y se vio el potencial de usar Java
para agregar contenido dinámico como interactividad y animaciones en paginas
web.

• 1995 Sun anuncia formalmente Java a la industria y gana la atencion de los


interesados en el WWW
• 2009 Oracle compra Sun Microsystems

• Java se utiliza para:


• Desarrollo de grandes aplicaciones empresariales
• Desarrollo de soluciones web
• Proveer aplicaciones para dispositivos clients (ej., telefonos celulares, PDAs, etc.)
• Muchos otros propósitos
Introducción
Plataforma
Introducción
Características de Java
• Multiplataforma
– Los programas se compilan en un bytecode independiente de la máquina y existen entornos
de ejecución de aplicaciones JAVA para casi todos los SO.
• Seguro
– Forzar restricciones sobre las operaciones permitidas
• Applets no acceden directamente al hardware de la PC
– Antes de ejecutar se verifican los bytecodes de la aplicación
Introducción
Características de Java
• Cuenta con bibliotecas estándar
– Manejo de colecciones
– Acceso a datos
• JDBC
– Interfaces gráficas
• AWT/JFC/Swing
– Redes de ordenadores
• RMI, Jini
– Aplicaciones distribuidas
• EJB
– Interfaces web
• Servlets/JSP
– Manejo de hilos
– Compresión de datos
– Criptografía
Introducción
Características de Java
• Gestión automática de memoria
• Comprobación estricta de tipos
• Sintaxis simplificada con respecto a C++
– No se manejan punteros explícitamente, aunque todo es puntero en la orientación a objetos.
– No hay que mantener archivos de encabezados aparte
– No existen macros (#define) por ser propensas a errores
– No hay que crear makefiles (archivos de dependencias)
Introducción
Especificación de Java
• Los lenguajes de computadora tienen reglas estrictas de uso (sintaxis).
• Si no se las cumple el programa no es capaz de ser ejecutado por un computador (no
compila)
• Se define una especificación del lenguaje para prevenir que este pierda su
estándar.
• El estándar Java fue definido por Sun Microsystems y está definido por la especificación de
lenguaje y su API.

• Definición técnica de el lenguaje


• Sintaxis
• Semantica

Sun Microsystem: Creador de JAVA


API: Application Programming Interface
Introducción
API de JAVA
• Contiene las librerías para desarrollar programas JAVA
• Clases and interfaces predefinidas

• Es estable, pero aún se están creando nuevos componentes.


• Ultimas versiones del API en el sitio Web de Sun Java (java.sun.com).
Introducción
Java Development toolKit (JDK)
• Java salió al mercado en 1995.
• En Diciembre de 1998, Sun anunció la plataforma Java 2.
• Existen 3 ediciones del API de JAVA 2
• Java 2 Standard Edition (J2SE): desarrollo de aplicaciones clientes y applets.
• Java 2 Enterprise Edition (J2EE): desarrollo de aplicaciones servidor (Java servlets, JSP)
• Java 2 Micro Edition (J2ME): desarrollo de aplicaciones para dispositivos móviles (celulares, smart phones, PDAs)
• La última versión estable del API J2SE con su JDK es la versión 6.0
• En 2011, Sun anuncia la plataforma Java 7
• Java 7 es la actualización que implementa la actual tecnología Java.
• http://download.oracle.com/javase/7/docs/
• EL JDK es el framework de JAVA.
• Compuesto por herramientas (programas) para desarrollar y hacer testing de aplicaciones JAVA
• Programas en línea de comando.
Introducción
Java 7 – Componentes de tecnología
Introducción
Qué instalar?
• JDK: (Java Development Kit)
• Para desarrolladores.
• Incluye el JRE mas herramientas de desarrollo, depuración y monitoreo de
aplicaciones Java.
• Server JRE: (Server Java Runtime Environment)
• Para despliegue de aplicaciones Java en un servidor
• Incluye herramientas para monitoreo de la JVM, herramientas requeridas
para aplicaciones de servidor
• No incluye integración con el navegador ni actualizaciones automáticas
• JRE: (Java Runtime Environment)
• Contiene todo lo necesario para ejecutar aplicaciones Java sobre un sistema
Introducción
Configurar ambiente de desarrollo

• Instalar Java Standard Edition Development Kit

• Establecer la variable de entorno PATH

• Establecer la variable de entorno CLASSPAHT


• Exception in thread "main" java.lang.NoClassDefFoundError: YourClass
Introducción
Integrated Development Environment (IDE)
• Herramientas que proveen una interface gráfica para un rápido desarrollo de
programas:
• Editar
• Compilar
• Generar
• Depurar
• Ayuda (en línea)
Introducción
Integrated Development Environment (IDE)
• Herramientas de desarrollo JAVA más utilizadas:
• Jbuilder de Borland (http://www.borland.com/)
• NetBeans Open Source de Sun (http://www.netbeans.org/)
• Eclipse Open Source de IBM (http://www.eclipse.org/)

• Other useful tools are:


• TextPad Editor (http://www.textpad.com/)
• JCreator LE (http://www.jcreator.com/)
• JEdit (http://www.jedit.org/)
• JGrasp (http://www.jgrasp.org/)
• BlueJ (http://www.bluej.org/)
• DrJava (http://drjava.sourceforge.net/)
Introducción
Elementos de la plataforma de desarrollo
Introducción
La máquina virtual (JVM)

• En el proceso de compilación, el compilador JAVA (javac.exe) genera un


código independiente de la plataforma, código bytecode
• Bytecode es una especie de lenguaje de máquina de una máquina virtual
Introducción
La máquina virtual (JVM)

• En el proceso de ejecución, la Java Virtual Machine (java.exe) realiza una


compilación Just In Time
• Compila el Bytecode para generar el código de máquina según la arquitectura y
sistema operativo sobre el cual se encuentra.
Introducción
Creación y ejecución de aplicaciones
Creación de aplicaciones con
Java
Programación Orientada a Objetos
Clases y Objetos
La programación orientada a objetos
• ¿Por qué Orientación a Objetos (OO)?
• Se parece más al mundo real
• Permite representar modelos complejos
• Muy apropiada para aplicaciones de negocios
• Las nuevas plataformas de desarrollo la han adoptado (Java / .NET)
El modelo Orientado a Objetos
• Objetos
• Clases
• Envío de mensajes
• Herencia
Pilares de la Orientación a Objetos
¿Qué es un Objeto?
• Informalmente, un objeto representa una entidad del mundo real
• Entidades Físicas
• (Ej.: Vehículo, Casa, Producto)
• Entidades Conceptuales
• (Ej.: Proceso Químico, Transacción Bancaria)
• Entidades de Software
• (Ej.: Lista Enlazada, Interfaz Gráfica)
¿Qué es un Objeto?
• Definición Formal (Rumbaugh):
• “Un objeto es un concepto, abstracción o cosa con un significado y límites
claros en el problema en cuestión”
• Un objeto posee (Booch):
• Estado
• Comportamiento
• Identidad
¿QUÉ ES UN OBJETO?
• Un objeto es un conjunto de variables (o datos) y métodos (o
funciones) relacionados entre sí.

• Modelan entidades del mundo real.

• Es la representación en un programa de un concepto, y contiene toda


la información necesaria para abstraerlo:
• Datos que describen sus atributos
• Operaciones que pueden realizarse sobre los atributos
¿QUÉ ES UN OBJETO?
• Representación visual de un objeto

• Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) están expresados por las
variables y los métodos que componen el objeto respectivamente.

• En programación orientada a objetos, un objeto particular se denomina una instancia.


Un objeto posee Estado
• Lo que el objeto sabe
• El estado de un objeto es una de las posibles condiciones en que el
objeto puede existir
• El estado normalmente cambia en el transcurso del tiempo
• El estado de un objeto es implementado por un conjunto de
propiedades (atributos), además de las conexiones que puede tener
con otros objetos
Un objeto posee Comportamiento
• Lo que el objeto puede hacer
• El comportamiento de un objeto determina cómo éste actúa y
reacciona frente a las peticiones de otros objetos
• Es modelado por un conjunto de mensajes a los que el objeto puede
responder (operaciones que puede realizar)
• Se implementa mediante métodos
Ejemplo de qué es un objeto
• ¿Qué tendría un elemento que modele un carro?
• Tendría variables que indicarían el estado actual del carro:
• La velocidad es 70 km/h
• 2 Km recorridos
• Marcha actual es la 3ª

• Estas variables corresponden a las de un carro en particular


• Se conocen como variables de instancia o variables miembro
Ejemplo de qué es un objeto
• El objeto carro podría tener métodos:
• Acelerar
• Frenar
• Cambiar de velocidad

• Estos métodos afectan a una instancia u objeto carro en particular


• Se denominan métodos de instancia o métodos miembro
Modelamiento de un carro como objeto

• Atributos:
• Velocidad frenar
• Recorrido
velocidad
• Marcha acelerar recorrido
marcha
• Métodos:
• Acelerar cambiar
• Frenar Velocidad
• Cambiar velocidad
El modelo Orientado a Objetos
• Esta representación del objeto muestra las variables miembro en el núcleo
o centro del objeto y los métodos rodeando el núcleo y protegiéndolo de
otros objetos del programa.

• Encapsulación: Acción de empaquetar o proteger las variables miembro con los


métodos miembro se denomina.

• Java permite establecer 4 niveles de protección de las variables y de las funciones


miembro.

• Los niveles de protección determinan a que variables o métodos se pueden acceder


y a través de quien.
El modelo Orientado a Objetos
• Ventajas de encapsular
• Capacidad de crear módulos
• El código fuente de un objeto puede escribirse y mantenerse independiente del código
fuente del resto de los objetos.
• Reutilización de objetos
• Protección de información
• Un objeto tendrá una interfaz pública perfectamente definida que otros objetos podrán
usar para comunicarse con él.
• No necesitamos entender cómo funcionan los métodos
¿QUÉ ES UNA CLASE?
• En el mundo real existen varios objetos de un mismo tipo, o de una
misma clase.
• Mi bicicleta es una de las tantas bicicletas que existen en el mundo.
• Acorde a la terminología de la programación orientada a objetos, mi bicicleta
es una instancia de la clase de objetos conocida como bicicletas.

• Todas las bicicletas tienen algunos estados o atributos y métodos en


común:
• Atributos: color, marcha actual, cadencia actual, dos ruedas
• Métodos: cambiar de marcha, frenar
• Una bicicleta podrá ser azul, y otra roja, pero ambas en común tienen una
variable llamada “color”.
¿QUÉ ES UNA CLASE?
• Podemos definir una plantilla de variables y métodos para todas las bicicletas del
ejemplo.

• Las plantillas para crear objetos son denominadas clases.

• Una clase es una plantilla que define las variables y los métodos que
son comunes para todos los objetos de un cierto tipo.
Ejemplos de objetos de la clase carro

frenar

velocidad
acelerar Recorrido
marcha

Velocidad: 100 Km/h cambiar Velocidad: 90 Km/h


Recorrido: 5000 Km Velocidad Recorrido: 10000 Km
Marcha: 5 Marcha: 4
JAVA
Tipos de datos
• Los atributos de una clase estan representados por variables.

• Las variables se declaran mediante un tipo de dato.

• Es la especificación de un dominio (rango de valores) y de un


conjunto válido de operaciones a los que normalmente los
traductores asocian un esquema de representación interna propio.
JAVA
Tipos de datos
• El lenguaje Java define 8 tipos de datos primitivos
• Datos de tipos numericos
• Números enteros: byte, short, int, long
JAVA
Tipos de datos
• Datos de tipos numericos
• Número con punto flotante: float, double
JAVA
Tipos de datos
• Datos de tipo caracter
• Char

• Datos de tipo lógico


• boolean
JAVA
Tipos de datos
• Operadores aritméticos
JAVA
Tipos de datos
• Caracteres especiales (secuencias de escape)
JAVA
Tipos de datos
• Operadores lógicos
Creación de aplicaciones con
Java
Arreglos
Arreglos
Definición
• Estructuras de datos que consisten de datos relaciones de el mismo
tipo.

• Mantienen la misma longitud una vez creados.

• Es un grupo de variables (elementos o componentes) que contienen


valores , todos del mismo tipo ya sean primitivos o de referencia.
Arreglos
Definición
• Todos los elementos de un arreglo tiene el mismo nombre pero se
acceden a cada uno de ellos por el índice de la posición que ocupan

• Son objetos y por lo tanto se pasan por referencia

• Sinónimos:
• Vector
• Tabla
• Matriz
Arreglos
Definición
Arreglos
Clasificación
• Unidimensionales o vectores
• Almacenar datos indicando un índice.
• Ej.: num[i];

• Bidimensionales o matrices
• Almacenar datos en forma de una matriz.
• Acceder a cada posición de un elemento mediante 2 índices.
• Ejm: m[i][j].

• Multidimensionales
• Arreglos que tienen más de dos dimensiones.
• Por cada dimensión del arreglo se tiene que utilizar un índice para ubicar
exactamente a un elemento en particular.
Arreglos
• Son objetos que ocupan espacio en memoria por lo cual son creados por la
palabra clave new

• Crear un arreglo
• Especificar el tipo de dato del arreglo
• El numero de elementos que formaran parte de el

• int c[] = new int[ 12 ];

• int c[]; // declara la variable


• c = new int[ 12 ]; // crear el arreglo y asignarle memoria
Arreglos
• El nombre de una variable seguida de corchetes indica que la variable
es un arreglo

• Cuando un arreglo se crea, cada elemento del arreglo recibe el valor


nulo por defecto
• Cero para valores numéricos
• False para elementos booleanos
• Null para elementos por referencia (tipos no primitivos).
Arreglos
• String b[] = new String[ 100 ], x[] = new String[ 27 ];

• String b[] = new String[ 100 ]; // create array b


• String x[] = new String[ 27 ]; // create array x

• double[] array1, array2;


Arreglos
Creando e inicializando arreglos

int n[] = { 10, 20, 30, 40, 50 };


Arreglos
Valores almacenados en un arreglo
Arreglos
Valores almacenados en un arreglo
Arreglos
Suma de valores almacenados en un arreglo
Arreglos
Gráficos de barras para mostrar datos de un
arreglo
Arreglos
Arreglos
Carta
Arreglos
Mazo de Cartas
Arreglos
Mazo de Cartas
Arreglos
Mazo de Cartas
Arreglos
Mazo de Cartas
Arreglos
Mazo de Cartas
Sentencia for (for-each)
Arreglos
Paso de parámetros
Arreglos
Paso de parámetros
Arreglos multidimensionales

int b[][] = { { 1, 2 }, { 3, 4 } }; int b[][] = new int[ 3 ][ 4 ];

int b[][] = new int[ 2 ][ ]; // create 2 rows


int b[][] = { { 1, 2 }, { 3, 4, 5 } }; b[ 0 ] = new int[ 5 ]; // create 5 columns for row 0
b[ 1 ] = new int[ 3 ]; // create 3 columns for row 1
Arreglos multidimensionales
Arreglos multidimensionales
Arreglos multidimensionales
Arreglos multidimensionales
Arreglos multidimensionales
Arreglos multidimensionales
Arreglos multidimensionales
Creación de aplicaciones con
Java
Programación Orientada a Objetos
Herencia
Fundamentos
• La herencia es una forma de reutilizar el software

• Es una forma de abstracción que consiste en crear una nueva clase en base a otra
así agrupamos clases similares y a la vez mantenemos sus diferencias.
• Absorbiendo los miembros
• Creando y modificando nuevas habilidades

• La clase a partir de la cual se crea la nueva clase se conoce como superclase o


clase padre.

• La nueva clase creada a partir de la superclase se conoce como subclase o clase


hijo.
• Una subclase puede ser la superclase de otra clase.
Fundamentos
• Las subclases pueden definir sus propios miembros (atributos y métodos)

• Una subclase representa un grupo de objetos mas especializados que los de la


clase padre.

• Una clase puede heredar directa o indirectamente de una superclase


• Todas las clases en Java heredan de Object
• Todas las clases solo pueden heredar o extender directamente de una superclase
Relación de herencia
• Identificamos herencia cuando tenemos una relación del tipo “es un”
• Un objeto de la subclase puede ser tratado como un objeto de la superclase
• Un carro es un vehículo
• Un profesor y un estudiante es una persona

• Es diferente a la relación de composición que esta representada por la relación “tiene un”
• Un objeto contiene referencia a otros objetos
• Un jugador tiene una mano de fichas
• La bolsa de fichas en el scrubble tiene 100 fichas
Relación de herencia
• Superclase (general): Cuadrilátero
• Subclases (específico): Cuadrado, Rectángulo, Rombo, etc.

• Superclase (general): Persona


• Subclases (específico): Estudiante, Profesor, Administrativo

• Superclase (general): Vehículo


• Subclases (específico): Terrestre, Aéreos, Fluviales

• Superclase (general): Terrestre


• Una subclase puede ser una superclase de otra

• Subclases (específico): Carro, Camión, Bicicleta


Relación de herencia
Vehiculo

Terrestre Aereo Fluvial

Carro Camion Avion Avioneta Buque Canoa

* La herencia se representa en una estructura jerárquica.


Herencia
Herencia
• La herencia en Java está dada por la palabra clave “Extends”
Herencia
Herencia
Interfaces
• Las interfaces nos siven para especificar lo que una clase debe hacer
pero no como lo hace.

• Las interfaces no pueden ser instanciadas


• No tienen variables de instancia y los métodos no tienen cuerpo, similar a los
métodos abstractos de una clase

• Cualquier cantidad de clases puede implementar una interface


• Una clase puede implementas cualquier número de interfaces
Interfaces
• Las interfaces están diseñadas para admitir la resolución dinámica de
métodos durante la ejecución sin necesidad de realizarse entre clases
relacionadas por herencia.

• Es posible que clases de diferentes tipos implementen la misma


interface aún cuando no estén relacionadas entre sí por la herencia.
Definición de una interfaz
• El acceso de la interfaz deber ser public o default (sin modificador)
• Si se declaran atributos en la interfaz, estos son implícitamente final y
static y deben ser inicializados.
• Los atributos y métodos se declaran sin modificador de acceso
• De métodos solo se especifica su prototipo mas no su implementación.
Ejemplo de definición de una interfaz
Uso de una interfaz
• Cuando una clase utiliza una interfaz decimos que dicha clase
implementa la interfaz y utilizamos la palabra clave implements

• Una clase que implementa una interfaz debe definir todos los
métodos declarados en la interfaz

• Si una clase implementa una interfaz y no define todos sus métodos


esta debe ser declarada como abstracta.
Uso de una interfaz
Uso de una interfaz
• Cualquier instancia de una clase que implemente una interfaz puede
ser referenciada por una variable del tipo de la interfaz
• La variable de tipo interfaz solo tendrá acceso a los miembros del objeto que
se encuentre definidos en la interfaz y no al resto de elementos definidos
dentro de la clase.

• No se pueden crear objetos a partir de una interfaz


Uso de una interfaz
Uso de una interfaz
Uso de una interfaz
• Podemos tener herencia y a la vez implementar interfaces dentro de
una clase.
Clases internas (inner clases)
• Que hacer si se desea usar una clases adaptador pero ya heredamos de
una clase?

• Por ejemplo, si creamos una clase de tipo ventana, es decir nuestra clase
hereda de la clase Jframe y queremos manejar eventos dentro de la misma
clase, como usamos un WindowAdapter si no se puede heredar de varias
clases a la vez?
• La multiple herencia en Java no se permite

• Una solución es definir una clase interna (inner class)


• Crear una clase dentro de la subclase de JFrame que herede de un adaptador
(WindowsAdapter, MouseAdapter, etc,)
Clases internas (inner clases)

Una clase definida (Clase


interna) dentro de otra clase
Clases Anónimas internas
(anonymous inner clases)
• Son clases internas en las cuales no se especifica el nombre

• Las clases anónimas internas pueden hacer el codigo mas facil de leer
porque la clase se define donde es referenciada

• Se debe tener muy en cuenta el rendimiento de la aplicacion en base


a la cantidad de clases cargadas
• Mientras mas clases hay que cargar las aplicaciones demoran mas en
ejecutarse.
Clases internas (inner clases)

Una clase interna sin nombre


Creación de aplicaciones con
Java
Componentes Gráficos (GUI)
Interfaces graficas (GUI)
• GUI mecanismo amigable para interactuar con una aplicación
Interfaces graficas (GUI)

• Aplicaciones basadas en ventanas usan cuadros de diálogos para


interactuar con el usuario

• Clase JOptionPane proporciona una interface de entrada y salida


• Paquete javax.swing
• Invocación a métodos estáticos (métodos de clase)
Interfaces graficas (GUI)
JOptionPane
Tipo Icono Descripción
ERROR_MESSAGE Un cuadro de dialogo que indica un error al
usuario.
INFORMATION_MESSAGE Un cuadro de dialogo informativo para el usuario.
WARNING_MESSAGE Un cuadro de dialogo para mostrar una potencial
problema al usuario.
QUESTION_MESSAGE Un cuadro de dialogo que muestra una pregunta
para el usuario.
PLAIN_MESSAGE Sin icono Un cuadro de dialogo con un mensaje pero sin
icono.
Interfaces graficas (GUI)
Componentes Swing
• Clases del paquete java.swing
• Componentes para construir interfaces graficas Java
• Componentes parte de Java Foundation Classes (JFC)
• Librerías para desarrollo de aplicaciones graficas inter-plataforma

• Abstract Window Toolkit anterior a Swing


• Paquete java.awt
Interfaces graficas (GUI)
Componentes Swing
Componente Descripción
JLabel Muestra un texto no editable o icono
JTextField Habilita una entrada de usuario desde el teclado. Usado también para mistrar texto
editable o no editable
JButton Lanza un evento cuando se da clic con el mouse
JCheckBox Especifica una opción que puede ser seleccionada o no
JComboBox Provee una lista desplegable de ítems de los cuales el usuario puede seleccionar uno
dando clic o escribiendo dentro del control
JList Provee una lista de ítems de los cuales el usuario puede seleccionar uno dándole clic.
Multiples elementos pueden ser seleccionados
JPanel Provee un are en la cual los componentes puedes ser ubicados y organizados. Puede ser
usado como un área para dibujar.
Interfaces graficas (GUI)
Componentes Swing
Interfaces graficas (GUI)
Componente JLabel
Interfaces graficas (GUI)
Componente JLabel
Interfaces graficas (GUI)
Componente JTextField, JPasswordField
Interfaces graficas (GUI)
Componente JTextField, JPasswordField
Interfaces graficas (GUI)
Eventos comunes e listeners
Interfaces graficas (GUI)
Eventos comunes e listeners
Interfaces graficas (GUI)
Manejadores de eventos
Interfaces graficas (GUI)
Componente JButton
Interfaces graficas (GUI)
Componente JButton
Interfaces graficas (GUI)
Componente JCheckBox
Interfaces graficas (GUI)
Componente JRadioButton
Interfaces graficas (GUI)
Componente JRadioButton
Interfaces graficas (GUI)
Componente JComboBox
Interfaces graficas (GUI)
Componente JList
Interfaces graficas (GUI)
Componente Jlist – Multiple selección
Interfaces graficas (GUI)
Manejador de eventos del mouse – MouseListener
Métodos de la interface Descripción
public void mousePressed( MouseEvent event ) Se invoca cuando el botón del mouse es presionado
dentro de un componente
public void mouseClicked( MouseEvent event ) Se invoca cuando se presiona y se suelta el botón del
mouse y este no esta en movimiento dentro del
componente
public void mouseReleased( MouseEvent event ) Se invoca luego de soltar el botón del mouse. Lo
precede mousePressed o mouse dragged
public void mouseEntered( MouseEvent event ) Cuando el mouse entra a los limites de un componente
public void mouseExited( MouseEvent event ) Cuando el mouse sale de los limites de un componente
Interfaces graficas (GUI)
Manejador de eventos del mouse – MouseMotionListener
Métodos de la interface Descripción
public void mouseDragged( MouseEvent event ) Invocado mientras el botón del mouse esta sobre un
componente y el mouse esta en movimiento mientras
el botón esta presionado. Siempre esta precedido por
la llamada a mousePressed
public void mouseMoved( MouseEvent event ) Invocado cuando el mouse se mueve sobre un
componente.
Interfaces graficas (GUI)
Manejador de eventos del mouse
Interfaces graficas (GUI)
Manejador de eventos del mouse - Adaptadores
Adaptador de eventos Interface implementada
ComponentAdapter ComponentListener
ContainerAdapter ContainerListener
FocusAdapter FocusListener
KeyAdapter KeyListener
MouseAdapter MouseListener
MouseMotionAdapter MouseMotionListener
WindowAdapter WindowListener
Interfaces graficas (GUI)
Manejador de eventos del mouse
Dibujando sobre un JPanel con el mouse
Interfaces graficas (GUI)
Manejador de eventos del teclado
Interfaces graficas (GUI)
Componente JTextArea
Manejo de archivos
Manejo de archivos
• Almacenamiento de datos en variables y arreglos es temporal

• Persistencia de datos mediante archivos

• Stream se refiere a datos leídos desde un archivo o escritos en un


archivo

• Procesamiento de archivos (java.io)


• Archivos de texto
• Serializacion de objetos
Manejo de archivos
Files y Streams
• Archivos son flujos (Stream) secuenciales de bytes
• El Sistema Operativo le indica cuando ha alcanzado el fin de archivo.

• Byte-based streams
• Streams usados para entrada y salidas de bytes

• Character-based streams
• Streams usados para entrada y salida de caracteres
Manejo de archivos
Files y Streams
• Java asocia streams con diferentes dispositivos
• System.in
• Para capturar datos a partir de la entrada estándar - teclado
• System.out
• Para mostrar datos a través de la salida estándar - pantalla
• System.error
• Para mostrar mensajes de error en la pantalla

• System
• setIn, setOut, setErr
Manejo de archivos
Files y Streams
• Java.io contiene el conjunto de clases para procesar archivos
• FileInputStream
• Lectura de archivos binarios
• Extiende de la clase InputStream
• FileOutputStream
• Escritura de archivos binarios
• Extiende de la clase OutputStream
• FileReader
• Lectura de archivos texto
• Extiende de la case Reader
• FileWriter
• Escritura de archivos texto
• Extiende de la clase Writer
Clase File
• Usada para recuperar informacion acerca de archivos y directorios
• No abre ni procesa archivos
• Se usa en combinación con clases que procesan archivos

• public File ( String nombre)


• public File ( String ruta, String nombre)
• public File ( File directorio, String nombre)
• public File (URI uri)
Clase File
Método Descripción
boolean canRead() Retorna verdadero si un archivo puede ser leído por la aplicación sino
retorna falso
boolean canWrite() Retorna verdadero si un archivo puede ser escrito por la aplicación; caso
contario, retorna falso
boolean exists() Retorna verdadero si el nombre especificado como argumento del
constructor es un directorio o archivo en la ruta especificada; caso contario,
retorna falso
boolean isFile() Retorna verdadero si el nombre especificado como argumento en el
constructor es un archivo; caso contario, retorna falso
boolean isDirectory() Retorna verdadero si el nombre especificado como argumento del
constructor es un directorio; caso contario, retorna falso
Clase File
Método Descripción
boolean isAbsolute() Retorna verdadero si el argumento indicado en el constructor corresponde a
una ruta absoluta de un directorio o archivo; caso contario, retorna falso
String getAbsolutePath() Retorna la ruta absoluta del archivo o directorio
String getName() Retorna el nombre del archivo o directorio
String getPath() Retorna la ruta del archivo o directorio
String getParent() Retorna el directorio padre de un archivo o un directorio
long length() Retona la longitud de el archivo en bytes. Si es un directorio retorna 0
long lastModified() Retorna una representación de tiempo de la ultima modificación hecha en el
archivo o directorio
String[] list() Retorna un arrecho de cadenas de caracteres que representan el contenido
de un directorio. Retorna null si el objeto es un archivo
Clase File
Clase File
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
Archivos de texto – Lectura secuencial
JTable
JTable
Constructores
• JTable(Object[][] rowData, Object[] columnNames)
• JTable(Vector rowData, Vector columnNames)
• JTable table = new JTable(new MyTableModel());
JTable
Agregar a un contenedor
• JScrollPane scrollPane = new JScrollPane(table);
• table.setFillsViewportHeight(true);

• container.setLayout(new BorderLayout());
• container.add(table.getTableHeader(), BorderLayout.PAGE_START);
• container.add(table, BorderLayout.CENTER);
JTable
Selección
Operación Evento de mouse Evento de teclado
Selección de una sola fila Clic Flecha Arriba o Flecha Abajo
Selección de múltiples filas SHIFT + Clic o arrastrar mouse SHIFT + Flecha Arriba o SHIFT +
continuas sobre las filas Flecha abajo
Agregar una fila a las ya CTRL + Clic CTRL + Flecha Arriba o CTRL +
seleccionadas Flecha Abajo

• ListSelectionModel:
• MULTIPLE_INTERVAL_SELECTION
• SINGLE_INTERVAL_SELECTION
• SINGLE_SELECTION.
• Selección
• Fila (rowSelectionAllowed )
• Columna (columnSelectionAllowed )
• Celda (cellSelectionEnabled)
JTable
Selección
JTable
Cambios en datos
JTable
Cambios en datos
Method Change
fireTableCellUpdated Update of specified cell.
fireTableRowsUpdated Update of specified rows
Update of entire table
fireTableDataChanged
(data only).
fireTableRowsInserted New rows inserted.
fireTableRowsDeleted Existing rows Deleted
fireTableStructureChang Invalidate entire table,
ed both data and structure.
Hilos
Introducción
• Un proceso es un programa ejecutándose dentro de su propio espacio de
direcciones.

• Un hilo es una secuencia de código en ejecución dentro del contexto de un


proceso.

• Ejecución de actividades en paralelo (concurrentemente)

• Java permite pone a disposición la creación de procesos concurrentes a través del


lenguaje y su API
• Aplicaciones con diferentes hilos de ejecución (multi-hilo o multithreading)
• Programación concurrente
• Sincronización
Hilos
Ciclo de vida
Hilos
Creación y ejecución
• Clases Thread
• Clase responsable de producir hilos funcionales para otras clases
• La clase debe heredar de Thread
• En el método run se define el cuerpo del hilo

• Interface Runnable
• Proporciona la capacidad de añadir la funcionalidad de un hilo a una clase, sin
heredar de la clase Thread.
• El método a implementar en la interface es el método run
Hilos
Creación y ejecución
• Clase ThreadGroup
• Usada para manejar un grupo de hilos de modo conjunto.
• métodos stop, suspend y resume
• Los grupos de hilos también pueden contener otros grupos de hilos permitiendo una
jerarquía anidada de hilos. Los hilos individuales tienen acceso al grupo pero no al
padre del grupo.

• Clase Object
• No es una clase de apoyo a los hilos pero proporciona métodos cruciales dentro de la
arquitectura multihilo de Java.
• wait: El hilo de ejecución espere en estado dormido hasta que se le notifique que
continúe
• notify: Informa a un hilo en espera de que continúe con su ejecución
• notifyAll: Igual que notify pero se aplica a todos los hilos en espera.
Hilos
Creación y ejecución
Hilos
Creación y ejecución
CONEXIÓN A BASES DE
DATOS MYSQL
MySQL 5.0 Community Edition
MySQL Connector/J
• Base de datos open-source database

• Usado en algunas plataformas


• Windows, Solaris, Linux, and Macintosh. Complete

• Lo podemos descargar desde www.mysql.com.


MySQL
Creando una nueva cuenta de usuario
• Ingresar a la cuenta de administrador “root”
MySQL
Creando una nueva cuenta de usuario
• Seleccionar la base de datos que contiene la información de administración
• Cuentas de usuarios y sus privilegios

• Crear el usuario “java” con clave de acceso “java”, otorgar los permisos y salir
MySQL
Creando base de datos
• Ingresar con el usuario “java”

• Crear la base de datos con el script:


https://www.dropbox.com/s/9iongjmn867daa8/books.sql?dl=0
Usando base de datos con JDBC
Conexión y consulta
Usando base de datos con JDBC
Conexión y consulta
Usando base de datos con JDBC
Conexión y consulta
Usando base de datos con JDBC
Conexión y consulta
Usando base de datos con JDBC
Conexión y consulta
RDBMS Formato de conexión
MySQL jdbc:mysql://hostname:portNumber/databaseName
ORACLE jdbc:oracle:thin:@hostname:portNumber:databaseName
DB2 jdbc:db2:hostname:portNumber/databaseName
Java DB/Apache jdbc:derby:dataBaseName (embedded)
jdbc:derby://hostname:portNumber/databaseName (network)
Microsoft SQL Server jdbc:sqlserver://hostname:portNumber;databaseName=dataBaseName
Sybase jdbc:sybase:Tds:hostname:portNumber/databaseName
Usando base de datos con JDBC
Conexión y consulta
Constante de tipo de ResultSet Descripción
TYPE_FORWARD_ONLY Especifica que el cursor del ResultSet puede moverse solo hacia
adelante, desde la primera fila hasta la ultima.
TYPE_SCROLL_INSENSITIVE Especifica que el cursor del ResultSet puede navegar hacia adelante o
atrás y que los cambios realizados durante su procesamiento no se
reflejan a menos que se consulte la base de datos nuevamente.
TYPE_SCROLL_SENSITIVE Especifica que el cursor del ResultSet puede navegar hacia adelante o
atrás y que los cambios realizados durante su procesamiento se reflejan
inmediatamente en el ResultSet.
Usando base de datos con JDBC
Conexión y consulta
Constante de concurrecia de Descripción
ResultSet

CONCUR_READ_ONLY Especifica que el cursor del ResultSet no puede ser actualizado

CONCUR_UPDATABLE Especifica que el ResultSet puede ser actualizado y su contenido


reflejarse en la base de datos invocando a su método update.
Usando base de datos con JDBC
Conexión y consulta
Usando base de datos con JDBC
Interface RowSet
• Dos tipos de objetos: conectado y desconectado

• Esquema conectado
• Se conecta una sola vez y asi permanece hasta que la aplicación termina la conexión
• javax.sql.rowset.JdbcRowSet
• Esquema desconectado
• Se conecta a la base de datos, ejecuta una consulta para recuperar datos y se
desconecta.
• Datos modificados se pueden actualizar en la base de datos restableciendo la
conexión con la base de datos.
• javax.sql.rowset.CachedRowSet
Usando base de datos con JDBC
Interface RowSet
Usando base de datos con JDBC
Usando base de datos con JDBC
Usando base de datos con JDBC
Usando base de datos con JDBC
Java Persistence API (JPA)
• API de persistencia desarrollada para la plataforma Java EE
• Framework para manejar datos relacionales en aplicaciones (J2SE y J2EE)

• Persistencia en este contexto cubre tres áreas:


• Definida en el paquete javax.persistence
• Lenguaje de consulta Java Persistence Query Language (JPQL).
• Metadatos objeto/relacional.

• Objetivos
• Evitar la perdida de las ventajas de la orientación a objetos al interactuar con una
base de datos
• Permitir usar objetos regulares (conocidos como POJOs).
Java Persistence API (JPA)
• Java soluciona problemas de negocio a través de objetos

• Bases de datos relacionales almacenan la información mediante tablas, filas, y


columnas

• Almacenar un objeto es realizar una correlación entre el sistema orientado a


objetos de Java y el sistema relacional de nuestra base de datos.

• JPA es una abstracción sobre JDBC


• Correlación de forma sencilla, conversión entre objetos y las tablas
• ORM (Object Relational Mapping - Mapeo Relacional de Objetos)
• Puede configurarse a través de metadatos (xml o anotaciones).
• Entidades: Objetos creados a partir de tablas .
Java Persistence API (JPA)
• Establece una interface común que es implementada por un
proveedor de persistencia
• Hibernate,
• Eclipse Link

• El proveedor realiza el trabajo, pero siempre funcionando bajo el API


de JPA
Java Persistence API (JPA)
Entity
• Entidades suelen ser POJOs.
• Plain Old Java Objects

• Anotacion @Entity
• Información para el proveedor de
persistencia
• Cada instancia de esta clase es una entidad.

• Toda entidad debe:


• Tener un constructor por defecto
• Ser una clase de primer nivel (no interna)
• No ser final
• Implementar la interface java.io.Serializabe
Java Persistence API
Configuración de mapeo (metadatos)
• Archivo de configuración XML
• No es necesario recompilar el código para cambiar la
configuración de mapeo

• Exige mantener un archivo externo


• Anotaciones
• Código Java y sus instrucciones de comportamiento

• Recompilación cada vez que deseamos cambiar el


comportamiento del mapeo

• Código menos portable (otra aplicación no-JPA que use


nuestras entidades deberá incluir todas las librerías JPA
en su classpath para poder compilar correctamente).
• Configuración XML prevalece sobre las anotaciones
• Si el descriptor XML establece unos atributos para una
propiedad que también ha sido configurada mediante
anotaciones, serán los primeros los que el proveedor
de persistencia tenga en cuenta.
Java Persistence API
Identidad
• Toda entidad debe poseer una identidad
• Propiedad marcada con la anotación @Id
• Un tipo que admita valores null
• Ej. Integer en lugar de int.
• Existen formas más complejas de
identidad
• @EmbeddedId
• @IdClass

• La identidad de una entidad puede ser


gestionada por el proveedor de
persistencia
• Añadir a la propiedad de identidad la
anotación @GeneratedValue.
Java Persistence API
Configuración por defecto
• JPA aplica a las entidades que maneja una
configuración por defecto

• Una entidad es funcional con una mínima


cantidad de información
• Anotaciones @Entity y @Id

• Todas las entidades del tipo Pelicula serán


mapeadas a una tabla de la base de datos
llamada PELICULA

• Cada una de sus propiedades será mapeada a


una columna con el mismo nombre
• La propiedad id será mapeada en la columna ID,
etc.
Reportes
iReport

S-ar putea să vă placă și