0% encontró este documento útil (0 votos)
100 vistas

Curso JAVA I

Este documento presenta un curso de introducción a Java. Explica los conceptos básicos de programación orientada a objetos en Java, la sintaxis del lenguaje, clases, herencia, interfaces, excepciones y streams. También describe libros y recursos en línea relacionados con el aprendizaje de Java.

Cargado por

Admin Lbm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
100 vistas

Curso JAVA I

Este documento presenta un curso de introducción a Java. Explica los conceptos básicos de programación orientada a objetos en Java, la sintaxis del lenguaje, clases, herencia, interfaces, excepciones y streams. También describe libros y recursos en línea relacionados con el aprendizaje de Java.

Cargado por

Admin Lbm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 81

Curso

Curso de
de JAVA
JAVA
Agosto
Agosto2012
2012
Introducción

Clases Web Curso


•Trasparencias •Información
•Ejemplos •Recursos WWW
•Yo hablando •Código ejemplos
•Vosotros preguntando •Libros
•Tutoriales
•Programas
Libros
•Thinking in Java Lista de correo
(2nd Edition)
•Sugerencias
•Aprenda Java como si
•Dudas y preguntas
estuviera en primero
•Otros.
Programas
•JDK 1.2.2
•Editor
Introducción: Libros

Aprenda Java como si estuviera en primero


•Castellano
•ETSII Navarra (SS)
•Sencillo y claro

Thinking in Java
•Inglés
•Introducción avanzada
Introducción: Web del curso
Introducción: Listas de correo

www.elprisma.com
www.programacion.com
www.java.sun.com

•Dudas
•Sugerencias
•Problemas

[email protected]
Índice del curso

Programación en Java Tecnologías Java I


Introducción Applets
Sintaxis Beans
Objetos JDBC
Documentación Servlets
JSP Java Server Pages
Programación avanzada
Excepciones Tecnologías Java II:
I/O Streams Aplicaciones Distribuidas
Threads Introducción
JNI Java Native Interface RMI Remote Method Invocation
Programación en red CORBA Java IDL
EJB Enterprise Java Beans
Programación UI
Introducción
AWT Abstract Window Toolkit
Swing Java Foundation Classes
Programación en Java

Objetos
Introduccion •Conceptos básicos
•Historia Java •Variables miembro
•Programación Orientada a Objetos •Variables finales
•Java y la Industria. Tecnologías •Métodos
•Herramientas de desarrollo •Clases y métodos finales
JDK Java Development Kit •Clases internas
RAD’s: Jbuilder, Java •Transformaciones (Casting)
Workshop… •Paquetes
•Herencia
Sintaxis •Interfaces y clases abstractas
•Permisos de acceso
•Variables
•Polimorfismo
•Operadores
•Estructuras de programación Documentación
•Filosofía
•Javadoc
Introducción: Historia Java

•1991: Sun Microsystems diseña un lenguaje diseñado para sistemas


embebidos,(set-top-boxes), electrodomésticos.
•Lenguaje sencillo, pequeño, neutro.
•Ninguna empresa muestra interés por el lenguaje
•1995: Java se introduce en Internet, lenguaje muy apropiado
•Netscape 2.0 introduce la primera JVM en un navegador WWW
(Máquina virtual Java)
•Filosofía Java: “Write once, run everywhere”
•1997: Aparece Java 1.1. Muchas mejoras respecto a 1.0
•1998: Java 1.2 (Java 2). Plataforma muy madura
•Apoyado por grandes empresas: IBM, Oracle, Inprise, Hewtlett-
Packard, Netscape, Sun
•1999: Java Enterprise Edition. Java comienza a ser una plataforma
de desarrollo profesional.
Introducción: Programación
Orientada a objetos
•Rapidez desarrollo
Directores proyecto •Menores costes
•Mantenimiento sencillo

•Modelado rápido
Diseñadores y analistas •Diseño claro

•Elegancia
Programadores •Claridad
•Reutilización código
•...

Inconvenientes •Curva de aprendizaje


Introducción: Programación
Orientada a objetos II

Características
•Encapsulación: CONTROL DE ACCESO
•Herencia: REUTILIZACIÓN DE CODIGO
•Polimorfismo: MODELADO JERARQUIZADO

Lenguajes
•SmallTalk: Curva de aprendizaje dificil
•C++: No hay librerías estándar, gestión de memoria

Java •OOP puro


•Sencillo
•No hay gestión de memoria (Garbage Collector)
•Librerías estándar
•Multiplataforma
Introducción: Plataforma java
Introducción: Java: Tecnologías
JNI
Programación UI
Programación
AWT Swing
java.*

JavaBeans

Java3D
WWW
Programación gráfica Java2D

Applets

Java Server Pages

Servlets
Servidor Sistemas embebidos
RMI

Programación distribuida CORBA


JINI JavaSpaces

Enterprise JavaBeans
Bases de datos JDBC
Introducción: Herramientas

JDK Java Development Kit


•java (Máquina Virtual)
•javac (Compilador bytecode)
•javadoc (Documentación)
•jdb (Depurador consola)
•clases java.*
•Documentación
•...

Entornos
•Jbuilder 3.0 •Modelado visual
•Symantec Café •Depuración
•Oracle Jdeveloper •Rapidez de desarrollo
•Sun Java Workshop
Introducción: Hola Mundo (Ejemplo 1)

HolaMundo.java
Class HolaMundo {

public static void main (String[] argv) {


System.out.println(“Hola Mundo”)
}
}

Compilar javac HolaMundo.java

Ejecutar java HolaMundo

Hola Mundo
Introducción: Ejemplo1
Introducción: Geometria.java

// fichero Geometria.java

public abstract class Geometria {


// clase abstracta que no puede tener objetos
public abstract double area();
public abstract double perimetro();
}
Introducción: Rectangulo.java
// fichero Rectangulo.java

class Rectangulo extends Geometria {


// definición de las variables miembro
private static int numRectangulos = 0;
protected double x1, y1, x2, y2;
// constructor por defecto (sin argumentos)
// se define mediante una llamada al constructor general
public Rectangulo(){ this(0, 0, 1.0, 1.0); }
// constructor de la clase
public Rectangulo(double p1x, double p1y, double p2x, double p2y) {
x1 = p1x;
x2 = p2x;
y1 = p1y;
y2 = p2y;
numRectangulos++;
}
public double area() { return (x1-x2)*(y1-y2); }
public double perimetro() { return 2.0 * ((x1-x2)+(y1-y2)); }
} // fin de la clase Rectangulo
Introducción: Circulo.java
// fichero Circulo.java

public class Circulo extends Geometria {


static int numCirculos=0;
public static final double PI=3.14159265358979323846;
public double x, y, r;

public Circulo() { this(0.0, 0.0, 1.0); }


public Circulo(double r) { this(0.0, 0.0, r); }
public Circulo(double x, double y, double r) {
this.x=x; this.y=y; this.r=r;
numCirculos++;
}
public Circulo(Circulo c) { this(c.x, c.y, c.r); }
// método de objeto para comparar círculos
public Circulo elMayor(Circulo c) {
if (this.r>=c.r) return this; else return c;
}
// método de clase para comparar círculos
public static Circulo elMayor(Circulo c, Circulo d) {
if (c.r>=d.r) return c; else return d;
}
public double area() { return PI * r * r; }
public double perimetro() { return 2.0 * PI * r; }
} // fin de la clase Circulo
Introducción: Dibujable.java

// fichero Dibujable.java

import java.awt.Graphics;

public interface Dibujable {


public void dibujar(Graphics dw);
public void setPosicion(double x, double y);
}
Introducción: RectanguloGrafico.java
// Fichero RectanguloGrafico.java
import java.awt.Graphics;
import java.awt.Color;

class RectanguloGrafico extends Rectangulo implements Dibujable


{
Color color;
// constructor
public RectanguloGrafico(double x1, double y1, double x2,double y2, Color unColor) {
// llamada al constructor de Rectangulo
super(x1, y1, x2, y2);
this.color = unColor;
}
// métodos de la interface Dibujable
public void dibujar(Graphics dw) {
dw.setColor(color);
dw.drawRect((int)x1, (int)y1, (int)(x2-x1), (int)(y2-y1));
}
public void setPosicion(double x, double y) {
;
}
} // fin de la clase RectanguloGrafico
Introducción: CirculoGrafico.java
// fichero CirculoGrafico.java

import java.awt.Graphics;
import java.awt.Color;

public class CirculoGrafico extends Circulo implements Dibujable {


// se heredan las variables y métodos de la clase Circulo
Color color;
// constructor
public CirculoGrafico(double x, double y, double r, Color unColor) {
// llamada al constructor de Circulo
super(x, y, r);
this.color = unColor;
}
// métodos de la interface Dibujable
public void dibujar(Graphics dw) {
dw.setColor(color);
dw.drawOval((int)(x-r), (int)(y-r), (int)(2.0*r), (int)(2.0*r));
}
public void setPosicion(double x, double y) {
;
}
} // fin de la clase CirculoGrafico
Introducción: PanelDibujo.java
// fichero PanelDibujo.java

import java.awt.*;
import java.util.Vector;
import java.util.Enumeration;

public class PanelDibujo extends Panel {


private Vector v;
// constructor
public PanelDibujo(Vector vect) {
super(new FlowLayout());
this.v = vect;
}
public void paint(Graphics g) {
Dibujable dib;
Enumeration e;
e = v.elements();
while(e.hasMoreElements()){
dib=(Dibujable)e.nextElement();
dib.dibujar(g);
}
}
} // Fin de la clase DrawWindow
Introducción: VentanaCerrable.java
// Fichero VentanaCerrable.java

import java.awt.*;
import java.awt.event.*;

class VentanaCerrable extends Frame implements WindowListener {

public VentanaCerrable() {
super();
}
public VentanaCerrable(String title) {
super(title);
setSize(500,500);
addWindowListener(this);
}
public void windowActivated(WindowEvent e) {;}
public void windowClosed(WindowEvent e) {;}
public void windowClosing(WindowEvent e) {System.exit(0);}
public void windowDeactivated(WindowEvent e) {;}
public void windowDeiconified(WindowEvent e) {;}
public void windowIconified(WindowEvent e) {;}
public void windowOpened(WindowEvent e) {;}
}
Introducción: Ejemplo1.java
// fichero Ejemplo1.java
import java.util.Vector;
import java.awt.*;

class Ejemplo1 {
public static void main(String arg[]) throws InterruptedException
{
System.out.println("Comienza main()...");
Circulo c = new Circulo(2.0, 2.0, 4.0);
System.out.println("Radio = " + c.r + " unidades.");
System.out.println("Centro = (" + c.x + "," + c.y + ") unidades.");
Circulo c1 = new Circulo(1.0, 1.0, 2.0);
Circulo c2 = new Circulo(0.0, 0.0, 3.0);
c = c1.elMayor(c2);
System.out.println("El mayor radio es " + c.r + ".");
c = new Circulo(); // c.r = 0.0;
c = Circulo.elMayor(c1, c2);
System.out.println("El mayor radio es " + c.r + ".");
System.out.println("Termina main()...");

Continuación...
Introducción: Ejemplo1.java (cont)

VentanaCerrable ventana = new VentanaCerrable("Ventana abierta al mundo...");


Vector v=new Vector();

CirculoGrafico cg1 = new CirculoGrafico(200, 200, 100, Color.red);


CirculoGrafico cg2 = new CirculoGrafico(300, 200, 100, Color.blue);
RectanguloGrafico rg = new RectanguloGrafico(50, 50, 450, 350, Color.green);

v.addElement(cg1);
v.addElement(cg2);
v.addElement(rg);

PanelDibujo mipanel = new PanelDibujo(v);


ventana.add(mipanel);
ventana.setSize(500, 400);
ventana.setVisible(true);
} // fin de main()
} // fin de class Ejemplo1...
Introducción: Ejemplo1
Ejemplo: Alquiler de vehículos
Una agencia de alquiler de vehículos sin conductor
dispone de camiones y de turismos.
A su vez los turismos pueden ser utilitarios y familiares.
Ejemplo: Vehiculo.java

// fichero Vehiculo.java

public abstract class Vehiculo {


protected String matricula;
protected boolean alquilado;

public Vehiculo(String mat, boolean alq) {


matricula=mat; alquilado=alq;
}

public abstract void alquilar(int dia);


public abstract void devolver(int dia);

public abstract void showInfo();

} // fin de clase Vehiculo


Ejemplo: Turismo.java
// fichero Turismo.java
public class Turismo extends Vehiculo {
protected double precioKm;
protected int kmAlquiler, kmDevolucion;
protected static int numTurismos, numTurAlquilados;

public Turismo(String mat, boolean alq, double prKm) {


// llamada constructor de la superclase. Debe ser
// la primera sentencia del constructor
super(mat, alq);
precioKm = prKm;
kmAlquiler = 0;
kmDevolucion = 0;
numTurismos++;
}

public void alquilar(int kmAlq) {


if (alquilado == true)
System.out.println("El turismo " + matricula + " esta ya alquilado.");
else {
kmAlquiler = kmAlq;
System.out.println("Se alquila un turismo con " + kmAlquiler + "km.");
numTurAlquilados++;
alquilado = true;
}
}
Ejemplo: Turismo.java II
public void devolver(int kmDev) {
if (alquilado == true) {
kmDevolucion = kmDev;
System.out.print("Se devuelve un turismo con " + kmDevolucion + "km. ");
System.out.println("Precio a abonar: " +
(kmDevolucion-kmAlquiler)*precioKm + " Euros");
numTurAlquilados--;
alquilado = false;
} else
System.out.println("El turismo " + matricula + " no esta alquilado.");
}

public void showInfo() {


System.out.println("\nDatos de un Turismo:");
System.out.println("Matricula: " + matricula);
System.out.println("Alquilado: " + ((alquilado==true)? "Si": "No"));
System.out.println("Precio por km: " + precioKm + " Euros");
System.out.println("Numero total de turismos: " + numTurismos);
System.out.println("Numero de turismos alquilados: " + numTurAlquilados);
}

} // fin de clase Turismo


Ejemplo: Camion.java

// fichero Camion.java

public class Camion extends Vehiculo {


protected double precioDia;
protected int diaAlquiler, diaDevolucion;
protected static int numCamiones, numCamAlquilados;

public Camion(String mat, boolean alq, double prD) {


// llamada constructor de la superclase. Debe ser
// la primera sentencia del constructor
super(mat, alq);
precioDia = prD;
diaAlquiler = 0;
diaDevolucion = 0;
numCamiones++;
}
Ejemplo: Camion.java II
public void alquilar(int diaAlq) {
if (alquilado==true) {
System.out.println("El camion " + matricula + " esta ya alquilado.");
} else {
diaAlquiler = diaAlq;
System.out.println("Se alquila un camion el dia " + diaAlquiler + ".");
numCamAlquilados++;
alquilado = true;
}
}

public void devolver(int diaDev) {


if (alquilado==true) {
diaDevolucion = diaDev;
System.out.print("Se devuelve un camion el dia " + diaDevolucion + ". ");
System.out.println("Precio a abonar: " +
(diaDevolucion-diaAlquiler)*precioDia + " Euros");
numCamAlquilados--;
alquilado = false;
} else
System.out.println("El camion " + matricula + " no esta alquilado.");
}
Ejemplo: Camion.java III

public void showInfo() {


System.out.println("\nDatos de un Camion:");
System.out.println("Matricula: " + matricula);
System.out.println("Alquilado: " + ((alquilado==true)? "Si": "No"));
System.out.println("Precio por dia: " + precioDia + " Euros");
System.out.println("Numero total de camiones: " + numCamiones);
System.out.println("Numero de camiones alquilados: " + numCamAlquilados);
}

} // fin de clase Camion


Ejemplo: AgenciaAlquiler.java
// fichero AgenciaAlquiler.java

class AgenciaAlquiler {
public static void main(String [] arg) {
Vehiculo [] avis = new Vehiculo[4];
avis[0] = new Camion("SS-4386-AN", false, 100);
avis[1] = new Turismo("BI-6666-ZZ", false, 0.3);
avis[2] = new Turismo("HU-1976-A", false, 0.4);
avis[3] = new Camion("VI-1234-HL", false, 120);

System.out.println("\nSE ALQUILAN DOS VEHICULOS:");


avis[2].alquilar(23000); // alquilar turismo con 23000 km
avis[3].alquilar(5); // alquilar camion el dia 5
// intento de volver a alquilar
avis[2].alquilar(23000);
avis[3].alquilar(5);
Ejemplo: AgenciaAlquiler.java II

System.out.println("\nSE IMPRIMEN LOS DATOS " +


"DE LOS VEHICULOS:");
for (int i=0; i<avis.length; i++)
avis[i].showInfo();

System.out.println("\nSE DEVUELVEN DOS VEHICULOS:");


avis[2].devolver(25000); // devolver turismo con 25000 km
avis[3].devolver(9); // devolver camion el dia 9
// intento de devolver de nuevo
avis[2].devolver(25000);
avis[3].devolver(9);

System.out.println("\nYa he terminado");
} // fin de main()

} // fin de la clase AgenciaAlquiler


Resultado Ejemplo 2
SE ALQUILAN DOS VEHICULOS: Datos de un Turismo:
Se alquila un turismo con 23000km. Matricula: HU-1976-A
Se alquila un camion el dia 5. Alquilado: Si
El turismo HU-1976-A esta ya alquilado. Precio por km: 0.4 Euros
El camion VI-1234-HL esta ya alquilado. Numero total de turismos: 2
SE IMPRIMEN LOS DATOS DE LOS Numero de turismos alquilados: 1
VEHICULOS: Datos de un Camion:
Datos de un Camion: Matricula: VI-1234-HL
Matricula: SS-4386-AN Alquilado: Si
Alquilado: No Precio por dia: 120.0 Euros
Precio por dia: 100.0 Euros Numero total de camiones: 2
Numero total de camiones: 2 Numero de camiones alquilados: 1
Numero de camiones alquilados: 1 SE DEVUELVEN DOS VEHICULOS:
Datos de un Turismo: Se devuelve un turismo con 25000km. Precio
Matricula: BI-6666-ZZ a abonar: 800.0 Euros
Alquilado: No Se devuelve un camion el dia 9. Precio a
Precio por km: 0.3 Euros abonar: 480.0 Euros
Numero total de turismos: 2 El turismo HU-1976-A no esta alquilado.
Numero de turismos alquilados: 1 El camion VI-1234-HL no esta alquilado.
Ya he terminado

También podría gustarte