Java 1730638387
Java 1730638387
Java 1730638387
programación en Java
ISBN 978-84-96285-36-2
Contenido
1. Introducción a Java .................................... 1
Los lenguajes de programación ..........................1
Historia de Java ..................................................2
La plataforma de Java ........................................3
Entornos de desarrollo para Java .......................4
El proceso de edición y compilación....................5
La codificación de programas Java .....................6
El proceso de desarrollo de software ..................6
2. Estructura de un programa Java................. 9
La estructura de un programa Java ....................9
Los elementos de un programa Java.................13
Comentarios......................................................................... 14
Identificadores...................................................................... 14
Variables y valores ................................................................ 15
Tipos primitivos .................................................................... 17
Literales .............................................................................. 18
Operadores .......................................................................... 19
Expresiones.......................................................................... 21
Expresiones aritmético-lógicas ................................................ 22
Conversión de tipos ............................................................... 22
Las palabras reservadas de Java ............................................. 23
3. Clases y objetos........................................ 25
Clases ...............................................................26
Los elementos de una clase ..............................27
Atributos.............................................................................. 27
Métodos y constructores ........................................................ 28
Representación de clases y objetos.......................................... 32
Objetos .............................................................33
La referencia null .................................................................. 35
Referencias compartidas por varios objetos............................... 36
i
El ciclo de vida de un objeto ................................................... 39
Atributos ..........................................................40
Métodos............................................................41
Declaración de métodos ......................................................... 44
Invocación de métodos .......................................................... 45
El método main() .................................................................. 47
Parámetros y argumentos ...................................................... 48
Paso de parámetros............................................................... 50
El valor de retorno ................................................................ 52
Las variables locales de un método .......................................... 52
Sobrecarga de métodos ......................................................... 53
Constructores ...................................................54
4. Extensión de clases .................................. 59
Composición .....................................................59
Herencia ...........................................................64
Extensión de clases ............................................................... 64
Polimorfismo ........................................................................ 70
Clases predefinidas...........................................85
Las clases asociadas a los tipos primitivos ................................ 85
La clase Math ....................................................................... 86
La clase String ...................................................................... 87
ii
Estructura if ......................................................................... 90
Estructura if else ................................................................... 91
Estructura if else if ................................................................ 94
Estructura switch .................................................................. 95
El operador condicional ........................................................ 101
Estructuras de repetición................................102
Estructura while .................................................................. 103
Estructura do-while ............................................................. 107
Estructura for ..................................................................... 109
Uso de las estructuras de repetición....................................... 111
Estructuras de salto........................................115
Sentencia break .................................................................. 115
Sentencia continue .............................................................. 115
Uso de break y continue....................................................... 115
iii
Anexos
A. Operadores del lenguaje Java ................ 179
Operadores aritméticos ..................................179
Operadores unarios y compuestos..................179
Operadores de relación...................................181
Operadores lógicos .........................................181
Orden de precedencia de los operadores ........182
B. Referencias ............................................ 183
El lenguaje de programación Java ..................183
El API de Java.................................................184
C. Glosario .................................................. 185
iv
1. Introducción a Java
1
Introducción a Java
Historia de Java
Java es un lenguaje de programación desarrollado por Sun Microsystems.
Java fue presentado en la segunda mitad del año 1995 y desde entonces se
ha convertido en un lenguaje de programación muy popular. Java es un
lenguaje muy valorado porque los programas Java se pueden ejecutar en
diversas plataformas con sistemas operativos como Windows, Mac OS,
Linux o Solaris. James Gosling, el director del equipo de trabajo encargado
de desarrollar Java, hizo realidad la promesa de un lenguaje independiente
de la plataforma. Se buscaba diseñar un lenguaje que permitiera programar
una aplicación una sola vez que luego pudiera ejecutarse en distintas
máquinas y sistemas operativos. Para conseguir la portabilidad de los
programas Java se utiliza un entorno de ejecución para los programas
compilados. Este entorno se denomina Java Runtime Environment (JRE). Es
gratuito y está disponible para los principales sistemas operativos. Esto
asegura que el mismo programa Java pueda ejecutarse en Windows, Mac
OS, Linux o Solaris.
“Write Once, Run Anyware”, que podría traducirse como “programar una
sola vez y después ejecutar los programas en cualquier sistema operativo”,
era el objetivo del equipo de desarrollo de Java. Esta idea resume el
concepto de portabilidad. Los programas Java son portables, es decir,
independientes de la plataforma, porque pueden ejecutarse en cualquier
ordenador o dispositivo móvil, independientemente del sistema operativo
que tengan instalado: Un programa Java puede ejecutarse en un ordenador
de mesa, un ordenador portátil, una tableta, un teléfono, un reproductor de
2
Fundamentos de programación en Java
La plataforma de Java
Los programas Java se compilan a un lenguaje intermedio, denominado
Bytecode. Este código es interpretado por la máquina virtual de Java del
entorno de ejecución (JRE) y así se consigue la portabilidad en distintas
plataformas. El JRE es una pieza intermedia entre el código Bytecode y los
distintos sistemas operativos existentes en el mercado. Un programa Java
compilado en Bytecode se puede ejecutar en sistemas operativos como
Windows, Linux, Mac Os, Solaris, BlackBerry OS, iOs o Android utilizando el
entorno de ejecución de Java (JRE) apropiado.
3
Introducción a Java
4
Fundamentos de programación en Java
5
Introducción a Java
6
Fundamentos de programación en Java
¿Cómo se va a utilizar?
7
Introducción a Java
8
2. Estructura de un programa Java
/*
* Este programa escribe el texto "Hola Mundo" en la consola
* utilizando el método System.out.println()
*/
9
Estructura de un programa Java
perimetro = 2.0*PI*radio;
System.out.print("El perimetro de la circunferencia de radio ");
System.out.print(radio);
System.out.print(" es ");
System.out.print(perimetro);
}
}
10
Fundamentos de programación en Java
En este ejemplo se puede ver que dentro del método main() se incluye un
comentario de una sola línea que comienza con //. A continuación se
declaran las variables PI, radio y perimetro, todas ellas de tipo double
porque almacenan números reales. PI representa un valor constante, por lo
que es necesario utilizar el delimitador final y asignarle el valor
3.1415926536 correspondiente al número pi.
System.out.print("Hola");
System.out.print(" ");
System.out.print("Mundo");
Hola Mundo
11
Estructura de un programa Java
System.out.print("Hola");
System.out.print("Mundo");
HolaMundo
System.out.println("Hola");
System.out.println("Mundo");
Hola
Mundo
System.out.print("Hola");
System.out.print(" ");
System.out.print("Mundo");
12
Fundamentos de programación en Java
System.out.print("Hola Mundo");
Para mostrar por la consola un texto seguido del valor almacenado de una
variable se puede ejecutar dos veces el método System.out.print():
El perímetro es 157.08
13
Estructura de un programa Java
Comentarios
/*
* El programa HolaMundo se utiliza para aplicar los
* métodos System.out.print() y System.out.println()
*/
/**
* Programa HolaMundo
* @author Fundamentos de Informática
* @version 1.0
* @see Referencias
*/
Identificadores
14
Fundamentos de programación en Java
Todo identificador debe empezar con una letra que puede estar seguida de
más letras o dígitos. Una letra es cualquier símbolo del alfabeto y el
carácter ‘_’. Un dígito es cualquier carácter entre ‘0’ y ‘9’.
Cualquier identificador que empiece con una letra seguida de más letras o
dígitos es válido siempre que no forme parte de las palabras reservadas del
lenguaje Java. El lenguaje Java distingue entre letras mayúsculas y
minúsculas, esto significa que los identificadores numeroPar y numeropar
son distintos.
Existen unas normas básicas para los identificadores que se deben respetar.
Variables y valores
15
Estructura de un programa Java
int mesNacimiento;
mesNacimiento = 2;
System.out.print(mesNacimiento);
16
Fundamentos de programación en Java
int dia=20;
int mes=2;
int año=2020;
Tipos primitivos
17
Estructura de un programa Java
-922117036854775808 a
long Entero con signo
+922117036854775807
±3.40282347e+38 a
float Real de precisión simple
±1.40239846e-45
±1.7976931348623157e+309 a
double Real de precisión doble
±4.94065645841246544e-324
Literales
18
Fundamentos de programación en Java
Booleanos. Los valores lógicos solo pueden ser true y false. Se escriben
siempre en minúsculas.
Carácter Significado
\b Retroceso
\t Tabulador
\n Salto de línea
\r Cambio de línea
Un texto puede estar vacío o contener uno o más caracteres. Por ejemplo,
“Hola Mundo” es un texto de 10 caracteres, mientras que “” es un texto
vacío y tiene 0 caracteres. El texto “a” es diferente del carácter 'a' de tipo
char.
Operadores
19
Estructura de un programa Java
Un operador relacional permiten comparar dos valores: >, <, >= y <=.
El resultado de la comparación es un valor booleano que indica si la
relación es verdadera o falsa.
Números reales. Con los números reales se aplican los mismos operadores
que con los números enteros. Si se realizan operaciones unarias, aditivas o
multiplicativas, el resultado es un número real. También se pueden aplicar
los operadores relacionales para comparar dos números reales.
20
Fundamentos de programación en Java
Expresiones
C = ((F – 32) * 5) / 9
21
Estructura de un programa Java
Expresiones aritmético-lógicas
(10 – 2) > (5 – 3)
Conversión de tipos
22
Fundamentos de programación en Java
23
Estructura de un programa Java
En realidad, las palabras false, null y true son literales. No son palabras
reservadas del lenguaje, pero no se pueden utilizar como identificadores.
24
3. Clases y objetos
25
Clases y objetos
Clases
En su forma más simple, una clase se define por la palabra reservada
class seguida del nombre de la clase. El nombre de la clase debe empezar
por mayúscula. Si el nombre es compuesto, entonces cada palabra debe
empezar por mayúscula. Circulo, Rectangulo, Triangulo y
FiguraGeometrica son nombres válidos de clases.
Por ejemplo, la clase Circulo se define con tres atributos: el radio y las
coordenadas x, y que definen la posición del centro del círculo.
int x;
int y;
int radio;
26
Fundamentos de programación en Java
Una vez que se ha declarado una clase, se pueden crear objetos a partir de
ella. A la creación de un objeto se le denomina instanciación. Es por esto
que se dice que un objeto es una instancia de una clase y el término
instancia y objeto se utilizan indistintamente.
Para crear objetos, basta con declarar una variable de alguno de los tipos
de figuras geométricas:
Circulo circulo1;
Circulo circulo2;
Atributos
27
Clases y objetos
String matricula;
String marca;
String modelo;
String color;
double tarifa;
boolean disponible;
Métodos y constructores
Para diferenciar entre los atributos del objeto y los identificadores de los
parámetros del método constructor, se utiliza la palabra this. De esta
forma, los parámetros del método pueden tener el mismo nombre que los
atributos de la clase. Esto permite hacer una asignación como la que se
muestra a continuación, donde this.marca se refiere al atributo del objeto
y marca al parámetro del método.
this.marca = marca;
28
Fundamentos de programación en Java
29
Clases y objetos
30
Fundamentos de programación en Java
31
Clases y objetos
Los objetos se representan como cajas que indican el nombre del objeto, la
clase a la que pertenecen y el estado del objeto.
32
Fundamentos de programación en Java
matricula “2345 JVM”, marca “SEAT”, modelo “León”, color “Negro”, tarifa
80.0 y disponible false.
Objetos
Un objeto se compone de atributos y métodos. Para acceder a los
elementos de un objeto se escribe el nombre del objeto, un punto y el
nombre del elemento al que se desea acceder.
33
Clases y objetos
System.out.println("Matricula : " +
vehiculo1.getMatricula());
System.out.println("Tarifa : " +
vehiculo1.getTarifa());
vehiculo1.setTarifa(90.0);
System.out.println("Matricula : " +
vehiculo1.getMatricula());
System.out.println("Tarifa : " +
vehiculo1.getTarifa());
34
Fundamentos de programación en Java
La referencia null
Vehiculo vehiculo2;
Vehiculo vehiculo2;
35
Clases y objetos
Para saber si una referencia está instanciada o no, se puede comparar con
null.
if (vehiculo2 == null) {
System.out.print("vehiculo2 es una referencia null")
}
if (vehiculo2 != null) {
System.out.print("vehiculo2 está instanciado")
}
36
Fundamentos de programación en Java
Vehiculo vehiculo1;
Vehiculo vehiculo3;
vehiculo3 = vehiculo1;
System.out.println("Matricula : " +
vehiculo1.getMatricula());
System.out.println("Tarifa : " +
vehiculo1.getTarifa());
System.out.println("Matricula : " +
vehiculo3.getMatricula());
System.out.println("Tarifa : " +
vehiculo3.getTarifa());
37
Clases y objetos
La salida por la consola muestra dos veces los valores asignados al objeto
vehiculo1.
vehiculo3.setTarifa(90.0);
System.out.println("Matricula : " +
vehiculo1.getMatricula());
System.out.println("Tarifa : " +
vehiculo1.getTarifa());
System.out.println("Matricula : " +
vehiculo3.getMatricula());
System.out.println("Tarifa : " +
vehiculo3.getTarifa());
38
Fundamentos de programación en Java
39
Clases y objetos
Atributos
Los atributos son los elementos que almacenan el estado de un objeto. Se
definen de la misma forma que las variables, pero dentro del bloque de la
clase.
40
Fundamentos de programación en Java
En esta nueva declaración, todos los atributos tienen acceso private y solo
es posible acceder a ellos desde los métodos de la clase.
Métodos
Los métodos son funciones que determinan el comportamiento de los
objetos. Un objeto se comporta de una u otra forma dependiendo de los
métodos de la clase a la que pertenece. Todos los objetos de una misma
clase tienen los mismos métodos y el mismo comportamiento.
41
Clases y objetos
Los métodos ‘get’ son métodos de consulta, mientras que los métodos ‘set’
son métodos modificadores.
Los métodos ‘get’ se utilizan para extraer el valor de un atributo del objeto
y los métodos ‘set’ para modificarlo. En la clase Vehiculo es necesario
definir un método ‘get’ para cada uno de sus atributos: getMatricula(),
getMarca(), getModelo(), getColor(), getTarifa() y
getDisponible(). Los métodos ‘set’ solo se definen para los atributos que
pueden ser modificados después de que se ha creado el objeto. En este
caso es necesario definir los métodos setTarifa(double tarifa) y
setDisponible(boolean disponible) para modificar la tarifa del
alquiler del vehículo y su disponibilidad, respectivamente.
Un método ‘get’ utiliza return para devolver el valor del atributo. En este caso el identificador
del atributo es tarifa y se refiere a él como this.tarifa
42
Fundamentos de programación en Java
Un método ‘set’ modifica el valor de un atributo del objeto. En este caso el identificador del
atributo es tarifa y se refiere a él como this.tarifa para asignarle el valor del parámetro
43
Clases y objetos
Por ejemplo, la clase Circulo define dos métodos de tipo operación, uno
para calcular el perímetro y otro para calcular el área.
Declaración de métodos
44
Fundamentos de programación en Java
Invocación de métodos
45
Clases y objetos
46
Fundamentos de programación en Java
int numero = 4;
El método main()
47
Clases y objetos
}
}
Parámetros y argumentos
48
Fundamentos de programación en Java
49
Clases y objetos
Paso de parámetros
50
Fundamentos de programación en Java
recibirVehiculoAlquilado (vehiculo1);
}
}
51
Clases y objetos
El valor de retorno
Los métodos ‘set’ devuelven void, mientras que los métodos ‘get’
devuelven el tipo correspondiente al atributo al que hacen referencia. Los
métodos ‘set’ devuelven void porque son métodos modificadores, realizan
operaciones y cálculos para modificar el estado de los objetos. Los métodos
‘get’, en cambio, son métodos de consulta y devuelven los valores
almacenados en los atributos de un objeto.
52
Fundamentos de programación en Java
Los dos métodos son equivalentes, pero el primero es más claro porque
evita el uso de una variable local que no es necesaria.
Sobrecarga de métodos
53
Clases y objetos
Constructores
Para crear un objeto se utiliza el operador new. Si no se ha definido un
método constructor para la clase, entonces el objeto se instancia indicando
el nombre de la clase y a continuación un paréntesis abierto y otro cerrado.
Si ya se ha definido un método constructor, entonces no es posible
instanciar un objeto utilizando el constructor por defecto. Cuando se invoca
al constructor por defecto se asigna un espacio de memoria para el nuevo
objeto y sus atributos se inicializan a los valores por defecto
correspondientes a su tipo. Los números enteros se inicializan a cero, los
números reales a 0.0, los valores lógicos a false, los caracteres se
inicializan a \u0000 y las referencias a null.
54
Fundamentos de programación en Java
55
Clases y objetos
56
Fundamentos de programación en Java
57
Clases y objetos
58
4. Extensión de clases
Composición
La composición consiste en crear una clase nueva agrupando objetos de
clases que ya existen. Una composición agrupa uno o más objetos para
construir una clase, de manera que las instancias de esta nueva clase
contienen uno o más objetos de otras clases. Normalmente los objetos
contenidos se declaran con acceso private y se inicializan en el
constructor de la clase.
59
Extensión de clases
60
Fundamentos de programación en Java
61
Extensión de clases
}
}
62
Fundamentos de programación en Java
alquiler1.getCliente().getNIF();
alquiler1.getVehiculo().getMatricula();
System.out.println("Vehículo alquilado");
System.out.println("Cliente : " +
alquiler1.getCliente().getNIF() + " " +
alquiler1.getCliente().getNombre() + " " +
alquiler1.getCliente().getApellidos());
System.out.println("Vehículo: " +
alquiler1.getVehiculo().getMatricula());
Vehículo alquilado
Cliente : 30435624X Juan Pérez
Vehículo: 4050 ABJ
63
Extensión de clases
Herencia
La herencia es la capacidad que tienen los lenguajes orientados a objetos
para extender clases. Esto produce una nueva clase que hereda el
comportamiento y los atributos de la clase que ha sido extendida. La clase
original se denomina clase base o superclase, la nueva clase se denomina
clase derivada o subclase.
Extensión de clases
Suponga que se desea diseñar una aplicación para gestionar una empresa
de alquiler de vehículos de tipo turismo, deportivo y furgonetas. La clase
Vehiculo define los atributos y los métodos de todos los vehículos de la
empresa de alquiler. Esto no es suficiente porque hay distintos tipos de
vehículos, de manera que es necesario definir subclases para cada tipo de
vehículo: turismo, deportivo y furgoneta. En este ejemplo, la superclase es
Vehiculo y las subclases son Turismo, Deportivo y Furgoneta. Todas
las subclases son vehículos, un turismo, un deportivo y una furgoneta son
vehículos, pero cada uno de ellos tiene características propias que le hacen
diferente del resto. Para un turismo interesa saber el número de puertas y
el tipo de cambio de marcha, para un deportivo interesa saber su cilindrada
y para una furgoneta su capacidad de carga en kilos y el volumen en metros
cúbicos.
64
Fundamentos de programación en Java
65
Extensión de clases
66
Fundamentos de programación en Java
67
Extensión de clases
68
Fundamentos de programación en Java
69
Extensión de clases
Polimorfismo
70
Fundamentos de programación en Java
71
Extensión de clases
System.out.print("Vehículo : " +
miVehiculo.getAtributos());
72
Fundamentos de programación en Java
System.out.print("Deportivo " +
miDeportivo.getAtributos());
System.out.print("Furgoneta " +
miFurgoneta.getAtributos());
73
Extensión de clases
System.out.print("Turismo : " +
miTurismo.getMatricula() + " " +
miTurismo.getMarca() + " " +
miTurismo.getModelo());
Compatibilidad de tipos
En una relación de tipo herencia, un objeto de la superclase puede
almacenar un objeto de cualquiera de sus subclases. Por ejemplo, un objeto
de la clase Vehiculo puede almacenar un objeto de la clase Turismo,
Deportivo o Furgoneta. Dicho de otro modo, cualquier referencia de la
clase Vehiculo puede contener una instancia de la clase Vehiculo o bien
una instancia de las subclases Turismo, Deportivo o Furgoneta.
Esto significa que la clase base o superclase es compatible con los tipos que
derivan de ella, pero no al revés. Una referencia de la clase Turismo solo
puede almacenar una instancia de Turismo, nunca una instancia de la
superclase Vehiculo.
74
Fundamentos de programación en Java
75
Extensión de clases
76
Fundamentos de programación en Java
Jerarquía de herencia
Cualquier clase Java puede ser utilizada como una clase base para extender
sus atributos y comportamiento. La clase derivada que se obtenga, puede a
su vez, ser extendida de nuevo. La relación de herencia es transitiva y
define una jerarquía.
77
Extensión de clases
78
5. Ampliación de clases
79
Ampliación de clases
Derechos de acceso
El estado de un objeto está dado por el conjunto de valores de sus
atributos. Una modificación arbitraria, intencionada o no, puede provocar
inconsistencias o comportamientos no deseados de un objeto. Es por este
motivo que se debe controlar el acceso a los atributos de los objetos. Java
proporciona mecanismos de acceso a los elementos de una clase, de forma
que se puede determinar el derecho de acceso de cada elemento según las
necesidades de los objetos.
80
Fundamentos de programación en Java
Con esta declaración, todos los atributos de la clase tienen acceso private
y el diagrama de clases muestra un signo menos delante del identificador
del atributo para indicar que es privado.
81
Ampliación de clases
82
Fundamentos de programación en Java
Paquetes
Los paquetes son grupos de clases, interfaces y otros paquetes que están
relacionados entre sí. Los paquetes aportan una forma de encapsulación de
un nivel superior al de las clases. Permiten unificar un conjunto de clases e
interfaces que se relacionan funcionalmente. Por ejemplo, el paquete java
engloba un conjunto de paquetes con utilidades de soporte para desarrollo y
ejecución de aplicaciones como util o lang.
package nombre-del-paquete;
package vehiculos;
Uso
import nombre-del-paquete;
import java.math.*;
83
Ampliación de clases
import java.util.Calendar;
import java.util.Calendar;
diaHoy = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
mesHoy = Calendar.getInstance().get(Calendar.MONTH) + 1;
añoHoy = Calendar.getInstance().get(Calendar.YEAR);
Nombres
package nombre-de-la-empresa.nombre-del-paquete;
84
Fundamentos de programación en Java
package miEmpresa.vehiculos;
Clases predefinidas
Una característica importante de Java es que aporta gran cantidad de clases
predefinidas. Estas clases están especializadas en comunicaciones, web,
interfaz de usuario, matemáticas y muchas otras aplicaciones.
Los tipos predefinidos boolean, char, int, long, float y double son
tipos simples, no son clases. Para facilitar la programación en Java se han
creado clases asociadas a los tipos predefinidos. Estas clases proporcionan
métodos útiles para convertir cadenas de texto a otros tipos, para imprimir
los números con diversos formatos y para describir los tipos simples.
Boolean boolean
Character char
Integer int
Long long
Float float
Double double
85
Ampliación de clases
La clase Math
Para más información sobre los métodos de la clase Math, consulte el API
de Java.
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html
86
Fundamentos de programación en Java
La clase String
87
Ampliación de clases
Para más información sobre los métodos de la clase String, consulte el API
de Java.
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html
88
6. Estructuras de control
89
Estructuras de control
Estructuras de selección
Las estructuras de selección permiten modificar el flujo de un programa. La
decisión de ejecutar un bloque de sentencias queda condicionada por el
valor de una expresión lógica definida utilizando variables del programa.
Estructura if
if (condicion) {
bloque-de-sentencias
}
if (condicion)
sentencia;
90
Fundamentos de programación en Java
if (calificacion == 10) {
System.out.println("Matrícula de Honor");
}
Estructura if else
if (condicion) {
bloque-de-sentencias-if
}
else {
bloque-de-sentencias-else
}
91
Estructuras de control
La sentencia if-else:
if (numero % 2 == 0)
System.out.println("El número es par");
else
System.out.println("El número es impar");
if (numero % 2 != 0)
System.out.println("El número es impar");
else
System.out.println("El número es par");
Calificación Descripción
10 Matrícula de Honor
9 Sobresaliente
7, 8 Notable
6 Bien
5 Aprobado
0,1,2,3,4 Suspenso
92
Fundamentos de programación en Java
De la tabla anterior, se puede ver que las condiciones son excluyentes entre
sí. Si la calificación es 10 se muestra “Matrícula de Honor”. En caso
contrario la calificación es menor de 10 y es necesario seleccionar entre
“Sobresaliente”, “Notable”, “Bien”, “Aprobado” y “Suspenso”. Si la
calificación es 9 se muestra “Sobresaliente”. En caso contrario, la
calificación es menor de 9 y se debe seleccionar entre “Notable”, “Bien”,
“Aprobado” y “Suspenso”. Si la calificación es mayor o igual a 7 se muestra
“Notable”. En caso contrario la calificación es menor de 7 y se debe
seleccionar entre “Bien”, “Aprobado” y “Suspenso”. Si la calificación es 6 se
muestra “Bien”. En caso contrario la calificación es menor o igual a 6 y se
debe seleccionar entre “Aprobado” y “Suspenso”. Si la calificación es 5 se
muestra “Aprobado”, en caso contrario “Suspenso”.
La sentencia if-else:
int calificacion = 7;
if (calificacion == 10)
System.out.println("Matrícula de Honor");
else
if (calificacion == 9)
System.out.println("Sobresaliente");
else
if (calificacion >= 7)
System.out.println("Notable");
else
if (calificacion == 6)
System.out.println("Bien");
else
if (calificacion == 5)
System.out.println("Aprobado");
else
System.out.println("Suspenso");
93
Estructuras de control
Estructura if else if
if (condicion-1) {
bloque-de-sentencias-condicion-1
} else if (condicion-2) {
bloque-de-sentencias-condicion-2
} else {
bloque-de-sentencias-else
}
int calificacion = 7;
if (calificacion == 10) {
System.out.println("Matrícula de Honor");
} else if (calificacion == 9) {
System.out.println("Sobresaliente");
} else if (calificacion >= 7) {
System.out.println("Notable");
} else if (calificacion == 6) {
System.out.println("Bien");
} else if (calificacion == 5) {
System.out.println("Aprobado");
} else {
System.out.println("Suspenso");
}
94
Fundamentos de programación en Java
Estructura switch
switch (expresion) {
case valor-1:
bloque-de-sentencias-1;
break;
case valor-2:
bloque-de-sentencias-2;
break;
case valor-3:
bloque-de-sentencias-3;
break;
case valor-4:
bloque-de-sentencias-4;
break;
case valor-5:
bloque-de-sentencias-5;
break;
default:
bloque-de-sentencias-default;
break;
}
95
Estructuras de control
Calificación Descripción
96
Fundamentos de programación en Java
switch (categoriaProfesional) {
case 'A': System.out.print("Socio ");
case 'B': System.out.print("Senior ");
case 'C': System.out.print("Junior ");
default: System.out.print("¡Indefinida! ");
}
}
}
97
Estructuras de control
switch (categoriaProfesional) {
case 'A': System.out.print("Socio ");
break;
case 'B': System.out.print("Senior ");
break;
case 'C': System.out.print("Junior ");
break;
default: System.out.print("¡Indefinida! ");
break;
}
98
Fundamentos de programación en Java
switch (categoriaProfesional) {
case 'A': System.out.print("Socio ");
break;
case 'B': System.out.print("Senior ");
break;
case 'C': System.out.print("Junior ");
break;
default: System.out.print("¡Indefinida! ");
break;
}
}
}
99
Estructuras de control
100
Fundamentos de programación en Java
El operador condicional
101
Estructuras de control
Menor de edad
Estructuras de repetición
Las estructuras de repetición permiten repetir muchas veces un bloque de
sentencias. A estas estructuras también se les conoce como estructuras
iterativas o bucles.
102
Fundamentos de programación en Java
Estructura while
103
Estructuras de control
inicialización;
while (condición) {
bloque-de-sentencias;
actualizacion;
}
while (condición) {
bloque-de-sentencias;
}
104
Fundamentos de programación en Java
0! = 1
1! = 1
2! = 1 x 2
3! = 1 x 2 x 3
4! = 1 x 2 x 3 x 4
...
n!= 1 x 2 x 3 x 4 x 5 x ... x (n-2) x (n-1) x (n)
while (i <= n) {
factorial = factorial * i;
i++;
}
}
}
105
Estructuras de control
i n factorial * i factorial
1 5 1*1 1
2 5 1*2 2
3 5 2*3 6
4 5 6*4 24
5 5 24 * 5 120
106
Fundamentos de programación en Java
Estructura do-while
inicialización;
do {
bloque-de-sentencias;
actualizacion;
} while (condición);
107
Estructuras de control
do {
bloque-de-sentencias;
} while (condición);
do {
factorial = factorial * i;
i++;
} while (i <= n);
}
}
108
Fundamentos de programación en Java
Estructura for
109
Estructuras de control
}
}
110
Fundamentos de programación en Java
111
Estructuras de control
if (numero == 0)
System.out.println("El número es par");
else
System.out.println("El número es impar");
}
}
112
Fundamentos de programación en Java
do {
numero = (int) (100 * Math.random());
System.out.println("Número aleatorio: " + numero);
} while (numero != 50);
}
}
113
Estructuras de control
Ejemplo de uso de for. Utilice una estructura for para calcular la función
potencia de un número entero positivo utilizando productos. La potencia se
calcula como el producto de la base repetido tantas veces como el valor del
exponente.
}
}
114
Fundamentos de programación en Java
Estructuras de salto
En Java existen dos sentencias que permiten modificar el flujo secuencial de
un programa y provocan un salto en la ejecución. Estas sentencias son
break y continue. Ambas se utilizan con las estructuras de repetición
para interrumpir la ejecución con break o volver al principio con continue.
Además, el break se utiliza para interrumpir la ejecución de un switch.
Sentencia break
Sentencia continue
Utilice un for para comparar cada una de las letras de la frase. Dentro del
for utilice un switch para seleccionar entre vocales, consonantes y
espacios. Las variables vocales, consonantes y espacios se inicializan a cero
y se utilizan para contar el número de veces que aparecen en la frase.
115
Estructuras de control
switch (letra) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': vocales++;
break;
case ' ': espacios++;
break;
default: consonantes++;
break;
}
}
}
}
116
Fundamentos de programación en Java
do {
numero = (int) (100 * Math.random());
System.out.println("Número aleatorio: " + numero);
if (numero == 25)
break;
}
}
117
Estructuras de control
}
}
118
7. Estructuras de almacenamiento
Arrays
Java proporciona una estructura de almacenamiento denominada array que
permite almacenar muchos objetos de la misma clase e identificarlos con el
mismo nombre.
tipo-o-clase[] identificador-array;
o
tipo-o-clase identificador-array[];
int[] numeros;
o
int numeros[];
119
Estructuras de almacenamiento
Se denomina tipo base del array al tipo que se declara para sus elementos.
Este tipo base puede ser un tipo primitivo de Java, un objeto o una clase
definida. En los ejemplos anteriores se han utilizado tipos primitivos y
clases como tipo base. El array numerosEnteros almacena objetos del
primitivo int. El array nombres almacena objetos de la clase String. El
array objetos almacena referencias a instancias de la clase Object de
Java. El array vehiculos almacena objetos de la clase Vehiculo.
120
Fundamentos de programación en Java
121
Estructuras de almacenamiento
notas[0] es 4
notas[1] es 9
notas[2] es 7
notas[3] es 5
notas[4] es 10
122
Fundamentos de programación en Java
La variable nota del for “para todo” toma los valores nota[0], nota[1],
nota[2], nota[3] y nota[4] en cada iteración. Cuando se utiliza un for
“para todo” no hace falta indicar los límites de la variable de control del
for, basta que esta variable sea del tipo almacenado en el array. En este
ejemplo nota es de tipo int.
4
9
7
5
10
123
Estructuras de almacenamiento
De nuevo, se utiliza un for “para todo” para mostrar el contenido del array
diasLaborables que almacena objetos de tipo String.
La variable dia del for “para todo” es de tipo String y toma los valores
diasLaborables[0], diasLaborables[1], diasLaborables[2],
diasLaborables[3] y diasLaborables[4] en cada iteración.
124
Fundamentos de programación en Java
Lunes
Martes
Miércoles
Jueves
Viernes
125
Estructuras de almacenamiento
La variable vehiculo del for “para todo” es de tipo Vehiculo y toma los
valores de vehiculos[0], vehiculos [1] y vehiculos[2] en cada
iteración.
126
Fundamentos de programación en Java
Arrays multidimensionales
Un array de dos dimensiones es un array que contiene otro array en cada
uno de sus elementos.
127
Estructuras de almacenamiento
Para mostrar los elementos del array notas es necesario utilizar dos for
anidados.
notas[0][0] es 5
notas[0][1] es 7
notas[0][2] es 9
notas[1][0] es 4
notas[1][1] es 6
notas[1][2] es 5
128
Fundamentos de programación en Java
5
7
9
4
6
5
int numero = 1;
129
Estructuras de almacenamiento
System.out.println("");
}
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
19 20 21
22 23 24
25 26 27
130
Fundamentos de programación en Java
Uso de arrays
Suponga que se desea almacenar en arrays el catálogo de vehículos y la
relación de clientes de una empresa de alquiler de vehículos. Para esto es
necesario definir una nueva clase, EmpresaAlquilerVehiculos, que
almacene la información detallada de la empresa, los clientes y el catálogo
de vehículos.
131
Estructuras de almacenamiento
132
Fundamentos de programación en Java
133
Estructuras de almacenamiento
134
Fundamentos de programación en Java
return null;
}
135
Estructuras de almacenamiento
if (vehiculo.getDisponible()) {
vehiculo.setDisponible(false);
this.alquileres[this.totalAlquileres]=
new VehiculoAlquilado(cliente, vehiculo,
diaHoy(), mesHoy(), añoHoy(), dias);
this.totalAlquileres++;
}
}
136
Fundamentos de programación en Java
if (vehiculo != null)
vehiculo.setDisponible(true);
}
137
Estructuras de almacenamiento
easydrive.registrarCliente(new Cliente("X5618927C",
"Juan","González López"));
easydrive.imprimirClientes();
easydrive.imprimirVehiculos();
138
Fundamentos de programación en Java
139
Estructuras de almacenamiento
easydrive.registrarCliente(new Cliente("X5618927C",
"Juan", "González López"));
easydrive.registrarCliente(new Cliente("Z7568991Y",
"Luis", "Fernández Gómez"));
easydrive.imprimirClientes();
easydrive.imprimirVehiculos();
}
}
140
Fundamentos de programación en Java
La relación de clientes:
El catálogo de vehículos:
141
Estructuras de almacenamiento
142
Fundamentos de programación en Java
143
Estructuras de almacenamiento
int mitad;
int limiteInferior = 0;
int limiteSuperior = numeros.length - 1;
int numeroBusqueda = 68;
boolean encontrado = false;
if (numeros[mitad] == numeroBusqueda) {
encontrado = true; // ¡encontrado!
}
else if (numeros[mitad] > numeroBusqueda) {
limiteSuperior = mitad - 1; // buscar en la primera mitad
} else {
limiteInferior = mitad + 1; // buscar en la segunda mitad
}
}
if (encontrado)
System.out.println("He encontrado el número");
else
System.out.println("No he encontrado el número");
}
}
Ordenación de arrays
Una de las operaciones más comunes con arrays es la ordenación. Un
algoritmo de ordenación clasifica un conjunto de datos de forma ascendente
o descendente.
144
Fundamentos de programación en Java
int tmp;
145
Estructuras de almacenamiento
146
Fundamentos de programación en Java
147
Estructuras de almacenamiento
148
Fundamentos de programación en Java
Java define la clase Arrays con métodos que permiten realizar operaciones
de ordenación y búsqueda en objetos de tipo array. Estos métodos se
pueden utilizar con todos los tipos primitivos, String y con cualquier otro
tipo de objeto.
149
Estructuras de almacenamiento
150
Fundamentos de programación en Java
Arrays.sort(numerosOrdenados);
151
Estructuras de almacenamiento
5
4
6
7
5
6
4
8
7
10
4
4
5
5
6
6
7
7
8
10
152
Fundamentos de programación en Java
Arrays redimensionables
Un ArrayList es un array redimensionable. Puede almacenar un número
indefinido de elementos.
Vehiculo v = (Vehiculo)vehiculos.get(0);
153
Estructuras de almacenamiento
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html
154
Fundamentos de programación en Java
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.List;
System.out.println("Vehiculos");
155
Estructuras de almacenamiento
Vehiculos
Matrícula: 4060 TUR Modelo: Skoda Fabia Color: Blanco
Tarifa: 90.0 Disponible: true Puertas: 2 Marcha
automática: false
Matrícula: 4070 DEP Modelo: Ford Mustang Color: Rojo
Tarifa: 150.0 Disponible: true Cilindrada (cm3): 2000
Matrícula: 4080 TUR Modelo: VW GTI Color: Azul
Tarifa: 110.0 Disponible: true Puertas: 2 Marcha
automática: false
Matrícula: 4090 TUR Modelo: SEAT Ibiza Color: Blanco
Tarifa: 90.0 Disponible: true Puertas: 4 Marcha
automática: false
Matrícula: 4100 FUR Modelo: Fiat Ducato Color: Azul
Tarifa: 80.0 Disponible: true Carga (kg): 1200
Volumen (m3): 8
156
Fundamentos de programación en Java
import java.util.ArrayList;
import java.util.List;
157
Estructuras de almacenamiento
158
Fundamentos de programación en Java
return null;
}
159
Estructuras de almacenamiento
if (vehiculo.getDisponible()) {
vehiculo.setDisponible(false);
this.alquileres.add(
new VehiculoAlquilado(cliente, vehiculo,
diaHoy(), mesHoy(), añoHoy(), dias));
}
}
if (vehiculo != null)
vehiculo.setDisponible(true);
}
160
Fundamentos de programación en Java
easydrive.registrarCliente(new Cliente("X5618927C",
"Juan","González López"));
161
Estructuras de almacenamiento
easydrive.imprimirClientes();
easydrive.imprimirVehiculos();
162
Fundamentos de programación en Java
import java.util.ArrayList;
import java.util.List;
163
Estructuras de almacenamiento
easydrive.registrarCliente(new Cliente("X5618927C",
"Juan", "González López"));
easydrive.registrarCliente(new Cliente("Z7568991Y",
"Luis", "Fernández Gómez"));
easydrive.imprimirClientes();
easydrive.imprimirVehiculos();
}
}
164
8. Entrada y salida
165
Entrada y salida
InputStream Reader
ByteArrayInputStream BufferedReader
FileInputStream LineNumberReader
FilterInputStream CharArrayReader
BufferedInputStream FilterReader
DataInputStream PushBackReader
LineNumberInputStream InputStreamReader
PushBackInputStream FileReader
ObjectInputStream PipedReader
PipedInputStream StringReader
SequenceInputStream
StringBufferInputStream
OutputStream Writer
ByteArrayOutputStream BufferedWriter
FileOutputStream CharArrayWriter
FilterOutputStream FilterWriter
BufferedOutputStream OutputStreamWriter
DataOutputStream FileWriter
PrintStream PipedWriter
ObjectOutputStream PrintWriter
PipedOutputStream StringWriter
Existen flujos con bytes y flujos con caracteres que se aplican a la misma
entrada o salida. FileInputStream y FileOutputStream son flujos para
leer y escribir bytes en un fichero, FileReader y FileWriter también son
flujos que se aplican a ficheros, pero en este caso para leer y escribir
caracteres.
166
Fundamentos de programación en Java
167
Entrada y salida
import java.util.Scanner;
Una vez introducidos todos los datos, el programa muestra un mensaje por
la consola con el nombre y fecha de nacimiento.
168
Fundamentos de programación en Java
ficheroSalida.close();
169
Entrada y salida
El for anidado escribe todos los elementos del array en el fichero de texto.
Al finalizar se invoca al método close() del objeto ficheroSalida para
cerrarlo.
1,2,3,4,5,
6,7,8,9,10,
11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25,
import java.io.PrintWriter;
import java.io.File;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.IOException;
170
Fundamentos de programación en Java
if (ficheroEntrada.exists()) {
Scanner datosFichero = new Scanner(ficheroEntrada);
while (datosFichero.hasNext()) {
StringTokenizer numerosFichero = new
StringTokenizer(datosFichero.next(),",");
while (numerosFichero.hasMoreTokens())
System.out.print(numerosFichero.nextToken() +
"\t");
System.out.println("");
}
datosFichero.close();
}
else
System.out.println("¡El fichero no existe!");
171
Entrada y salida
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.io.PrintWriter;
if (ficheroEntrada.exists()) {
Scanner datosFichero = new Scanner(ficheroEntrada);
System.out.println("Números del fichero");
while (datosFichero.hasNext()) {
StringTokenizer numerosFichero = new
StringTokenizer(datosFichero.next(),",");
while (numerosFichero.hasMoreTokens())
System.out.print(numerosFichero.nextToken() + "\t");
System.out.println("");
}
datosFichero.close();
}
else
System.out.println("¡El fichero no existe!");
}
}
172
Fundamentos de programación en Java
173
Entrada y salida
174
Fundamentos de programación en Java
try {
FileOutputStream ficheroSalida = new
FileOutputStream(nombreFichero);
ObjectOutputStream objetoSalida = new
ObjectOutputStream(ficheroSalida);
objetoSalida.writeObject(new Persona("55287188B",
"María", "Ruiz Ramos"));
objetoSalida.writeObject(new Persona("40302010A",
"Juan", "González López"));
objetoSalida.close();
} catch (FileNotFoundException e) {
System.out.println("¡El fichero no existe!");
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
};
175
Entrada y salida
Para leer los objetos almacenados en el fichero binario se utilizan las clases
FileInputStream y ObjectInputStream. Se crea una instancia de la
clase FileInputStream para inicializar la instancia objetoEntrada de
ObjectInputStream.
try {
FileInputStream ficheroEntrada = new
FileInputStream(nombreFichero);
ObjectInputStream objetoEntrada = new
ObjectInputStream(ficheroEntrada);
Persona p1 = (Persona)objetoEntrada.readObject();
Persona p2 = (Persona)objetoEntrada.readObject();
objetoEntrada.close();
System.out.println("DNI\t Nombre");
System.out.println(p1.getAtributos());
System.out.println(p2.getAtributos());
} catch (FileNotFoundException e) {
System.out.println("¡El fichero no existe!");
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
};
176
Fundamentos de programación en Java
DNI Nombre
55287188B Ruiz Ramos, María
40302010A González López, Juan
Las sentencias try y catch se utilizan para atrapar las excepciones que se
producen durante la ejecución del programa: FileNotFoundException,
IOException o Exception. De esta forma se atrapan los errores que se
producen cuando el fichero de datos no existe o cuando hay un problema de
lectura o escritura en el fichero.
Las excepciones son el mecanismo que proporciona Java para gestionar los
errores de ejecución de una aplicación.
try {
sentencias-que-pueden-producir-una-excepción;
} catch (Excepción-tipo-1 e) {
sentencias-para-excepción-tipo-1;
} catch (Excepción-tipo-2 e) {
sentencias-para-excepción-tipo-2;
} catch (Excepción-tipo-3 e){
sentencias-para-excepción-tipo-3;
} finally {
sentencias-que-se-ejecutan-si-hay-excepción-o-no;
};
177
Entrada y salida
import java.io.*;
try {
FileOutputStream ficheroSalida = new
FileOutputStream(nombreFichero);
ObjectOutputStream objetoSalida = new
ObjectOutputStream(ficheroSalida);
objetoSalida.writeObject(new Persona("55287188B",
"María", "Ruiz Ramos"));
objetoSalida.writeObject(new Persona("40302010A",
"Juan", "González López"));
objetoSalida.close();
Persona p1 = (Persona)objetoEntrada.readObject();
Persona p2 = (Persona)objetoEntrada.readObject();
objetoEntrada.close();
System.out.println("DNI\t Nombre");
System.out.println(p1.getAtributos());
System.out.println(p2.getAtributos());
} catch (FileNotFoundException e) {
System.out.println("¡El fichero no existe!");
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
};
}
}
178
A. Operadores del lenguaje Java
Operadores aritméticos
Los operadores aritméticos son símbolos que representan operaciones
aritméticas con dos operandos.
- Resta
* Producto
/ División
% Módulo o resto
179
Operadores del lenguaje Java
++ a++ a=a+1
-- a-- a=a-1
+= a+=b a=a+b
-= a-=b a=a-b
*= a*=b a=a*b
/= a/=b a=a/b
%= a%=b a=a%b
180
Fundamentos de programación en Java
Operadores de relación
Los operadores de relación permiten comparar dos o más valores.
= Igual nota = 10
Operadores lógicos
Java utiliza tres operadores lógicos: el O lógico (disyunción), el Y lógico
(conjunción) y la negación.
181
Operadores del lenguaje Java
Operador Descripción
+- Suma, resta
< > <= >= Menor, mayor, menor o igual, mayor igual
== != Igual, diferente
|| Operador lógico OR
182
B. Referencias
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java
Java
http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)
http://www.programacionfacil.com/java/if
http://www.programacionfacil.com/java:switch
http://www.programacionfacil.com/java/ciclo_for
http://www.programacionfacil.com/java/while
http://www.programacionfacil.com/java/do_while
http://www.programacionfacil.com/java/ciclos_conclusiones
http://www.codexion.com/tutorialesjava/java/nutsandbolts/if.html
http://www.codexion.com/tutorialesjava/java/nutsandbolts/switch.html
http://www.codexion.com/tutorialesjava/java/nutsandbolts/for.html
http://www.codexion.com/tutorialesjava/java/nutsandbolts/while.html
http://aprender-java.blogspot.com
183
Referencias
El API de Java
http://download.oracle.com/javase/1,5,0/docs/api/allclasses-noframe.html
La clase Arrays
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html
La clase ArrayList
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html
La clase File
http://download.oracle.com/javase/1,5,0/docs/api/java/io/File.html
La clase PrintWriter
http://download.oracle.com/javase/1,5,0/docs/api/java/io/PrintWriter.html
http://download.oracle.com/javase/1,5,0/docs/api/java/util/Scanner.html
La clase StringTokenizer
http://download.oracle.com/javase/1,5,0/docs/api/java/util/StringTokenizer
.html
184
C. Glosario
185
Glosario
186
Fundamentos de programación en Java
187
Glosario
188
Fundamentos de programación en Java
5. El número de características
Expresión. Código que se forma
opcionales en XML debe ser
uniendo expresiones simples
mínima, idealmente cero
formadas por literales o variables
con operadores. El valor de una
6. Los documentos XML deben ser
expresión se calcula considerando
legibles y claros
la precedencia de los operadores
aritméticos y lógicos. 7. El diseño de XML debe ser
conciso
eXtensible Markup Language
(XML). XML es un lenguaje de 8. Los documentos XML deben
marcado para la descripción de crearse fácilmente
datos estructurados. Permite
declarar los contenidos de forma 9. No importa si las marcas XML
precisa y separar el contenido del no son concisas
189
Glosario
190
Fundamentos de programación en Java
191
Glosario
192
Fundamentos de programación en Java
193
Glosario
N Sesión. Encargado
aspectos de la comunicación como
de ciertos
194
Fundamentos de programación en Java
195
Glosario
S certificadoras
pone en
autorizadas
comunicación con
y se
el
servidor seguro que le envía su
Secure Socket Layer (SSL).
clave pública, rubricada por el
Protocolo que soporta cifrado para
notario. La identificación se
garantizar la privacidad de la
completa enviando al servidor un
comunicación entre un browser y
mensaje aleatorio que éste debe
un servidor web. Es el protocolo
firmar. De esta forma sabe el
de seguridad más utilizado en
cliente que al otro lado está quien
Internet, es una tecnología
dice ser.
diseñada por Netscape
Communications Inc. que dispone Verificada la identidad del
un nivel seguro entre el servicio servidor, el cliente genera una
clásico de transporte en Internet clave de sesión y la envía cifrada
(TCP) y las aplicaciones que se con la clave pública del servidor.
comunican a través de él. Conociendo ambos la clave de
sesión (y el servidor es el único en
Las comunicaciones tienen lugar
poderla descifrar al requerir su
en dos fases, en una primera fase
clave privada), se intercambian
se negocia entre el cliente y el
datos con seguridad cifrados por el
servidor una clave simétrica sólo
algoritmo de clave secreta.
válida para esa sesión. En la
segunda fase, se transfieren datos Servlet. Programa Java que
cifrados con dicha clave. Este aporta más funcionalidad a un
sistema es transparente para las servidor web generando
aplicaciones finales, que contenidos dinámicos e
simplemente saben que el canal interactuando con clientes web
(mantenido por el navegador y el utilizando el modelo Request-
servidor de comercio o servidor Response.
seguro) se encarga de
proporcionarles confidencialidad Simple Mail Transfer Protocol
punto a punto. (SMTP). El protocolo SMTP
proporciona el servicio de correo
La fase inicial que utiliza electrónico. Permite enviar
tecnología de cifrado de clave mensajes de texto y archivos
pública se realiza muy binarios de cualquier tipo a otros
cuidadosamente para evitar tanto usuarios de la red. Los mensajes
la intromisión de terceras partes de correo electrónico no se envían
como para evitar suplantaciones directamente a los ordenadores
de identidad del centro servidor. El personales de cada usuario, sino
navegador incluye las claves que se utiliza un ordenador que
públicas de ciertos notarios actúa como servidor de correo
electrónicos o entidades
196
Fundamentos de programación en Java
197
Glosario
198
Fundamentos de programación en Java
199
Glosario
200