Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Edition
Java
11000110
Producto.java
Producto.class
Intrprete
Ligero
Aplicacin
Producto.class
Plataforma Java
Garbage Collection
Tecnologas Java
Java Platform SE
OBJETOS
Programacin Orientada a
objetos
Objetos
Un objeto puede caracterizar una
entidad fsica (coche) o abstracta
(ecuacin matemtica)
Objeto = unidad atmica que
encapsula estado y comportamiento
Clase
Clases y Objetos
Clase
Objetos
{
//propiedades
//mtodos
}
-----------------------------------------------Donde mbito: public, final, abstract
Tipos de clase
abstract :
Una clase abstract tiene al menos un mtodo abstracto.
Una clase abstracta no se instancia, sino que se utiliza
como clase base para la herencia.
final :
Una clase final se declara como la clase que termina una
cadena de herencia. No se puede heredar de una clase
final. Por ejemplo, la clase Math es una clase final.
public:
Las clases public son accesibles desde otras clases, bien
sea directamente o por herencia. Son accesibles dentro
del mismo paquete en el que se han declarado. Para
acceder desde otros paquetes, primero tienen que ser
importadas.
Definicin de propiedades,
variables
Tipo nombre_propiedad;
Tipo nombre_variable;
Donde tipo:
Tipo
Description
byte
short
int
long
-9223372036854775808 to
9223372036854775807 , 8 bytes (64 bits) in
memory
Tipo
Descripcion
float
double
Otros tipos
Conversin de tipos
//podemos asignarle un
//ERROR
Conversin explcita:
tipos primitivos perdiendo informacin
long l = 223456723456;
int i = (int)l;
Operadores
Relacionales
Lgicos
&& , || , !
Precedencia de Operadores
Constructores
Objetos en Java
.
NombreClase objeto;
Objeto = new NombreClase();
..
.
Mtodos
Tipo_de_retorno nombreMtodo(tipo1 param1, tipo2
param2, )
{
..
.
return resultado; // no se pone si no retorna nada
}
Donde:
- Tipo_de retorno: int, String, boolean,
- Si no retorna nada entonces Tipo_de_Retorno es void
Paquetes
private
protected
public
(package,
default)
la propia clase
subclase en el
mismo paquete
otras clases en el
mismo paquete
subclases en otros
paquetes
otras clases en
otros paquetes
Sobrecarga de Mtodos
Static, final
Sentencias de Control
HERENCIA
Herencia
Vehculo
Veihculo Terrestre
Coche
Camin
Vehculo Areo
Avin
Helicptero
Herencia
Una subclase hereda de su superclase mtodos y
variables tanto de clase como de instancia.
Una subclase puede aadir nuevos mtodos y variables.
Una subclase puede redefinir mtodos heredados.
Sintaxis:
class nombreHija extends nombrePadre {}
Por defecto toda clase extiende la clase Object
class Contador {}
class Contador extends Object {}
Herencia
Herencia simple
Object es la clase raz (paquete java.lang)
Object describe las propiedades comunes a todos los objetos
Object
A
B
C
Terminologa:
- C y D son subclases de B
- B es la superclase de C y D
Definicin en Java
Ejemplo
public class ContadorColoreado extends Contador {
//nueva variable de instancia
private String color ;
Llamada al
constructor del
padre
public ContadorColoreado(){
super();
setColor(transparente);
}
public ContadorColoreado(int v, int s, String c) {
super(v,s);
Object
setColor(c);
}
Contador
...
}
ContadorColoreado
Overwriting - Redefinicin
Ejemplo redefinicin
Aade atributos
Redefine mtodos
super
Ejemplo:
public class Punto{
//(x,y)
public void borrar(){}
}
public class Pixel extends Punto{
Ejemplo super
class Uno {
public int test(){return 1;}
public int result1(){return this.test();}
}
class Dos extends Uno{
public int test(){return 2;}
}
class Tres extends Dos{
public int result2(){return this.result1();}
public int result3(){return super.test();}
}
class Cuatro extends Tres{
public int test(){return 4;}
}
Uno
Dos
Tres
Cuatro
private
protected
public
(packagedefault)
la propia clase
subclase en el
mismo paquete
otras clases en el
mismo paquete
subclases en otros
paquetes
otras clases en
otros paquetes
INTERFACES
Clases: Encapsulacin
Clases: Encapsulacin
Private
Public
Protected
Class Movil
{ private int numero;
public int getNumero()
{
return this.numero;
}
public void setNumero(int num)
{
this.numero=num;
}
}
Interfaces
Implementando la Interface
Notas - Interfaces
Clases abstractas
Mtodos abstractos:
slo cuentan con la declaracin y no poseen
cuerpo de definicin
la implementacin es especfica de cada
subclase
Ejemplos
}
...
PATRONES DE DISEO
BASE
Agenda
Estructurales
Factory Method
Singleton
Abstract Factory
Adapter
Facade
Composite
Comportamiento
Command
State
Observer
Qu es un patrn de
diseo?
Por qu usarlos?
Mejora en la comunicacin y
documentacin
Singleton
Problema:
Singleton
Factory Method
Factory Method
Abstract Factory
COLECCIONES
Colecciones en Java
Colecciones Interfaces
- interface Collection
- clases ArrayList, LinkedList,
HashSet, TreeSet
- interface Map
- clases TreeMap, HashMap
- Iteratores: interfaz Iterator
Jerarqua de colecciones
devuelve
Iterator
devuelve
Collection
Map
devuelve
ListIterator
List
Set
AbstractCollection
AbstractList
TreeMap
AbstractMap
HashMap
AbstractSet
HashSet
ArrayList
SortedSet
SortedMap
AbstractSequentialList
LinkedList
TreeSet
extends
implements
interface
class
Interface Collection
(1/2)
- Collection
-
int size()
boolean empty()
boolean contains(Object elem)
Iterator iterator()
Object[] toArray(), Object[] toArray(Object dest[])
boolean add(Object elem),
boolean remove(Object elem)
void clear()
Interface Map
-
Map
- Un objeto que asocia claves con valores.
- No puede tener claves duplicadas.
Object put(Object key, Object value);
Object remove(Object key); Object get(Object key);
containsKey, containsValue, isEmpty, size
- Proporciona tres vistas de coleccin: coleccin de claves
(keySet), coleccin de valores (values), coleccin de
asociaciones clave-valor (entrySet).
Interface Collection
(2/2)
Object
Iteracin
interface Iterator{
boolean hasNext();
/* Devuelve true si la iteracin tiene mas elementos */
Object next();
/* Devuelve el siguiente elemento de la iteracin
Lanza excepcin NoSuchElementException */
void remove();
/* Elimina el ltimo elemento devuelto por la iteracin
Est capacitado para decir que no lo implementa
UnsupportedOperationException */
}
La interfaz ListIterator extiende a Iterator y maneja un objeto
List ordenado. Permite iterar hacia delante y hacia atrs.
Ejemplo de uso de
Iteradores
GENERICS
Clases genricas
class Cosa<T> {
T nombre;
public Cosa(T nombre) {
this.nombre = nombre;
}
public void setNombre(T nombre) {
this.nombre = nombre;
}
public T getNombre() {
return nombre;
}
}
Mtodos genricos
class Bicho {
public <T> T getBicho(T aBicho) {
return aBicho;
}
public <T> void doBicho(T aBicho) {
T bicho2 = aBicho;
()
}
public static <T> T getBicho(T aBicho){
return aBicho;
}
}
Polimorfismo paramtrico:
Generics
Ejemplo
Antes:
Animal perro = new Animal();
List granja = new ArrayList();
granja.add(perro);
Animal a = (Animal)granja.get(0);
granja.add(hola);
Animal a = (Animal)granja.get(1); // ERROR !!!
Despus:
Animal perro = new Animal();
List<Animal> granja = new ArrayList<Animal>();
granja.add(perro);
Animal a = granja.get(0); // SIN CASTING
granja.add(hola);
// ERROR !!!
Simplemente te ahorra
castings ?
NUEVAS
CARACTERSTICAS
DEL LENGUAJE
Collection Interfaces
Collection Clases
AutoBoxing
Enumerados
Enumerados
public enum Palo {OROS, COPAS, ESPADAS, BASTOS}
class Naipes{
private final int numero;
private final Palo palo;
Naipes(int numero,Palo palo) {
this.numero=numero;
this.palo=palo;
}
}
public class App {
public static void main(String[] args) {
Naipes q =new Naipes(1, Naipes.Palo.OROS);
for( Naipes.Palo palo:Naipes.Palo.values() )
System.out.println(palo);
}
}
Varios Argumentos de un
Mtodo
}
public static void main(String[] args) {
mostrar(1,2,"Hola"); // * Autoboxing
EXCEPCIONES
Excepcin
Ejecucin normal
Con ocurrencia de
excepcin
-
hijo
+padre
Anidamiento
rbol de Excepciones
Tipos
Class Name
ArithmeticException
IndexOutOfBoundsExce
ption
NegativeArraySizeExcep
tion
NullPointerException
ArrayStoreException
ClassCastException
You've tried to cast an object to an invalid type - the object isn't of the
class specified, nor is it a subclass, or a superclass, of the class
specified.
IllegalArgumentExceptio
n
SecurityException
IllegalMonitor
StateException
A thread has tried to wait on the monitor for an object that the thread
doesn't own. (We'll look into threads in Chapter 11).
Propias Excepciones
Lanzando Excepciones
double myMethod() throws IOException,
FileNotFoundException
{ // codigo
}
Otra forma:
try {
// Cdigo que genera un excepcin aritmtica
} catch(ArithmeticException e)
{
// proceso de la excepcin
throw e; // Relanza la exception al programa que lo
llama
}
NETWORKING
IP Addresses
Encapsular y direccionar
Lleva a cabo consultas de nombre
(convirtiendo un nombre de host a IP)
Hace reversas (direcciones a nombre)
java.net.InetAddress
InetAddress getLocalHost()
Algunos mtodos:
String getHostName()
String getHostAddress()
InetAddress getLocalHost()
InetAddress[] getAllByName(String
hostName)
Socket
java.net.ServerSocket
java.net.ServerSocke
Construction:
Socket accept()
void close()
java.net.Socket
java.net.Socket
InputSteam getInputStream()
OutputStream getOutputStream()
Funcionamiento
Client (sid)
s = new Socket
(Carl, 80)
Server (fred)
2037
80
2037
1583
ServerSocket ss.
s = ss.accept()
Socket s
s.getInputStream()2037
s.getOuputStream()
1583 s.getInputStream()
s.getOuputStream(
TCP server
(UnknownHostException uhe) {
Very unlikely to occur
(IOException ioe) {
May occur if the client misbehaves?
TCP client
public static void main(String[] args)
{
try {
InetAddress server = InetAddress.getByName(args[0]);
Socket connection =
new Socket(server, AGREED_PORT_NUMBER);
makeRequestToServer(connection);
getReplyFromServer(connection);
connection.close();
}
catch (UnknownHostException uhe) {
// arg[0] is not a valid server name or IP address
}
catch (IOException ioe) {
// The connection to the server failed somehow:
// the server might have crashed mid sentence?
}
}
THREADS
Definicin
Concurrency Models I
Fibres
thread library
Operating System
Process
RUNNABLE
NEW
running
not
running
TERMINATED
BLOCKED/
WAITING/
TIMED_WAITING
RUNNABLE
NEW
start()
running
not
running
TERMINATED
BLOCKED/
WAITING/
TIMED_WAITING
start()
running
not
running
TERMINATED
BLOCKED/
WAITING/
TIMED_WAITING
start()
running
not
running
BLOCKED/
WAITING/
TIMED_WAITING
time elapsed
I/O done
notify()
TERMINATED
start()
running
not
running
run() method
returns
TERMINATED
BLOCKED/
WAITING/
TIMED_WAITING
time elapsed
I/O done
notify()
Non-Existing
create thread object
destroy
New
start
Executable
wait, join
notify, notifyAll
thread termination
destroy
run method
exits
Blocked
destroy
Dead
garbage collected
and finalization
Non-Existing
El thread es creado
Hasta este punto el thread no es ejecutado Java
llama a este punto el estado new state
Una vez que el mtodo startes llamado, el thread
llega a ser elegible para la ejecucin segn la
agenda.
Si el thread llama al mtodo wait desde su
objeto, o al mtodo join desde otro objeto, el
thread se bloquea es decri se pone en un estado
blocked y no ser elegible par ala ejecucin.
Este llegar a ser ejecuable cuando otro thread le
notifique travz de su mtodo notify, o si el thread
que estuvo en join, llega a dead.
Ejemplo: Thread
public class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
try {
sleep((long)(Math.random() * 1000));
} catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}
Sincronizacin
Daemon Threads
// DEPRECATED
Un Thread Termina:
Executor
Es similar a la llamada:
nuevo Thread (aRunnableObject). start ();
Se usa as:
Executor proceso = Factoria_mtodo;
exector.execute (aRunnable);
Executors, pool
La interface Callable
Java.util.concurrent.Callable La nueva
interfaz es mucho nejor que la Runnable,
supera dos inconvenientes de Runnable. El
mtodo run no puede retornar un
resultado pues solo retorna void y no
puede lanzar una checked exception.
public class MyCallable implements Callable<T>{
public T call() throws Exception {
return data;
}
}
JAVA SWING
Objetivos de la sesin
Mtodos Generales
y
x
alto
ancho
setVisible(boolean b);
Contenedores
Object
Component
Container
Jcomponent
JPanel
Window
...
add(Component comp);
remove(Component alto);
setLayout(LayoutManager mrg);
Componente emisor de
Eventos
Acci
n
Evento
Respuesta
componente.addTipoListener(implementacionDelObjetoListener);
Activando e implementando un
listener
public interface ActionListener
{
void actionPerformed(ActionEvent e)
}
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
..
}
}
);
Activando e implementando un
listener
public interface MouseListener
void
mouseClicked(MouseEvent e)
void
mouseEntered(MouseEvent e)
void
mouseExited(MouseEvent e)
void
mousePressed(MouseEvent e)
void
mouseReleased(MouseEvent e)
jButton1.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
.
}
}
);
Acciones (eventos) Vs
Interfaces Listener
Accin que genera un
evento
Tipo de Interfaces
Listener
ActionListener
WindowListener
MouseListener
MouseMotionListener
ComponentListener
FocusListener
ListSelectionListener
UIManager.getCrossPlatformLookAndFeelClassName()
Retorna un string para un look-and-feel garantizado a trabajar .
UIManager.getSystemLookAndFeelClassName()
Pa la plataforma por defecto. Sobre Windows ser Windows
Look & Feel. Sobre Mac OS ser Mac OS Look & Feel, etc..
"javax.swing.plaf.metal.MetalLookAndFeel"
Propio de Java Look & Feel.
"com.sun.java.swing.plaf.windows.WindowsLookAndFee
l"
ParaWindows Look & Feel solo para Windows.
"com.sun.java.swing.plaf.motif.MotifLookAndFeel"
ParaCDE/Motif Look & Feel. Para cualquier plataforma
"javax.swing.plaf.mac.MacLookAndFeel"
Especifica Mac OS Look & Feel, solo puede ser usado para Mac
OS.
COMPONENTES
SWING
JOptionPane
JOptionPane
JOptionPane.showConfirmDialog();
JOptionPane.showMessageDialog();
JOptionPane.showOptionDialog)();
JOptionPane.showInputDialog();
Elementos..
JOptionPane
JOptionPane.showMessageDialog( this,
"El mensaje!",
"Ttulo",
JOptionPane.INFORMATION_MESSAGE
);
this , si es
invocado de
un container
JButton
Propiedades de JButton
JLabel
Propiedades deJLabel
JList
JComboBox
ListSelectionListener
JCheckBox
JRadioButton
JCheckBox
JTable
JDBC
JDBC
Drivers
Driver Categories
Driver Category
All Java
Network Connection
1. JDBCODBC Bridge
No
Direct
No
Direct
3. JDBC-Net
Indirect (Security)
Yes
Direct
Connection con=null;
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection( "jdbc:myDriver:wombat",
"myLogin", "myPassword");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM
Table1");
while (rs.next())
{
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
System.out.println(x, s, f);
}
con.setAutoCommit(false);
PreparedStatement updateSales =
con.prepareStatement( "UPDATE COFFEES SET SALES = ?
WHERE COF_NAME = ?"); updateSales.setInt(1, 50);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate();
PreparedStatement updateTotal =
con.prepareStatement( "UPDATE COFFEES SET TOTAL =
TOTAL + ? WHERE COF_NAME = ?");
updateTotal.setInt(1, 50);
updateTotal.setString(2, "Colombian");
updateTotal.executeUpdate();
con.commit();
con.setAutoCommit(true);
Problemas de Integridad
Niveles de aislamiento
Integridad en Tx
con.setTransactionIsolation(TRANSACTION_READ_UNCOMMITTE
D);
Vlido para toda la sesin
TRANSACTION_NONE
TRANSACTION_READ_UNCOMMITTED (1)
TRANSACTION_READ_COMMITTED (2)
Previene los dirty reads, lee datos que han sido modificados con commit.
no controla los phantom rows y non-repeatable read.
TRANSACTION_REPEATABLE_READ (4)
TRANSACTION_SERIALIZABLE (8)
Evolucin de las
versiones JSE
Evolucin de las
versiones JSE
No oficiales:
NIO2
Java Module System.
Java Kernel.
Nueva API para el manejo de Das y Fechas, la cual
reemplazara las antiguas clases Date y Calendar.
Posibilidad de operar con clases BigDecimal usando
operandos.