Programación Orientada a Objetos en Java (XXVI)
Instrucciones condicionales.
Simple:
if (CONDICION)
{
INSTRUCCIONES
}
Doble:
if (CONDICION)
{
INSTRUCCIONES
}
else
{
INSTRUCCIONES
}
Programación Orientada a Objetos en Java (XXVII)
Múltiple:
switch(VARIABLE)
{
case VALOR1:
break;
case VALOR2:
break;
…
case VALORn:
break;
default:
break;
}
Programación Orientada a Objetos en Java (XVIII)
Instrucciones repetitivas:
Hay de dos tipos:
De 0 a N: for y while
for (INICIALIZACION; CONDICION; PASO)
{
INSTRUCCIONES
}
while(CONDICION)
{
INSTRUCCIONES
}
De 1 a N: do … while
do
{
INSTRUCCIONES
}
while(CONDICION);
Programación Orientada a Objetos en Java (XXIX)
Métodos.
La signatura de un método es lo que lo define.
tipo_retorno + identificativo + ( + [parámetro(s)] + )
Los parámetros son definiciones de variables con ámbito local (de método) pero que reciben un valor inicial cuando se haga la llamada el método.
tipo + identificativo
Java soporta sobrecarga: definición de dos métodos en la misma clase con el mismo identificativo pero con número o tipo de parámetros diferentes.
Si no se quiere devolver nada se usa el tipo “void”.
Tipos primitivos Vs tipos no primitivos (clases) en métodos.
Programación Orientada a Objetos en Java (XXX)
Constructores
Métodos especiales que se ejecutan en el momento de creación de un objeto (new).
No devuelven valor (ni void).
Se llaman igual que la clase.
Puede haber sobrecarga.
Por defecto siempre hay un constructor que no recibe parámetros.
Preguntas:
¿Qué pasa si ponemos un único constructor con parámetros?
¿Qué pasa si ponemos un constructor con encapsulación privada?
Programación Orientada a Objetos en Java (XXXI)
El tipo de datos String
Es un tipo de datos abstracto (clase) que está definido en el paquete java.lang.
Es el único tipo abstracto de Java que tiene su propia constante literal conocida dentro de la sintaxis del lenguaje (la gramática). Por ello, una asignación como
String s = “cadena”;
Implica directamente la creación (new) de un objeto. Es similar a:
String s = new String(“cadena”);
Tiene multitud de funcionalidades útiles para control de subcadenas.
Para poder concatenar cadena se usa el operador ‘+’ que permite incluso convertir tipos de datos no String a cadenas.
Programación Orientada a Objetos en Java (XXXII)
Ejemplo: Desarrollar un programa para aclarar el concepto de variable estática (de clase) y no estática (de instancia).
package cursojava.estatic;
public class DeClaseDeInstancia
{
public static void main(String[] args)
{
Ayuda a1 = new Ayuda();
Ayuda a2 = new Ayuda();
Ayuda a3 = new Ayuda();
System.out.println(a1.deClase);
System.out.println(a1.deInstancia);
}
}
class Ayuda
{
public static int deClase;
public int deInstancia;
public Ayuda()
{
deClase++;
deInstancia++;
}
}
Programación Orientada a Objetos en Java (XXXIII)
Ejemplo: Desarrollar un programa para aclarar el paso de parámetros por valor y por referencia.
package cursojava.valref;
public class ValorYReferencia
{
public static void metodo(int valor)
{
valor++;
}
public static void metodo(Ayuda valor)
{
valor.valor++;
}
public static void main(String[] args)
{
int valor = 5;
metodo(valor);
System.out.println(valor);
Ayuda objeto = new Ayuda();
objeto.valor = 5;
metodo(objeto);
System.out.println(objeto.valor);
}
}
class Ayuda
{
public int valor = 0;
}
Programación Orientada a Objetos en Java (XXXIV)
Arrays en Java
Un array es un conjunto de datos del mismo tipo situados de forma consecutiva.
Las variables array en Java son referencias. Por tanto, los arrays son objetos y hay que crearlos.
tipo + [] + id + = + new + tipo + [ + cantidad + ] + ;
El new ha creado el objeto del array. 2 casos:
Tipos primitivos: Los datos del array se habrán creado también (ya que los tipos primitivos se crean directamente).
Tipos no primitivos (clases): Los datos son referencias a null y por tanto deben crearse a parte.
Programación Orientada a Objetos en Java (XXXV)
En la declaración se pueden poner los corchetes “[]”:
Después del tipo: Indica que TODOS los identificativos que se definan serán arrays.
tipo + [] + id …
Después del identificativo: Indica que ese identificativo será el único que es array.
tipo + id + [] + …
En Java no se permite indicar en la declaración del array el número de elementos del mismo.
tipo + [] + id + = + new + tipo + [ + cantidad + ] + ;
Los arrays en Java tienen índices entre 0 y cantidad – 1.
¿Qué pasa si me salgo de rango?
Programación Orientada a Objetos en Java (XXXVI)
La inicialización de los elementos de un array puede ser:
Elemento a elemento:
tipo[] id = new tipo[2];
id[0] = valor;
id[1] = valor;
Inicialización en declaración: Se usan llaves.
tipo[] id = {valor, valor};
La copia entre arrays no se puede realizar mediante la asignación (¿por qué?).
Existe un método java.lang.System.arrayCopy que ofrece el mayor rendimiento.
El tamaño de un array se puede conocer haciendo uso de un atributo llamado length que todo array en Java posee.
Programación Orientada a Objetos en Java (XXXVII)
Los arrays multidimensionales se declaran mediante el uso de [] consecutivos.
Realmente son referencias que contienen referencias (arrays dentro de arrays).
tipo[][] id = new tipo[cantidad1][cantidad2];
tipo[][] id = {{valor, valor}, {valor, valor}};
Para acceder a conocer el número de elementos de cada dimensión se usa el mismo atributo length pero desde referencias distintas.
id.length // Indica la cantidad1
id[indice].length // Indica la cantidad2
Programación Orientada a Objetos en Java (XXXVIII)
Entrada/Salida estándar.
java.lang.System.out es de tipo java.io.PrintStream que tiene los métodos necesarios para mostrar información por la salida estándar.
java.io.PrintStream.print()
java.io.PrintStream.println()
java.lang.System.in es de tipo java.io.InputStream que tiene métodos muy básicos de lectura de información desde la entrada estándar. Para leer información más elaborada (cadenas de caracteres) se suelen usar objetos del tipo java.io.BufferedReader.
new BufferedReader(new InputStreamReader(System.in))
Programación Orientada a Objetos en Java (XXXIX)
Excepciones (básico).
Las excepciones son una forma de control de flujo.
Se usan para indicar situaciones concretas en la ejecución del programa (errores, avisos, etc.)
Lanzamiento de excepciones:
Uso de la instrucción “throw” acompañando a un objeto (que es el que se lanza).
Programación Orientada a Objetos en Java (XXXX)
Gestión de excepciones
Bloque de código entre las instrucciones
try
{
}
catch(PARAMETRO)
{
}
Relanzamiento: El método puede indicar que no será él el encargado de capturar la excepción y transmite su gestión sucesivamente a los método que le llamaron. Se usa la palabra reservada “throws” acompañando al tipo de datos de la excepción al final de la definición del método.
tipo_retorno + identificativo + ( + [parámetro(s)] + ) + throws tipo_excepcion
Programación Orientada a Objetos en Java ()
Existen dos tipos de excepciones.
Excepciones en tiempo de ejecución (Runtime): Como son excepciones que pueden surgir en cualquier momento por errores en tiempo de ejecución, no es obligatoria su captura ni su relanzamiento.
Las demás excepciones: Se determina que el desarrollador querrá tener control (capturar o relanzar) este tipo de situaciones, por lo que son obligatorias.
Programación Orientada a Objetos en Java ()
Mapeo de tipos primitivos en tipos abstractos.
Java ofrece dentro del paquete java.lang un mapeo de lo tipos primitivos de datos en tipos abstractos (clases).
byte <-> Byte
char <-> Character
short <-> Short
int <-> Integer
float <-> Float
double <-> Double
Esta característica tiene multitud de utilidades. Una de las más peculiares es la posibilidad de construir valores primitivos desde valores de tipo cadena.
Programación Orientada a Objetos en Java ()
Ejercicio Propuesto: Desarrollar un programa (cursojava.param.Parametros) que presente por pantalla todos los parámetros que se le hayan pasado por línea de comandos.
Programación Orientada a Objetos en Java ()
Ejercicio Propuesto: Crear una clase llamada EntradaDatos dentro del paquete cursojava.util que permita leer de teclado valores de tipos de datos primitivos:
int: leerEntero
double: leerReal
char: leerCaracter
String: leerCadena
Realizar el control correspondiente mediante iteraciones sucesivas.
Programación Orientada a Objetos en Java ()
Ejercicio Propuesto: Desarrollar un programa (cursojava.euros.DesgloseCantidad) que pida al usuario que introduzca un valor entero en euros por teclado y desglose dicha cantidad en:
Billetes: 500?, 200?, 100?, 50?, 20?, 10?
Monedas: 2?, 1?
Visualizar cada cantidad por pantalla.
Página anterior | Volver al principio del trabajo | Página siguiente |