Fundamentos de Programcion en Java
Fundamentos de Programcion en Java
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