01 Programacion
01 Programacion
• Me acerco a la calle.
• Miro si vienen coches.
• Si vienen, espero. Vuelvo al paso 2.
• Si no vienen, cruzo.
1.2.-Programa: codificación del algoritmo en un lenguaje de programación, que es un idioma con el que podemos
dialogar y dar órdenes al ordenador. Tipos de lenguaje:
1.2.2.-Lenguaje ensamblador.
1.3.-Conceptos de programación:
1.3.1.-Variable: posición de memoria que contiene un dato, (caja donde meto cosas). Se escriben en minúsculas.
EJ. Ciudad, teléfono.
1.3.2.-Constante: posición en memoria que contiene un dato fijo (caja donde contenido no cambia). Se escriben
en mayúsculas. Ej. Meses, numero PI.
EJ. Programa que pide al usuario 2 números por teclado y muestra si son iguales o no.
Ej. Hacer diagrama de flujo que pida al usuario la base y la altura de un triángulo y muestre por pantalla el área.
Fin.
1.6.-JAVA: es un lenguaje de programación orientado a objetos, multiplataforma, desarrollado por SUN en 1995. Es
gratuito, sencillo y seguro. Tecnologías JAVA:
Para solucionar el problema se basaron en el lenguaje de programación OAK, lenguaje para programas
electrodomésticos.
1.6.1.-Tecnologías java:
Se copia en la carpeta java\bin y se compila: terminal --- javac [Link] --- java primero --- hola.
Para el nombre: primera letra en mayúscula, evitar espacios, acentos, símbolos.
Para almacenar:
Entero byte Carácter / letra char
short
Int
long
[Link].-Comentarios.
1.8.-Operadores:
1.8.2.-Lógicos: (menor que <) ( mayor que >) (igual ==) (distinto ¡=)
Int num1=5;
Int num2=2;
[Link](“el”+num1+”entre”+num2+”es igual a”)
1.-Programación estructurada.
1.1.-Tipos: secuencial, condicional, repetitiva.
1.2.-Condicional:
SINTAXIS EJEMPLO
switch (variable) { Int a=3;
case1 valor:sentencia; break; switch(a);{
default:sentencia; case1:[Link](“1”); break;
} case2:[Link](“3”); break;
case5:[Link](“5”); break;
default: [Link](“otros”);
}
Solo se puede usar una variable de una vez en JAVA, pero si se crea en el for, se pueden crear más, pero
después de usarse en el for desaparece. i lo usamos de contador.
EJERCICIO TRAZA
1 /* i j ac pantalla
2 Sacar la traza del siguiente bucle.
3 */ 0 1 0 0
4 package ejercicio7; 1 2 0 1
5 2 1 1 1
6 public class Ejercicio7 {
7 3 2 1
8 public static void main(String[] args) { 1
9
10 int i,j,ac; 4 1
11 i=0;
12 ac=0;
13
14 while (i<4) {
15 j=1;
16 while (j<2 && ac%2==0) {
17 ac=ac+i;
18 j++;
19 }
20 [Link](ac);
21 i++;
22 }
23 }
24 }
SINTAXIS EJEMPLO
While (num<0) { [Link](“escribe numero positivo”);
[Link](“escribe numero positivo”); num=[Link]();
num=[Link]();
} While (num<1 || num>10) {
[Link](“escribe numero”);
num=[Link]();
}
1.9.-Generación de números aleatorios: son muy importantes porque se usan mucho en juegos, simulaciones,
estadísticas…Es un número que se inventa el ordenador.
1 /* 21 b=[Link]();
2 Programa para pedir 3 numeros double y 22
3 calcular (a elev 3- raiz cuadrada de a*b) 23 [Link] ("introduce c: ");
4 entre 1 mas 4*c 24 c=[Link]();
5 */ 25
6 package ejercicio20; 26 if(b*b-4*a*c <0) {
7 import [Link]; 27 [Link] ("error, raiz negativa");
8 28 }
9 public class Ejercicio20 { 29 else if(a==0) {
10 30 [Link] ("error, division entre 0");
11 public static void main(String[] args) { 31 }
12 32 else {
13 Scanner teclado=new Scanner ([Link]); 33 resultado1=(-b+[Link](b*b-4*a*c))/(2*a);
14 34 resultado2=(-[Link](b*b-4*a*c))/(2*a);
15 double a, b, c, resultado1, resultado2; 35
16 36 [Link] ("el resultado para +b es: " +resultado1);
17 [Link] ("introduce a: "); 37 [Link] ("el resultado es para -b es: " +resultado2);
18 a=[Link](); 38 }
19 39 }
20 [Link] ("introduce b: "); 40 }
EJERCICIO TRAZA
1 /* 1 /* num cifras pantalla
2 Programa para pedir numeros hasta 2 Programa para pedir un numero y decir 5849 1
3 pulsar 0 y despues mostrar la suma. 3 cuantas cifras tiene.
4 */ 4 */ 584 2
5 package ejercicio16; 5 package ejercicio16; 58 3
6 import [Link]; 6 import [Link];
7 7 5 4 4
8 public class Ejercicio16 { 8 public class Ejercicio16 {
9 9
10 public static void main(String[] args) { 10 public static void main(String[] args) {
11 11 Num es mayor que 9,si.
12 Scanner teclado=new Scanner ([Link]); 12 Scanner teclado=new Scanner ([Link]); Divido num entre 10 y
13 13 int num, cifras, i;
14 int num=0, suma=0; 14 Lo almaceno en num,
15 15 [Link] ("introduce un numero: "); //pedimos numero Sumo 1 a cifras
16 [Link] ("introduce un numero: "); //pedir el numero 16 num=[Link](); //guardo el numero Y vuelvo al bucle.
17 num=[Link](); 17
18 18 cifras=1;
19 while (num!=0) { //mientras que el numero sea distinto de 0 19 while (num>9) {
20 suma=suma+num; //acumular..para sumar despues 20 num=num/10;
21 //si no se cumple pedir de nuevo num 21 cifras++;
22 [Link] ("introduce un numero: "); 22 }
23 num=[Link](); 23 [Link] ("el numero tiene: " +cifras+" cifras");
24 } 24 }
25 //finalizar mostrando la suma 25 }
26 [Link] ("la suma de los numeros es: "+suma);
27 }
28 }
1 /* 1 /* 1 /*
2 Programa que se invente una carta 2 Programa de pedir dos numeros, el primero entre 1 y 10 2 Programa de juego de adivinanza que el ordenador
3 de la baraja española. 3 y el segundo entre 50 y 100, validandolos y mostrar 3 se invente un numero entre 1 y 100 el jugador introduce
4 */ 4 los pares entre ambos. 4 numeros y el ordenador da pistas de mayor o menor
5 package ejercicio17; 5 */ 5 hasta acertar el jugador.
6 import [Link]; 6 package ejercicio18; 6 */
7 7 import [Link]; 7 package ejercicio19;
8 public class Ejercicio17 { 8 8 import [Link];
9 9 public class Ejercicio18 { 9 import [Link];
10 public static void main(String[] args) { 10 10
11 Random aleatorio=new Random(); 11 public static void main(String[] args) { 11 public class Ejercicio19 {
12 12 12
13 //se inventa un carta entre el 12 y el 1. 13 Scanner teclado=new Scanner ([Link]); 13 public static void main(String[] args) {
14 int carta=[Link](12)+1; 14 14
15 //se inventa un palo entre el 4 y el 1. 15 int num1=0, num2=0; 15 Scanner teclado=new Scanner ([Link]);
16 int palo=[Link](4)+1; 16 16 Random aleatorio=new Random();
17 17 [Link] ("introduce un numero 1: "); 17
18 switch (carta) { 18 num1=[Link](); 18 //creo el aleatorio
19 case 1://para el caso de ser 1 19 //validamos el numero 1. 19 int secreto=[Link](100)+1;
20 [Link]("As de "); break; 20 while (num1<=1 || num1>=10) { 20 int num;
21 case 10://para el caso de ser 10 21 [Link] ("introduce un numero 1: "); 21
22 [Link]("Sota de "); break; 22 num1=[Link](); 22 //lo muestro...ocultar
23 case 11://para el caso de ser 11 23 } 23 [Link] (secreto);
24 [Link]("caballo de "); break; 24 24
25 case 12://para el caso de ser 12 25 [Link] ("introduce un numero 2: "); 25 [Link] ("introduce un numero del 1 al 100: ");
26 [Link]("Rey de "); break; 26 num2=[Link](); 26 num=[Link]();
27 default: 27 //validamos el numero 2. 27
28 [Link](carta+" de "); //y si no... 28 while (num2<=50 || num2>=100) { 28 while (secreto!=num) { //condiciones....
29 } 29 [Link] ("introduce un numero 2: "); 29
30 switch (palo) { 30 num2=[Link](); 30 if (secreto<num) {
31 case 1://para el caso de ser 1 31 } 31 [Link] ("introduce un numero menor: ");
32 [Link]("oros "); break; 32 32 num=[Link]();
33 case 2://para el caso de ser 2 33 //bucle para sacar los pares entre ambos 33 }
34 [Link]("copas "); break; 34 for (num1=num1; num1<=num2; num1++) { 34
35 case 3://para el caso de ser 3 35 if (num1%2==0) 35 else if (secreto>num) {
36 [Link]("espadas "); break; 36 [Link] (" "+num1); 36 [Link] ("introduce un numero mayor: ");
37 case 4://para el caso de ser 4 37 } 37 num=[Link]();
38 [Link]("bastos "); break; 38 } 38 }
39 } 39 } 39 }
40 } 40 [Link] ("¡acertaste!");
41 } 41 }
42 }
1 /* 1 /*
2 Programa que imprime una linea de asteriscos 2 Programa que imprime una figura de asteriscos
3 que marque el usuario por teclado 3 que marque el usuario por teclado
4 */ 4 */
5 package ejercicio23; 5 package ejercicio23;
6 import [Link]; 6 import [Link];
7 7
8 public class Ejercicio23 { 8 public class Ejercicio23 {
9 9
10 public static void main(String[] args) { 10 public static void main(String[] args) {
11 11
12 Scanner teclado=new Scanner ([Link]); 12 Scanner teclado=new Scanner ([Link]);
13 13
14 int longitud, i; 14 int longitud, i, j;
15 15
16 [Link] ("dame una longitud: "); 16 [Link] ("dame una longitud: ");
17 longitud=[Link](); 17 longitud=[Link]();
18 18
19 for (i=0; i<longitud;i++) { //i recorre las filas 19 for (i=0; i<longitud;i++) { //i recorre las filas
20 [Link] (" * "); //imprimo linea 20
21 } 21 for (j=0; j<longitud-i; j++) { //j recorre las columnas
22 } 22 [Link] (" * ");
23 } 23 }
24
25 [Link] (); //hago salto de linea
* * * * * 26 }
27 //otro tipo de dibujo
* * * * 28 for (i=0; i<longitud;i++) { // muestro espacios
29
* * * 30
31
for (j=0; j<longitud; j++) { //muestro *
[Link] (" ");
* * 32
33
}
for (j=longitud-i-1; j<longitud; j++) {
* 34
35 }
[Link] (" * ");
36 [Link] ();
37 }
38 }
39 }
1.11.-Variables alfanuméricas: cadenas de texto, el tipo de texto en Java es una clase, por lo que dispone de tareas ya
programadas. Se usa String-----variable de tipo cadena.
String nombre1=”juan”;
String nombre2=”luis”;
If ([Link](nombre2));
1 /* 16
2 Programa pide dos nombres y 17 [Link] ("dime un nombre: ");
3 dice si son iguales o no 18 nombre1=[Link]();
4 */ 19
5 package ejercicio24; 20 [Link] ("dime otro nombre: ");
6 import [Link]; 21 nombre2=[Link]();
7 22
8 public class Ejercicio24 { 23 if ([Link](nombre2)) {
9 24 [Link] ("son nombres iguales");
10 public static void main(String[] args) { 25 }
11 26 else {
12 Scanner teclado=new Scanner ([Link]); 27 [Link] ("no son nombres iguales");
13 28 }
14 String nombre1=""; 29 }
15 String nombre2=""; 30 }
1.11.3.-Operaciones típicas:
Sacar letra por letra Char letra=[Link](); Saca letra de posición que indiquemos en ()
Sumar cadenas String nueva=ciudad+”azul”; Almacena en nueva=ciudad azul.
Saber si empieza por letra If ([Link](“ma”)) {
Saber si acaba por letra If ([Link](“ma”)) {
Si hay letra en posición empezando principio Int pos=[Link](“d”); Madrid, devuelve 2 a la variable pos.
Si hay letra en posición empezando final Int pos=[Link](“m”); Madrid, devuelve 5 a la variable pos.
Saber número caracteres cadena Int longitud=[Link](); Madrid, devuelve 5 a la variable longitud
String animal=”gato”; Busca la o y la cambia por la a,
Cambiar caracteres
Strin c=[Link](‘o’,’a’); Almacena gata en la variable c.
Remplazar varias letras String c=[Link](“to”,”tito”); Remplaza gato por gatito y lo almacena en c.
Pasar a mayúsculas String m=[Link](); Almacena MADRID en m.
Pasar a minúsculas String m=[Link](); Almacena madrid en m.
String d=” poble llueve “ Quita espacios, “ponfe llueve”
Quitar espacios laterales
String c=[Link]();
1.12.-Uso del depurador: permite ejecutar el programa paso a paso, como hacer la traza pero en el ordenador.
• Primero se pone un punto de partida (breakpoint) y luego se ejecuta. Se puede ver la ejecución del programa
en tiempo real.
• Los errores en tiempo de programación tienen solución porque el compilador nos avisa:falta un ; falta un {.
• Los errores en tiempo de ejecución son más difíciles de controlar, una excepción es un error en tiempo de
ejecución, es decir mientras el programa está funcionando.
Try {
Opción para controlar código //código a controlar
}
Catch (tipo de expresion) { Ponemos los catch que queramos
//código a controlar
}
Finally { Se puede poner al final, se ejecuta haya fallos o no
}
Con try y catch el programa no falla y avisa al usuario que está haciendo mal. Errores hay muchos, pero el
general se llama excepción y siempre debemos ponerlo al final.
catch (Excepcion e) {
[Link] (“error desconocido”);
}
1.12.1.-Que controlar con un try: operaciones de entrada y salida (E/S), teclado, (ficheros, BBDD, Net) estas
obligatorias. Operaciones matemáticas.
Ejercicios:
1 /* 22 num2=[Link]();
2 Pedir 3 numeros positiovos y compruebe que son iguales 23
3 si la entrada fuese 5 5 5 la salida será hay 3 numeros iguales a 5 24 [Link] ("introduzca el tercer numero 3: ");
4 si la entrada fuese 4 6 4, hay dos numeros iguales a 4 25 num3=[Link]();
5 si la entrada fuese 0 1 2, no hay numeros iguales. 26
6 */ 27 if (num1!=num2 && num1!=num3 && num2!=num3) {
7 package ejercicio26; 28 [Link] ("no hay numeros iguales");
8 import [Link]; 29 }
9 30 else if (num1==num2 && num2==num3) {
10 public class Ejercicio26 { 31 [Link] ("hay tres numeros iguales a: " +num1);
11 32 }
12 public static void main(String[] args) { 33 else if (num1==num2) {
13 34 [Link] ("hay dos numeros iguales a: " +num1);
14 Scanner teclado=new Scanner ([Link]); 35 }
15 36 else if (num1==num3) {
16 int num1, num2, num3; 37 [Link] ("hay dos numeros iguales a: " +num1);
17 38 }
18 [Link] ("introduzca el primer numero 1: "); 39 else {
19 num1=[Link](); 40 [Link] ("hay dos numeros iguales");
20 41 }
21 [Link] ("introduzca el segundo numero 2: "); 42 }
43 }
Hasta ahora teníamos que para poder guardar un dato usábamos una variable. Las estructuras que vamos a ver se
almacenan en la RAM (memoria volátil).
-variable –arrays –listas –pilas –colas –grafos –arboles.
1.-Arrays.
Los arrays son conjuntos homogéneos de datos identificados por un nombre y diferenciados por un índice. Pueden
tener varias dimensiones:
Tienen que ser homogéneos, si en un Array se meten números enteros no se pueden meter ni decimales ni letras.
1.1.-Vectores: (unidimensionales).
Nombre ………. nombre [posición]
0 1 2 3 4 5 6 Índice Se almacena la i
v[0]=8;
int v[ ]={8,4,7}; v[1]=4; v= 8 4 7
v[2]=7;
0 1 2
v[0]=”soria”;
final int N=4; v[1]=”león”;
v= soria león madrid vigo
String v[ ]=new String[ ]; v[2]=”Madrid”;
v[3]=”vigo”;
0 1 2 3
//defino el recorrido del vector //defino el recorrido del vector por toda su longitud
for (i=0;i<N;i++) { for (i=0;i<[Link];i++) {
//i recorre el vector y coge valores //i recorre el vector y coge valores
v[i]=0; v[i]=0;
} }
[Link] (v[i]); //imprime el vector [Link] (v[i]); //imprime el vector
1 /* 17 int i;
2 Crear vector para 5 numeros enteros, pedir 5 18
3 numeros y cargarlos en el vector. mostrar el 19 //mete en v los numeros pedidos por teclado
4 vector, ponerlo a -1 y mostrarlo otra vez. 20 for (i=0;i<N;i++) {
5 */ 21 [Link] ("introduce 5 numeros: ");
6 package ejercicio31; 22 v[i]=[Link]();;
7 import [Link]; 23 }
8 24 //recorre v y lo imprime
9 public class Ejercicio31 { 25 for (i=0;i<N;i++) {
10 26 [Link] (v[i]);
11 public static void main(String[] args) { 27 }
12 28 //pone el valor de v a -1
13 Scanner teclado=new Scanner ([Link]); 29 for (i=0;i<N;i++) {
14 30 v[i]=-1;
15 final int N=5; 31 [Link] (v[i]);
16 int v[]=new int [N]; 32 }
33 }
34 }
1 /* 1 /* 1 /*
2 crear array int tamaño 10 y cargarlo de: 2 Pedir las notas de 5 alumnos por teclado, despues 2 Cargar dos vectores de 3 numeros cada
3 los numeros del 1 al 10, todo 5 3 mostrarlar y ademas indicar la mayor, menor 3 uno de ellos. despues calcular el vector
4 los pares del 10 al 30 4 y media. Mostrar el resultado con formato. 4 suma. Despues comparar los vectores.
5 aleatorios entre 1 y 6, y entre 100 y 150 5 */ 5 */
6 */ 6 package ejercicio36; 6 package ejercicio38;
7 package ejercicio35; 7 7 import [Link];
8 import [Link]; 8 import [Link]; 8
9 import [Link]; 9 9 public class Ejercicio38 {
10 10 public class Ejercicio36 { 10
11 public class Ejercicio35 { 11 11 public static void main(String[] args) {
12 12 public static void main(String[] args) { 12
13 public static void main(String[] args) { 13 13 Scanner teclado=new Scanner ([Link]);
14 14 Scanner teclado=new Scanner ([Link]); 14
15 Scanner teclado=new Scanner ([Link]); 15 15 final int N=3;
16 Random aleatorio=new Random(); 16 final int N=5; 16 int v1[]=new int [N];
17 17 double v[]=new double [N]; 17 int v2[]=new int [N];
18 final int N=10; 18 int i; 18 int suma[]=new int [N];
19 final int M=30; 19 double suma=0, mayor, menor; 19 int i;
20 int i=0; 20 20
21 int num=10; 21 //para calcular el valor mayor de un array 21 for (i=0;i<N;i++) { //recorrido para vector
22 22 mayor=Double.MIN_VALUE; 22 [Link] ("introduce 3 num para vector 1: ");
23 int t[]=new int [N]; //cargo del 1 al 10 23 //para calcular el valor menor de un array 23 v1[i]=[Link](); //datos van al vector
24 for (i=0;i<N;i++) { 24 menor=Double.MAX_VALUE; 24 }
25 t[i]=i+1; 25 25 for (i=0;i<N;i++) { //recorrido para vector
26 } 26 for (i=0;i<N;i++) { //defino el recorrido 26 [Link] ("introduce 3 num para vector 2: ");
27 for (i=0;i<N;i++) { 27 [Link] ("introduce 5 notas: "); 27 v2[i]=[Link](); //datos van al vector
28 [Link](t[i]+" "); 28 v[i]=[Link](); //mete el num. en v[i] 28 }
29 } 29 } 29 for (i=0;i<N;i++) {
30 [Link](); 30 30 suma[i]=v1[i]+v2[i];
31 31 for (i=0;i<N;i++) { 31 }
32 for (i=0;i<N;i++) { //todo a 5 32 [Link] (" "+v[i]); 32 for (i=0;i<N;i++) {
33 t[i]=5; 33 } 33 [Link] ("la suma es: "+suma[i]);
34 [Link](t[i]+" "); 34 [Link] (); 34 }
35 } 35 35 //bucle que recorre pero no hace nada.
36 [Link](); 36 for (i=0;i<N;i++){ //para la media de notas 36 //va comparando el contenido de los vectores
37 37 suma=suma+v[i]; 37 for (i=0;i<N && v1[i]==v2[i];i++) {
38 int u[]=new int [M]; //pares del 10 al 30 38 38 }
39 for (i=10;i<M;i++) { 39 for (i=0;i<N;i++) { //el bucle recorre el array 39 if (i==N){ //si la i llega a N, al final...todo coincide...
40 u[i]=i+1; 40 suma=suma+v[i]; 40 [Link] ("los vectores son iguales");
41 if (u[i]%2==0) { 41 if (v[i]>mayor) { //si el valor de v es mayor 41 }
42 [Link](u[i]+" "); 42 mayor=v[i]; //lo mete en mayor 42 else {
43 } 43 } 43 [Link] ("los vectores no son iguales");
44 } 44 if (v[i]<menor) { //si el valor de v es menor 44 }
45 [Link](); 45 menor=v[i]; //lo mete en menor 45 }
46 46 } 46 }
47 int v[]=new int [N]; //aleatorio del 1 al 6 47 }
48 for (i=0;i<N;i++) { 48 [Link] ();
49 v[i]=[Link](6)+1; 49 [Link] ("la nota mayor es= "+mayor);
50 [Link](v[i]+" "); 50 [Link] ("la menor es= "+menor);
51 } 51 [Link] ("la media es= "+(suma/N));
52 [Link](); 52 }
53 53 }
54 int x[]=new int [N]; //aleatorio del 100 al 150 54 }
55 for (i=0;i<N;i++) {
56 x[i]=[Link](150-100+1)+100;
57 [Link](x[i]+" ");
58 }
59 }
60 }
1 /* 28 for (i=0;i<N;i++){
2 Programa quiniela de futbol el programa pide 29 int n=[Link](3)+1; //se inventa numeros entre el 3 y el 1.
3 15 resultados que almacenaremos en un vector. 30 switch(n) {
4 después el ordenador se inventa una quiniela 31 case 1: resultado[i]="1"; break; //para el caso de ser 1 dibuja una 1
5 de resultados (en otro vector) y muestra los aciertos. 32 case 2: resultado[i]="2"; break; //para el caso de ser 2 dibuja una 2
6 */ 33 case 3: resultado[i]="x"; break; //para el caso de ser 3 dibuja una x
7 package ejercicio39; 34 }
8 import [Link]; 35 }
9 import [Link]; 36 [Link]("quiniela: ");// imprime la quiniela
10 37 for (i=0;i<N;i++) {
11 public class Ejercicio39 { 38 [Link] (quiniela[i]+" ");
12 39 }
13 public static void main(String[] args) { 40 [Link](); //salto de linea
14 41 [Link]("resultado: "); //imprime el resultado
15 Scanner teclado=new Scanner ([Link]); 42
16 Random aleatorio=new Random(); 43 for (i=0;i<N;i++) { //defino el recorrido
17 44 [Link](resultado[i]+" "); //mensaje pantalla
18 final int N=15; 45 }
19 String quiniela[]=new String [15]; //creo el vector de quiniela que meto 46 for (i=0;i<N;i++) { //defino el recorrido
20 String resultado[]=new String [15]; //creo vector que se inventa 47 if (resultado[i].equals(quiniela[i])){ //comparo los dos vectores
21 int contador=0; 48 contador++; //uso contador para que vaya contando aciertos
22 int i; 49 }
23 50 }
24 for (i=0;i<N;i++) { //defino el recorrido 51 [Link](); //salto de linea
25 [Link] ("resultado partido: "); //mensaje pantalla 52 [Link] ("los aciertos son " +contador);
26 quiniela[i]=[Link]();//mete el numero en quiniela[i] 53 }
27 } 54 }
Existen varias técnicas: burbuja, burbuja mejorado, selección, inserción, montones, QuickSort.
1.1.4.-Creación de menus.
1 /* 28 for (i=0;i<N;i++){
2 Crear una agenda con arrays. 44 case 2: //consulta
3 */ 45 [Link] ("introduce un nombre: ");
4 package ejercicio42; 46 String nombre=[Link](); //creo variable para pedir nombre
5 import [Link]; 47 for (i=0;i<pos && !agenda[i].equals(nombre);i++); //si no agenda de i = nombre
6 48 if (i==pos) { //tambien vale agenda[i].equals(nombre)==false;
7 public class Ejercicio42 { 49 [Link] ("no existe");
8 50 }
9 public static void main(String[] args) { 51 else {
10 52 [Link] ("existe en la posicion: "+i);
11 Scanner teclado=new Scanner ([Link]); 53 }
12 54 break;
13 int opcion=-1; 55
14 int pos=0; 56 case 3: //listado
15 int i; 57 [Link] ("LISTADO DE LA AGENDA");
16 final int N=10; 58 for (i=0;i<pos;i++) //creo pos para que recorra hasta donde hay datos
17 String agenda[]=new String[N]; 59 [Link] (agenda[i]+" ");
18 60 [Link] (); //hace recorrido por bucle y saca lo que hay en el
19 while(opcion!=5) { 61 break;
20 [Link]("==MENU=="); 62
21 [Link]("1. alta"); 63 case 4: //modificar
22 [Link]("2. consulta"); 64 [Link] ("introduce un nombre: ");
23 [Link]("3. listado"); 65 nombre=[Link](); //pedir nombre
24 [Link]("4. modificar"); 66 for (i=0;i<pos && !agenda[i].equals(nombre);i++); //si no agenda de i = nombre
25 [Link]("5. salir"); 67 if (i==pos) { //tambien vale agenda[i].equals(nombre)==false;
26 [Link](); 68 [Link] ("no existe");
27 69 }
28 [Link] ("elige una opcion: "); 70 else {
29 opcion=[Link](); 71 [Link] ("dame nuevo nombre: ");
30 String tmp=[Link](); 72 String nom=[Link](); //creo variable para poner en v. nuevo nombre
31 73 agenda[i]=nom; //mete en vector variable nom
32 switch (opcion) { 74 }
33 case 1: //alta 75 } //cierro el for
34 if (pos==N){ //control de capacidad de la agenda 76 } //cierro el while
35 [Link] ("agenda llena!!"); 77 }
36 } 78 }
37 else {
38 [Link] ("dame un nombre: ");
39 agenda[pos]=[Link](); //pide nombre a meter en agenda
40 pos++;
41 }
42 break;
43
1.1.5.-Conversión de datos:
Conversión--casting
int n=5; doublé a=(double)n; Pasa n a double y lo guarda en a.
doublé c=4.7; int p=(double)n; Pasa c a entero y lo guarda en p.
CONVERTIR DE CADENA A NUMERO
String num=”483”; Int n=[Link](num); Pasa el “483” texto a n como número.
String num=”15.84”; double n=[Link](num); Pasa “15.84” texto a n como número.
CONVERTIR DE NUMERO A CADENA
Int num=84; String num=[Link](n); Pasa el numero 84 a num como texto “84”.
double n=5.3; String num=[Link](n); Pasa el numero 5.3 a num como texto “5.3”.
1.1.7.-Busqueda binaria: búsqueda en vectores. Es necesario que el vector esté ordenado, parte el vector en
mitades y va buscando hasta encontrar el dato.
1.1.8.-Operaciones con vectores: (ya programados) . Solo para arrays de una dimensión.
BUSQUEDA BINARIA
Saca -1 si no lo encuentra o
Int pos=[Link](v,5); La posición del dato si lo encuentra.
V=vector. 5=dato a buscar
1 /*
2 Crear vector de tamaño 10. pedir numeros entre
3 0 y 9 (validarlos) hasta que el usuario meta -1. mostrar
4 cuantas veces ha introucido cada numero.
5 */
6 package ejercicio48;
7 import [Link];
8 import [Link];
9
10 public class Ejercicio48 {
11
12 public static void main(String[] args) {
13
14 Scanner teclado=new Scanner ([Link]);
15
16 final int N=10;
17 int v1[]=new int [N];
18 [Link](v1,0); //cargo el vector de 0
19 int num=0,i;
20
21 [Link]("introduzca numero entre 0 y 9: "); //validacion
22 num=[Link]();
23 while(num<-1 || num>9) { //validacion
24 [Link]("introduzca numero entre 0 y 9: ");
25 num=[Link]();
26 }
27
28 while (num!=-1) { //mientras que no sea -1
29 v1[num]++; ////mete el numero en la casilla que le corresponde
30
31 [Link]("introduzca numero entre 0 y 9: "); //validacion
32 num=[Link]();
33 while(num<-1 || num>9) { //validacion
34 [Link]("introduzca numero entre 0 y 9: ");
35 num=[Link]();
36 }
37 }
38 for (i=0;i<[Link];i++) { //resultados en pantalla
39 [Link]("numero "+i+" se escribió: "+v1[i]+"");
40 }
41 }
42 }
1 /* 1 /*
2 Crear una tabla 3x2, cargarla por teclado, 2 Dada una tabla, cargarla a mano, de 3x4,
3 mostrarla. Mostrar valores de las filas pares. 3 mostrar la suma de cada fila, cuantos
4 */ 4 numeros pares tiene y cual el mayor.
5 package ejercicio50; 5 */
6 import [Link]; 6 package ejercicio51;
7 7
8 public class Ejercicio50 { 8 public class Ejercicio51 {
9 9
10 public static void main(String[] args) { 10 public static void main(String[] args) {
11 11
12 Scanner teclado=new Scanner ([Link]); 12 final int FIL=3;
13 13 final int COL=4;
14 final int FIL=3; 14 int tabla[][]={{1,4,5,2},{3,8,7,7},{9,5,2,1},};
15 final int COL=2; 15 int i,j,sumafila=0;
16 int tabla[][]=new int [FIL] [COL]; 16 int mayor=Integer.MIN_VALUE;
17 int i,j; 17 int pares=0;
18 18
19 //buble para pedir datos de tabla 19 //buble para recorrido de tabla
20 for (i=0;i<FIL;i++) { //hago recorrido por las filas 20 for (i=0;i<FIL;i++){ //hago recorrido por las filas
21 for (j=0;j<COL;j++) { //recorrido por las columnas 21 sumafila=0;
22 [Link]("introduce num de fila: "); 22 for (j=0;j<COL;j++){ //recorrido por las columnas
23 tabla[i][j]=[Link](); 23 [Link](tabla[i][j]+" ");
24 } 24 }
25 [Link](); 25 [Link]();
26 } 26 for (j=0;j<COL;j++){ //hago recorrido por las columnas
27 //buble para visualizar datos de tabla 27 if (tabla[i][j]>mayor){ //para el numero mayor
28 for (i=0;i<FIL;i++) { //hago recorrido por las filas 28 mayor=(tabla[i][j]);
29 for (j=0;j<COL;j++) { //recorrido por las columnas 29 }
30 [Link](tabla[i][j]+" "); 30 if (tabla[i][j]%2==0){ //para los numertos pares
31 } 31 pares++; //contador de pares
32 [Link](); 32 }
33 } 33 sumafila=sumafila+tabla[i][j]; //suma de los numeros de la fila
34 [Link](); 34 }
35 //bucle para visualizar las filas pares 35 [Link] ("la suma de la fila es: "+sumafila); //salida de datos de las sumas
36 for (i=0;i<FIL;i++) { //hago recorrido por las filas 36 }
37 for (j=0;j<COL;j++) { //recorrido por las columnas 37 [Link] ("el numero mayor: "+mayor); //salida de numero mayor
38 if (i%2==0) { 38 [Link] ("los numeros pares son: "+pares); //salida de numero pares
39 [Link](tabla[i][j]+" "); 39 }
40 } 40 }
41 }
42 [Link]();
43 }
44 }
45 }
1 /* 1 /*
2 Dadas dos tablas hacer la suma. 2 Dado este array [6,7,8,9,10] cargarlo de forma
3 */ 3 repetida por filas en una tabla de 4x5.
4 package ejercicio54; 4 */
5 5 package ejercicio55;
6 public class Ejercicio54 { 6
7 7 public class Ejercicio55 {
8 public static void main(String[] args) { 8
9 9 public static void main(String[] args) {
10 final int FIL=2; 10
11 final int COL=3; 11 int v[]={6,7,8,9,10};
12 int tabla[][]={{1,0,3},{5,8,4},}; 12 final int FIL=4;
13 int tabla1[][]={{9,1,1},{3,8,7},}; 13 final int COL=5;
14 int resultado[][]=new int[FIL] [COL]; 14 int tabla[][]=new int [FIL] [COL];
15 int i,j; 15 int i,j;
16 16
17 for (i=0;i<FIL;i++){ //hago recorrido por las filas 17 //buble para pedir datos de tabla
18 for (j=0;j<COL;j++){ //recorrido por las columnas 18 for (i=0;i<FIL;i++){ //hago recorrido por las filas
19 [Link](tabla[i][j]+" "); //saco por pantalla la tabla 19 for (j=0;j<COL;j++){ //recorrido por las columnas
20 } 20 tabla[i][j]=v[j]; //rellena la fila de la tabla con los valores de v
21 [Link](); 21 [Link]( tabla[i][j]+" "); //saco por pantalla la tabla
22 } 22 }
23 [Link](); 23 [Link]();
24 24 }
25 for (i=0;i<FIL;i++){ //hago recorrido por las filas 25 }
26 for (j=0;j<COL;j++){ //recorrido por las columnas 26 }
27 [Link](tabla1[i][j]+" "); //saco por pantalla la tabla
28 }
29 [Link]();
30 }
31 [Link]();
32
33 for (i=0;i<FIL;i++){ //hago recorrido por las filas
34 for (j=0;j<COL;j++){ //recorrido por las columnas
35 resultado[i][j]=tabla[i][j]+tabla1[i][j];//suma de las tablas
36 [Link]( resultado[i][j]+" "); //saco por pantalla la suma
37 }
38 [Link]();
39 }
40 }
41 }
1.3.-Cubos: (tridimensionales).
public static void main(String[] args) {
1 /* 1 /*
2 Cargar un array con palabras, mostrarlas por pantalla, 2 Dada una tabla, pedir por teclado continuamente
3 indicando cuantas letras tiene cada palabra y 3 referencias de articulos hasta que el susuario
4 cuantas hay en total. 4 introduzca -1, al final mostar la suma toral de precios.
5 */ 5 */
6 package ejercicio58; 6 package ejercicio59;
7 7
8 public class Ejercicio58 { 8 import [Link];
9 9
10 public static void main(String[] args) { 10 public class Ejercicio59 {
11 11
12 final int N=4; 12 public static void main(String[] args) {
13 String palabras[]={"perro","gato","pajaro","avion"}; 13
14 int i; 14 Scanner teclado=new Scanner([Link]);
15 int contador=0; 15
16 int suma=0; 16 final int FIL=2;
17 17 final int COL=6;
18 for (i=0;i<[Link];i++) { 18 int articulos[][]={{1015,1028,1037,1053,1002,1097},{10,15,8,3,5,7},};
19 contador=0; 19 int ref=0;
20 int longitud=palabras[i].length(); 20 int sumaref=0;
21 contador++; 21 int i;
22 [Link]("el numero de letras de "+palabras[i]+" es: "+longitud); 22
23 } 23 while (ref!=-1) { //validacion
24 [Link](); 24 [Link]("introduzca numero de referencia (-1 para salir): ");
25 25 ref=[Link]();
26 for (i=0;i<[Link];i++) { 26
27 27 //bucle busqueda de la referencia en fila 0 y valor i
28 int longitud=palabras[i].length(); 28 for (i=0;i<COL && articulos[0][i]!=ref;i++);
29 suma=suma+longitud; 29
30 } 30 //si valor de i llega al final de la tabla...no encuentra el valor..
31 [Link]("el numero de letras "+suma); 31 if (i==COL) {
32 [Link](); 32 [Link]("la referencia no existe");
33 } 33 }
34 } 34 else { //si lo encuentra....
35 //suma de los numeros de fila 1 y valor de i
36 sumaref=sumaref+articulos[1][i];
37 }
38 }
39 [Link]("la suma de los articulos es: "+sumaref);
40 }
41 }
2.-Procedimientos y funciones.
El objetivo es dividir el programa en partes más pequeñas. No hay que plantear el problema en bloque. Se
descompone y posteriormente se une todo.
Se usa para programar más fácil, programar en equipo, reutilizar el código para otros proyectos y evitar errores.
2.1.-Procedimientos: fragmento de código que realiza una tarea muy concreta, aproximadamente 20-30 lineas de
código. Puede recibir parámetros.
public class Ejercicio61 { public static void main(String[] args) { public static void main(String[] args) {
dibuja('*'); dibuja('*',10);
public static void main(String[] args) { }//cierro el main dibuja('@',10);
saluda(); }//cierro el main
}//cierro el main public static void dibuja(char simbolo) {
int i; public static void dibuja(char simbolo, int longitud) {
public static void saluda() { for (i=0;i<longitud;i++) { int i;
[Link]("hola"); [Link](simbolo); for (i=0;i<longitud;i++) {
}//cierro el saluda } [Link](simbolo);
} }//cierro el dibuja }
} [Link]();
}//cierro el dibuja
}
1 /* 1 /*
2 Crear un procedimiento que recibe dos numeros 2 Programa que diseña un procedimiento llamado dibuja_linea
3 entereos y que haga la suma, resta 3 que recibe un numero entero y un caracter.
4 y multiplicación. 4 Dibujará una linea de longitud indicada en el caracter pasado.
5 */ 5 Crear otro procedimiento dibuja_cuadrado que utilize el
6 package ejercicio62; 6 procedimiento anterior para dibujar un cuadrado de 10 arrobas.
7 7 */
8 public class Ejercicio62 { 8 package ejercicio63;
9 9
10 public static void main(String[] args) { 10 public class Ejercicio63 {
11 11
12 opera(5,8,'+'); //nombre, valores, operacion 12 public static void main(String[] args) {
13 opera(5,8,'-'); //nombre, valores, operacion 13
14 opera(5,8,'*'); //nombre, valores, operacion 14 dibuja_linea(10,'@'); //parametros longitud y simbolo
15 }//cierro el main 15 [Link]();
16 16 dibuja_cuadrado(10,'@'); //parametros longitud y simbolo
17 //hago el opera para llamarlo en el void de arriba 17 }
18 public static void opera(int n1, int n2, char operacion) { 18 public static void dibuja_linea(int longitud,char simbolo) {
19 if (operacion=='+') { 19 int i;
20 [Link](n1+n2); 20 for (i=0;i<longitud;i++) {
21 } 21 [Link](simbolo);
22 else if (operacion=='-') { 22 }
23 [Link](n1-n2); 23 [Link]();
24 } 24 }
25 else if (operacion=='*') { 25 public static void dibuja_cuadrado(int longitud, char simbolo) {
26 [Link](n1*n2); 26 int i;
27 }//cierro el dibuja 27 for (i=0;i<longitud;i++) {
28 } 28 dibuja_linea(longitud, simbolo); //dibuja linea con parametros
29 } 29 }
30 }
31 }
[Link].-Locales: variables que se crean dentro de un procedimiento y solo son accesibles en ese
procedimiento.
[Link].-Globales: variables que se crean fuera del procedimiento y son accesibles por cualquier
procedimiento.
public class Ejercicio { public class Ejercicio {
static int c=4;
public static void main(String[] args) { public static void main(String[] args) {
int i; int a=5;
[Link](a); [Link](a);
procedimiento1(); procedimiento1();
[Link](a); [Link](c);
} }
public static void procedimiento1() { public static void procedimiento1() {
int i; int a=7;
[Link](a); [Link](a);
a++; a++; //vale 7+1=8
[Link](a); c--; //vale 4-1=3
} [Link](a);
} }
}
Sale por pantalla 5,7,8,5 Sale por pantalla 5,7,8,3,7,5
Un procedimiento busca la variable en sus variables locales, si no existe busca en las globales, y si no
existe, falla. Los parámetros son variables locales.
static int a=9; public static void main(String[] args) { public static void main(String[] args) {
En Java todo se pasa por valor, salvo los arrays y los objetos que se pasan por referencia. Crear un duplicado
de un Array en memoria consume mucho espacio.
int v[]={5,6};
int c=4;
p1(c);
p2(v,c);
}
public static void p1(int c) {
//codigo
}
public static void p2(int v[], int c) {
//codigo
}
}
2.1.4.-¿Que es una librería?: un conjunto de procedimientos y funciones agrupadas en un fichero para utilizarlos
cuando sea necesario. Existen multiples librerías ya programadas y disponibles.
1 /* 1 /*
2 Procedimiento que recibe un vector de numeros 2 Programa que cargue un array con 10
3 y muestra el mayor y la media. 3 numeros aleatorios entre 1 y 20.
4 */ 4 Lo muestre en pantalla. lo ordene.
5 package ejercicio66; 5 Lo muestre por pantalla. lo rellene de 0.
6 6 Lo muestre por pantalla.
7 public class Ejercicio66 { 7 Hacer diagrama de modulos.
8 8 */
9 public static void main(String[] args) { 9 package ejercicio67;
10 10
11 int w[]={1,2,3,4,5,6,7}; 11 import [Link];
12 elmayor(w); 12 import [Link];
13 lamedia(w); 13
14 } 14 public class Ejercicio67 {
15 public static void elmayor( int v[]) { //el mayor del vector 15
16 16 public static void main(String[] args) {
17 int mayor=Integer.MIN_VALUE; 17 //creacion del vector
18 int i; 18 final int N=10;
19 19 int v[]=new int[N];
20 for (i=0;i<[Link];i++) { //recorre el vector y muestra el mayor 20
21 if (v[i]>mayor){ 21 cargar(v);
22 mayor=v[i]; 22 mostrar(v);
23 } 23 ordenar(v);
24 } 24 mostrar(v);
25 [Link]("el mayor es: "+mayor); 25 rellenar(v);
26 } 26 [Link]();
27 public static void lamedia( int v[]) { //la media del vector 27 mostrar(v);
28 28 }
29 int suma=0; 29 public static void cargar(int v[]) {
30 int i; 30
31 31 Random aleatorio=new Random();
32 for (i=0;i<[Link];i++) { 32 int i;
33 suma=suma+v[i]; //suma = suma mas numeros del vector 33 //creo los aleatorios
34 } 34 for (i=0;i<[Link];i++) {
35 //suma entre la longitud del vector 35 v[i]=[Link](10)+1;
36 [Link]("la media es: "+suma/[Link]); 36 }
37 } 37 }
38 } 38 public static void mostrar(int v[]) {
39
40 int i;
41 //muestro los aleatorios
42 for (i=0;i<[Link];i++) {
43 [Link](v[i]+" ");
44 }
45 }
46 public static void ordenar(int v[]) {
47
48 [Link](v);
49 [Link]();
50 }
51 public static void rellenar(int v[]) {
52
53 int i;
54 for (i=0;i<[Link];i++) {
55 v[i]=0;
56 }
57 }
58 }
public static void main(String[] args) { public static void main(String[] args) {
int c; int p;
c=damecero(); p=suma(3,5);
} }
public static int damecero () { public static int suma (int a, int b) {
return 0; return a+b;
} }
} }
(3,5) del main los mete en (int a, int b) de suma,
Devuelve resultado (return) y lo guarda en c.
después retorna (return) el resultado y lo mete en p.
1 /* 1 /* 1 /*
2 Diseñar funcion "compara" que recibe 2 numeros 2 Diseñar una funcion longitud que recibe 2 Funcion que reciba un mes y año y nos
3 enteros, devuelve 0 si son iguales, 1 si el 3 una cadena y devuelve el nº de caracteres. 3 devuelva el nº de dias del mes.
4 primero es mayor y -1 si el segundo es mayor. 4 */ 4 -1 si el mes es incorrecto.
5 */ 5 package ejercicio69; 5 */
6 package ejercicio68; 6 6 package ejercicio70;
7 7 public class Ejercicio69 { 7
8 public class Ejercicio68 { 8 8 public class Ejercicio70 {
9 9 public static void main(String[] args) { 9
10 public static void main(String[] args) { 10 String palabra="gato"; //defino la palabra 10 public static void main(String[] args) {
11 11 int n; //creo variable 11
12 int resultado; 12 n=longitud(palabra); 12 int resultado;
13 resultado=compara(1,2); 13 [Link](n); 13 resultado=diasdelmes(2,2015);
14 [Link](resultado); 14 } 14 [Link](resultado);
15 } 15 //procedimiento int pq depvuelve numero 15 }
16 public static int compara(int num1, int num2) { 16 //y string pq meto palabra 16 public static int diasdelmes (int mes, int anyo) {
17 if (num1>num2) { 17 public static int longitud (String palabra) { 17
18 return 1; 18 int n=[Link](); 18 int resultado;
19 } 19 return n; 19
20 else if (num1<num2) { 20 } 20 if (mes==4 || mes==6 || mes==9 || mes==11) {
21 return -1; 21 } 21 resultado= 30;
22 } 22 }
23 else { 23 else if (mes==1 || mes==3 || mes==5 || mes==7
24 return 0; 24 || mes==8|| mes==10 || mes==12) {
25 } 25 resultado= 31;
26 } 26 }
27 } 27 else if (mes==2) {
28
29 if( (anyo%400==0 || anyo%4==0) && anyo%100!=0) {
30 resultado= 29;
31 }
32 else {
33 resultado= 28;
34 }
35 }
36 else {
37 resultado=-1;
38 }
39 return resultado;
40 }
41 }
1 /* 15 }
2 Diseñar funcion que reciba un vector y un 16 public static int busca(int v[], int num) {
3 numero y nos devuelva la posicion donde se 17 int i, resultado;
4 encuentra el numero dentro del vector. -1 si no existe. 18 //recorre buble hasta el final y si no encuentra en numero..
5 */ 19 for (i=0; i<[Link] && v[i]!=num; i++);
6 package ejercicio71; 20 if (i==[Link]) { //si la busqueda llega al final
7 21 resultado=-1;
8 public class Ejercicio71 { 22 }
9 23 else { //entonces imrime posicion de i
10 public static void main(String[] args) { 24 resultado=i;
11 25 }
12 int v[]={2,3,4,5,6}; 26 return resultado;
13 int resultado=busca(v,4); 27 }
14 [Link]("posicion del numero en vector: "+resultado); 28 }
Para probar el programa hay que tener en cuenta el nombre del package(pruebas) y el nombre del programa
public [Link].
Java Pruebas. prueba
Package programa
Un proceso puede llamarse a si mismo un número ilimitado de veces (sin acabar), llegado a ese limite el
programa falla. Se usa en:
1 /* 1 /* 1 /*
2 Funcion que recibe un numero romano (string) 2 Calcular el factorial de un numero. 2 Diseñar programa que cargue vector con 10
3 y nos devuelve el decimal correspondiente. 3 */ 3 numeros aleatorios entre 10 y 50. Mostrarlo.
4 Despues sumarlos. 4 package ejercicio73; 4 Calcular la media. Plantearlo con 2
5 */ 5 5 procedimientos y una funcion. diagrama de modulos.
6 package ejercicio72; 6 import [Link]; 6 */
7 7 7 package ejercicio74;
8 public class Ejercicio72 { 8 public class Ejercicio73 { 8
9 9 9 import [Link];
10 public static void main(String[] args) { 10 public static void main(String[] args) { 10
11 11 Scanner teclado=new Scanner ([Link]); 11 public class Ejercicio74 {
12 int resultado=romano("XVXXII"); 12 int num; 12
13 [Link]("la suma es: "+resultado); 13 int fact=1; 13 public static void main(String[] args) {
14 } 14 int i; 14
15 public static int romano(String romano) { 15 15 final int N=10;
16 16 [Link] ("introduce un numero: "); 16 int v[]=new int [N];
17 int acum=0; 17 num=[Link] (); 17 cargar(v);
18 int i; 18 18 mostrar(v);
19 19 for (i=num;i>1;i--) { 19 double m=media(v);
20 for(i=0;i<[Link]();i++) { 20 fact=fact*i; 20 [Link]("la media es: "+m);
21 switch ([Link](i)) { 21 } 21
22 case 'I' : acum=acum+1; break; 22 [Link]("el factorial de " +num+" es: " +fact); 22 }
23 case 'V' : acum=acum+5; break; 23 } 23 public static void cargar(int v[]) {
24 case 'X' : acum=acum+10; break; 24 } 24 Random aleatorio=new Random();
25 case 'L' : acum=acum+50; break; 25 int i;
26 case 'C' : acum=acum+100; break; 26 for (i=0;i<[Link];i++) {
27 case 'D' : acum=acum+500; break; 27 v[i]=[Link](41)+10;
28 case 'M' : acum=acum+1000; break; 28 }
29 } 29 }
30 } 30 public static void mostrar(int v[]) {
31 return acum; 31 int i;
32 } 32 for (i=0;i<[Link];i++) {
33 } 33 [Link](v[i]+" ");
34 }
35 }
36 public static double media(int v[]) {
37 int i;
38 double suma=0;
39 for (i=0;i<[Link];i++) {
40 suma=suma+v[i];
41 }
42 return suma/[Link];
43 }
44 }
1 /* 1 /*
2 Diseñar una funcion que recibe un vector 2 Cargar un vector con 3 numeros por teclado.
3 con 5 frases y nos devuelva cuantas letras 3 Los numeros comprendidos entre 5 y 15.
4 (mayus y minus) hay en total. 4 Mostrarlos por pantalla.
5 */ 5 */
6 package ejercicio75; 6 package ejercicio78;
7 7
8 public class Ejercicio75 { 8 import [Link];
9 9
10 public static void main(String[] args) { 10 public class Ejercicio78 {
11 String v[]= {"hola","que tal","estas","hoy","de mañana"}; 11
12 [Link]("las letras totales: "+busca(v)); 12 public static void main(String[] args) {
13 } 13
14 public static int busca(String v[]) { 14 Scanner teclado=new Scanner ([Link]);
15 int i,suma=0,j; 15
16 for (i=0;i<[Link];i++) { 16 int v[]=new int [3];
17 String frase=v[i]; 17 int i,num;
18 for (j=0;j<[Link]();j++) { 18
19 char letra=[Link](j); 19 for (i=0;i<[Link];i++) {
20 //si encuentra letras may y min las va sumando 20 [Link]("introduzca numero entre 5 y 15: ");
21 if((letra>='a' && letra<='z') || (letra>='A' && letra<='Z')){ 21 num=[Link]();
22 suma++; 22 while(num<5 || num>15) { //validacion
23 } 23 num=[Link]();
24 } 24 [Link]("introduzca numero entre 5 y 15: ");
25 } 25 }
26 return suma; 26 v[i]=num;
27 } 27 }
28 } 28 for (i=0;i<[Link];i++) //mostrar
29 [Link](v[i]+" ");
30 }
31 }
1 /* 22 if (v[i]>elmayor) { 43
2 Dado un vector, mostrarlo, nº elementos, mayor, 23 elmayor=v[i]; 44 int pares=0;
3 menor, suma, media, >50, pares e impares. 24 } 45 for (i=0;i<[Link];i++) //pares
4 */ 25 [Link]("el numero mayor es: "+elmayor); 46 if (v[i]%2==0){
5 package ejercicio77; 26 47 pares++;
6 27 int elmenor=Integer.MAX_VALUE; //menor 48 }
7 public class Ejercicio77 { 28 for (i=0;i<[Link];i++) 49 [Link]("los pares son: "+pares);
8 29 if (v[i]<elmenor) { 50
9 public static void main(String[] args) { 30 elmenor=v[i]; 51 int impares=0;
10 // TODO code application logic here 31 } 52 for (i=0;i<[Link];i++) //impares
11 int v[]={45,87,100,34,75}; 32 [Link]("el numero menor es: "+elmenor); 53 if (v[i]%2!=0){
12 33 54 impares++;
13 int i; 34 int suma=0; 55 }
14 for (i=0;i<[Link];i++) //mostrar 35 for (i=0;i<[Link];i++) 56 [Link]("los impares son: "+impares);
15 [Link](v[i]+" "); 36 suma=suma+v[i]; 57
16 [Link](); 37 [Link]("la suma es: "+suma); 58 for (i=0;i<[Link];i++) //mayores que 50
17 38 59 if (v[i]>50){
18 [Link]([Link]); //nº elementos 39 int media=0; 60 [Link](v[i]+" ");
19 40 for (i=0;i<[Link];i++) 61 }
20 int elmayor=Integer.MIN_VALUE; //mayor 41 media=suma/[Link]; 62 }
21 for (i=0;i<[Link];i++) 42 [Link]("la media es: "+media); 63 }
Hasta ahora hemos visto la excritura en pantalla y la lectura por teclado, ahora nos centraremos en la escritura en ficheros y
la lectura de ficheros.
Definición de fichero: información almacenada en un soporte de almacenamiento permanente (HDD, USB, DVD).
Existen varios tipos de ficheros:
1.1.-Creación:
Dentro del fichero hay líneas separadas por saltos de línea, da igual la extensión que tenga, importa el contenido del
archivo.
1.2.-Creación del fichero en java:
• Import [Link].*;
• Capturar excepción con el try y el catch.
Try{ FileWriter fichero=new FileWriter (“[Link]”); Las dos líneas crean un fichero en
//código que a lo mejor falla PrintWriter pw=new PrintWriter (fichero); blanco
//Si va bien continua el [Link] (“esto es una línea”); Cada vez que se escribe se crea una
programa [Link] (“esto es otra línea”); linea
} [Link](); El terminar de escribir se cierra el fichero
catch (Exception e){
[Link](e);
}
FileWriter fichero=new FileWriter (“[Link]”); Abre el fichero en modo de escritura. Si no existe, lo crea.
FileWriter fichero=new FileWriter (“[Link]”,true); Abre el fichero en modo de añadir. Añade contenido al final.
1 /* 1 /*
2 Escribir 30 numeros aleatorios entre el 30 y el 40. 2 Pedir 5 nombres y edades por teclado y
3 */ 3 guardarlos en [Link] con el formato
4 package fichero4; 4 nombre:edad.
5 import [Link].*; 5 */
6 import [Link]; 6 package fichero5;
7 7 import [Link].*;
8 public class Fichero4 { 8 import [Link];
9 9
10 public static void main(String[] args) { 10 public class Fichero5 {
11 11
12 try{ 12 public static void main(String[] args) {
13 //estas dos lineas crean un fichero en blanco 13
14 //pw es el puntero y nos indica donde empieza. 14 try{
15 //sin el true borra todo y lo crea no lo sobreescribe 15 //estas dos lineas crean un fichero en blanco
16 FileWriter fichero = new FileWriter ("[Link]"); 16 //pw es el puntero y nos indica donde empieza.
17 PrintWriter pw = new PrintWriter (fichero); 17 //sin el true borra todo y lo crea no lo sobreescribe
18 18 FileWriter fichero = new FileWriter ("[Link]");
19 Random aleatorio= new Random(); 19 PrintWriter pw = new PrintWriter (fichero);
20 20
21 int i,num; 21 Scanner teclado=new Scanner ([Link]);
22 for (i=0;i<30;i++){ 22 int i,edad;
23 num=[Link](40-20+1)+20; 23 String nombre="";
24 [Link](num); 24 for(i=0;i<5;i++){
25 } 25
26 [Link](); //cerrar fichero 26 [Link]("Introducir nombre: ");
27 } 27 nombre=[Link]();
28 catch (Exception e){ 28
29 [Link](e); 29 [Link]("Introducir edad: ");
30 } 30 edad=[Link]();
31 } 31
32 } 32 String tmp=[Link](); //limpiar el teclado
33
34 [Link](nombre+":"+edad);
35 }
36 [Link](); //cerrar fichero
37 }
38 catch (Exception e){
39 [Link](e);
40 }
41 }
42 }
1 /* 16 else{
2 Lectura de un fichero. 17 FileReader fr=new FileReader (archivo);//leo el archivo
3 */ 18 BufferedReader br=new BufferedReader(fr); //es el puntero
4 package fichero6; 19
5 import [Link].*; 20 String linea;
6 21 while((linea=[Link]())!=null){ //leemos linea de fichero y la guardo en linea.
7 public class Fichero6 { 22 //int num=[Link](linea); si se quiere leer numeros hay que convertir
8 23 [Link](linea); //cambiar linea por num para que se vean los numeros
9 public static void main(String[] args) { 24 }
10 25 [Link]();
11 try{ 26 }
12 File archivo=new File ("[Link]"); //fichero a leer 27 }
13 if(![Link]()){//si el archivo no existe... 28 catch (Exception e){
14 [Link]("error el fichero no existe"); 29 [Link](e);
15 } 30 }
31 }
32 }
1 /* 1 /*
2 Abrir el fichero [Link] y extraer la informacion 2 Dada una tabla, cargarla en fichero del
3 nombre y edad en formato nombre edad 3 modo dato:dato.
4 */ 4 */
5 package fichero09; 5 package fichero10;
6 6
7 import [Link].*; 7 import [Link].*;
8 8
9 public class Fichero09 { 9 public class Fichero10 {
10 10
11 public static void main(String[] args) { 11 public static void main(String[] args) {
12 12 final int FIL=3;
13 try{ 13 final int COL=2;
14 File archivo= new File ("[Link]");//fichero a leer 14 int tabla[][]={{5,9},{8,4},{0,3}};
15 if(![Link]()){ 15 int i,j=0;
16 [Link]("error el fichero no existe"); 16
17 } 17 for(i=0;i<FIL;i++){
18 else{ 18 for (j=0;j<COL;j++){
19 FileReader fr= new FileReader (archivo);//leo el archivo 19 [Link](tabla[i][j]+" ");
20 BufferedReader br = new BufferedReader(fr);//es el puntero 20 }
21 21 [Link]();
22 String linea,nombre,edad; 22 }
23 23 try{
24 while((linea=[Link]())!=null){ //leemos linea de fichero y la guardo en linea. 24 FileWriter fichero = new FileWriter ("[Link]");//crea archivo
25 String v[]=[Link](":"); //saca los valores y los mete en vector 25 PrintWriter pw = new PrintWriter (fichero);
26 [Link](v[0]+" "+v[1]); //imrime el vector resultante 26
27 } 27 for(i=0;i<FIL;i++){
28 [Link](); 28 [Link](tabla[i][0]+":"+tabla[i][1]);
29 } 29 }
30 } 30 [Link]();
31 catch (Exception e){ 31 }
32 [Link](e); 32 catch (Exception e){
33 } 33 [Link](e);
34 } 34 }
35 } 35 }
36 }
1 /* 34
2 Diseñar programa que cree el fichero [Link] 35 try {//lectura de archivo
3 con los 1000 primeros numeros pares con el 36 File archivo= new File ("[Link]"); //fichero a leer
4 formato 1:0 2:2 3:4 4:6... 37 if(![Link]()){
5 Despues mostrar por pantalla el fichero 38 [Link]("error, el fichero no existe");
6 visualizando de 10 en 10 a la espera del enter. 39 }
7 */ 40 else {
8 package fichero12; 41 FileReader fr= new FileReader (archivo);//abre fichero a leer
9 42 BufferedReader br = new BufferedReader(fr);//es el puntero
10 import [Link].*; 43
11 import [Link]; 44 String linea;
12 45 int contador=0;
13 public class Fichero12 { 46 while((linea=[Link]())!=null){
14 47 String v[]=[Link](":");
15 public static void main(String[] args) { 48 [Link](v[1]);
16 49 contador++;
17 Scanner teclado=new Scanner ([Link]); 50
18 51 if (contador==10){//para que saque de 10 en 10
19 try{//escritura en el fichero 52 contador=0;
20 FileWriter fichero = new FileWriter ("[Link]"); 53 String temp=[Link]();
21 PrintWriter pw = new PrintWriter (fichero); 54 }
22 55 }
23 int i; 56 [Link]();
24 for (i=1;i<1000;i++){ 57 [Link]();
25 if (i%2==0){ 58 }
26 [Link]((i/2)+":"+i); 59 }
27 } 60 catch (Exception e){
28 } 61 [Link](e);
29 [Link](); 62 }
30 } 63 }
31 catch (Exception e){ 64 }
32 [Link](e);
33 }
1.6.-Borrado de línea en fichero de texto: los ficheros solo se pueden leer y escribir. Para ello creamos un fichero auxiliar
y pasamos los datos del fichero original al auxiliar, luego borro el fichero original y renombro el auxiliar.
[Link] [Link]
luis Luis
David David
Marta beatriz
beatriz
1 /* 1 /*
2 Diseñar un programa que cree el fichero 2 Diseñar programa con fichero [Link]
3 [Link] con las letras minusculas 3 que almacene palabras hasta que se le
4 de la a a la z. 4 diga que no.
5 */ 5 */
6 package fichero22; 6 package fichero23;
7 7
8 import [Link].*; 8 import [Link].*;
9 import [Link].*; 9 import [Link].*;
10 10 import [Link];
11 public class Fichero22 { 11
12 12 public class Fichero23 {
13 public static void main(String[] args) { 13
14 14 public static void main(String[] args) {
15 try{ 15
16 FileWriter fichero=new FileWriter("[Link]");//abro archivo 16 Scanner teclado=new Scanner([Link]);
17 PrintWriter pw=new PrintWriter(fichero); 17 [Link]("fichero [Link] nuevo SI/NO?: ");
18 18 String nuevo=[Link]();
19 char letra; 19 boolean respuesta;
20 for(letra='a';letra<='z';letra++){ 20
21 [Link](letra); 21 if([Link]("si")){//si el usuario mete si crea uno nuevo
22 } 22 respuesta=false;
23 [Link](); 23 }
24 } 24 else{
25 catch(Exception e){ 25 respuesta=true;//si el usuario mete no, se añade al fichero
26 [Link](e); 26 }
27 } 27 try{
28 } 28 //abre el fichero y coje valor de la boolean
29 } 29 FileWriter fichero=new FileWriter("[Link]",respuesta);//abro archivo
30 PrintWriter pw=new PrintWriter(fichero);
31
32 nuevo="si";//bucle que escribe en el fichero
33 while([Link]("si")){
34 [Link]("escriba palabra: ");
35 String palabra=[Link]();
36 [Link](palabra);
37 [Link]("continuar si/no?: ");
38 nuevo=[Link]();
39 }
40 [Link]();
41 }
42 catch(Exception e){
43 [Link](e);
44 }
45 }
46 }
Un streams es un canal por el que entran o salen datos. Las clases que manipulan los streams se dividen en dos:
fichero fichero
1 luis 1 l
2 2 u
3 david 3 i
4 4 s
5 5 \n
6 beatriz 6
7 7 u
8 8 n
El problema es donde escribir los registros ¿en que me baso?, por que se machacan los nombres. Una solución es usas un
dato del registro (código, matricula, dni) como posicionador, debe ser un dato no repetitivo.
1 /* 1 /*
2 -- 2 Programa mete codigos y nombre y almacena
3 */ 3 en fichero, luego se buscan por codigo.
4 package fichero26; 4 */
5 5 package fichero26a;
6 import [Link].*; 6
7 import [Link]; 7 import [Link].*;
8 8 import [Link];
9 public class Fichero26 { 9
10 10 public class Fichero26a {
11 public static void main(String[] args) { 11
12 12 public static void main(String[] args) {
13 Scanner teclado=new Scanner ([Link]); 13 Scanner teclado=new Scanner ([Link]);
14 14
15 String nombre; 15 int codigo;
16 16 String nombre;
17 try{//abro fichero para leer y escribir 17
18 RandomAccessFile fichero=new RandomAccessFile("[Link]","rw"); 18 try{//abro fichero para leer y escribir
19 19 RandomAccessFile fichero=new RandomAccessFile("[Link]","rw");
20 [Link]("nombre: ");//para escribir en el archivo 20
21 nombre=[Link](); 21 int i;
22 [Link](1);//me situo en el byte 10 22 for(i=0;i<3;i++){
23 [Link](nombre+"\n"); 23 [Link]("codigo [1-100]: ");
24 24 codigo=[Link]();
25 [Link]("nombre: ");//para escribir en el archivo 25 [Link]();
26 nombre=[Link](); 26 [Link]("nombre [máx 10 caracteres]: ");
27 [Link](3);//me situo en el byte 10 27 nombre=[Link]();
28 [Link](nombre+"\n"); 28
29 29 [Link](codigo*10);
30 [Link](1);//para leer en el archivo 30 [Link](nombre+"\n");
31 String n=[Link](); 31 }
32 [Link](n); 32
33 33 [Link]("codigo [1-100] a buscar: ");
34 [Link](3);//para leer en el archivo 34 codigo=[Link]();
35 String m=[Link](); 35
36 [Link](m); 36 while(codigo!=-1){
37 [Link](); 37 [Link](codigo*10);
38 38
39 } 39 String nom=[Link]();
40 catch(Exception e){ 40 [Link](nom);
41 [Link](e); 41
42 } 42 [Link]("codigo [1-100] a buscar: ");
43 } 43 codigo=[Link]();
44 } 44 }
45 [Link]();
46
47 }
48 catch(Exception e){
49 [Link](e);
50 }
51 }
52 }
1 /* 22 for (i=0;i<N;i++) {
2 Diseñar un programa que cargue un array 23 [Link]("introduce 5 numeros: ");
3 por teclado con 5 numeros. Ordenar el 24 v[i]=[Link]();
4 array y mostrarlo en pantalla, cargar el 25 }
5 array en el fichero [Link] 26 [Link](v);
6 */ 27
7 package fichero25; 28 for (i=0;i<N;i++) {
8 29 [Link] (v[i]+" "); //imprime el vector
9 import [Link].*; 30 }
10 import [Link]; 31 try{
11 import [Link]; 32 FileWriter fichero=new FileWriter("[Link]");//abro archivo
12 33 PrintWriter pw=new PrintWriter(fichero);//abro archivo
13 public class Fichero25 { 34
14 35 for (i=0;i<N;i++) {
15 public static void main(String[] args) { 36 [Link] (v[i]+" "); //imprime el vector
16 Scanner teclado=new Scanner ([Link]); 37 }
17 38 [Link]();
18 final int N=5; 39 }
19 int v[]=new int [N]; 40 catch(Exception e){
20 int i; 41 [Link](e);
21 42 }
43 }
44 }
1 /* 49 String linea;
2 Programa que pida dni y muestre el nombre 50 boolean encontrado=false;
3 de la persona y el resultado de restar 51 while((linea=[Link]())!=null){
4 ingresos-deducciones. 52 String v[]=[Link](":");
5 */ 53 String conv=v[0];
6 package fichero29; 54 int num=[Link](conv);
7 55 if(dni==num && encontrado==false){
8 import [Link].*; 56 //if que devuelve resultado segun se busque obtener
9 import [Link].*; 57 //nombre o ingreso o deduccion
10 58 if([Link]("[Link]")){
11 public class Fichero29 { 59 vector[0]=v[1];
12 60 encontrado=true;
13 public static void main(String[] args) { 61 }
14 int dni; 62 else if([Link]("[Link]")){
15 final int N=3; 63 vector[1]=v[1];
16 String vector[]=new String[N]; 64 encontrado=true;
17 String busca; 65 }
18 66 else{
19 dni=dni(); 67 vector[2]=v[1];
20 //se puede controlar el fallo si el dni no esta presente 68 encontrado=true;
21 69 }
22 busca="[Link]"; 70 }
23 buscar(dni, vector, busca); 71 }
24 busca="[Link]"; 72 if(encontrado==false){
25 buscar(dni, vector, busca); 73 vector[2]="0";//cuando no hay deducciones
26 busca="[Link]"; 74 }
27 buscar(dni, vector, busca); 75 [Link]();
28 76 }
29 resultado(vector); 77 }
30 } 78 catch(Exception e){
31 public static int dni(){ 79 [Link](e);
32 Scanner teclado=new Scanner([Link]); 80 }
33 int dni; 81 }
34 [Link]("Introduce dni: "); 82 public static void resultado(String vector[]){
35 dni=[Link](); 83 String ingresos=vector[1];
36 84 String deducciones=vector[2];
37 return dni; 85 int ing=[Link](ingresos);
38 } 86 int ded=[Link](deducciones);
39 public static void buscar(int dni, String vector[], String busca){ 87 [Link](vector[0]+" total: "+(ing-ded));
40 try{ 88 }
41 File archivo = new File (busca); 89 }
42 if(![Link]()){
43 [Link]("Error, el fichero no existe");
44 }
45 else{
46 FileReader fr = new FileReader (archivo);
47 BufferedReader br = new BufferedReader (fr);
48
1.-Objetivos.
Incrementa la eficiencia del software, decrementan los costes de producción, decrementan errores de
programación y permite reutilizar el código.
Supone realizar un análisis más detallado del programa y el tiempo de diseño aumenta.
ANALISIS DISEÑO IMPLEMENTACION PRUEBAS
¿Que tiene que hacer? Diagrama UML, MER Programación
Aumenta mucho el tiempo porque se plantea un programa en partes pequeñas con el objetivo de reutilizar esas
partes en el futuro. Exige conocer la teoría de objetos para programar.
2.-Clase.
Es la base de la programación orientada a objetos, podemos verla como una plantilla.
Clase (características comunes)
S.O. Samsumg galaxy
Ram Nokia Lumia
Cámara Huawei
Una clase va a definir las variables y métodos comunes a todos los objetos de esa clase. A las variables las
llamaremos atributos y a las operaciones métodos.
La primera letra de la clase será en Mayúscula. Después se ponen los atributos y después los métodos. Para usar
una clase debemos crear el objeto correspondiente (instanciar).
3.-Objeto.
Es la instancia de una clase en tiempo de ejecución, no es lo mismo una clase que un objeto.
clase objeto
Persona a =new Persona();
[Link]=”luis”;
clase objeto
Persona b =new Persona();
[Link]=”david”;
4.-Principio de encapsulación.
Es un mecanismo que permite que las clases sean como cajas negras. Buscan ocultar código para el usuario de la
clase, conseguiremos simplificar su uso y evitar errores.
• protected # (el atributo o método no es accesible desde fuera de la clase pero si pasa a los descendientes en
la herencia.)
Toda clase tiene métodos especiales que se llaman set y get para trabajar con los atributos. Para manipular los
atributos:
Las clases las utilizamos para almacenar clases. Por convenio si una operación devuelve algo va precedido por get
(no es obligatorio).
Libro lib1: crea una referencia (un puntero) a la posición de memoria del objeto. RAM
New libro(); crea el objeto en la memoria RAM, crea la flecha hacia la posición lib1. 1000
1001
à 1002 New libro
1003
1004
1005
1006
RAM
Lib 1 Isbn 1111 Posición -Al poner lib1=lib2 queda sin ocupar (no tiene referencias, es imposible acceder a el)
-Ocupa RAM de forma inecesaria
Lib 2 Isbn 2222 Posición -En otros lenguajes el programador debe liberar este espacio. Java da la solución.
Lib 3
El recolector de basura (garbage collector) propone que se ejecuta en segundo plano de forma asíncrona (no
controlada) que libera de RAM objetos sin referencia.
6.-Constructores.
Son métodos especiales (no obligatorios) de una clase. Se ejecutan solo una vez al instanciar la clase. Se suelen usar
para dar valor inicial a los atributos y tareas como abrir una conexión a un fichero, BD, red….
Libro lib1= New Libro(); Creación: Public Libro (String isbn,String titulo,String autor)
Se ejecuta el constructor this isbn=isbn;
this titulo=titulo;
this autor=autor;
Cuando un objeto en RAM se queda sin referencias es inaccesible, ocupa espacio. El recolector de basura
se encarga de eliminar los objetos. El recolector es asíncrono, se ejecuta cuando puede.
El destructor: método especial que se ejecuta cuando el objeto desaparece de la RAM. Es decir, al pasar
el recolector invoca al destructor (no lo usaremos porque no se cuando se ejecutará.)
CLASE Disco
1 /* 22 }
2- 23 public void setDiscografica(String discografica){
3 */ 24 [Link]=discografica;
4 package objeto12; 25 }
5 26 public String getTitulo(){
6 public class Disco { 27 return [Link];
7 private String titulo; 28 }
8 private String artista; 29 public String getArtista(){
9 private String discografica; 30 return [Link];
10 31 }
11 public Disco(String titulo,String artista, 32 public String getDiscografica(){
12 String discografica){//constructor 33 return [Link];
13 [Link]=titulo; 34 }
14 [Link]=artista; 35 public String toString(){
15 [Link]=discografica; 36 return "cancion{titulo="+titulo+
16 } 37 ",artista="+artista+
17 public void setTitulo(String titulo){ 38 ",discografica="+discografica+
18 [Link]=titulo; 39 "}";
19 } 40 }
20 public void setArtista(String artista){ 41 }
21 [Link]=artista;
En el tema anterior:
Clase: Plantilla
Objeto: Instancia de una clase
Encapsulación: Ocultar el código
Constructor: Método especial al crear el objeto
Destructor: Método especial que se ejecuta cuando se destruye el objeto
Referencia: Puntero que apunta a objeto en la RAM
1.-Sobrecarga de métodos.
Es una técnica optativa, consiste en tener dos o mas métodos de una clase con el mismo nombre pero con
funcionalidad diferente. El compliador usará un método u otro dependiendo de los parámetros usados.
El objetivo de la sobrecarga es facilitar a los usuarios de nuestra clase el manejo de los métodos, ya que quien
utiliza nuestra clase no se tendrá que preocupar ni del nombre de los métodos ni de los parámetros.
El constructor sin parámetros se llama constructor por defecto. Es bueno hacerlo siempre.
2.-Comprosicion de clases.
Una clase se compone de otra cuando uno de sus atributos es una clase. Primero se crean los objetos que la componen
y por ultimo el elemento compuesto.
CLASE Fraccion
1 /* 24 public void setDenominador(int denominador) { 47 else {
2 -- 25 [Link] = denominador; 48 return -1;
3 */ 26 } 49 }
4 package objeto19; 27 public String toString() { 50 }
5 28 return "Fraccion{" + "numerador=" + numerador + 51 public void producto(Fraccion f){
6 public class Fraccion { 29 ", denominador=" + denominador + '}'; 52
7 30 } [Link]=[Link]*[Link]();
8 private int numerador; 31 public int suma(Fraccion f){ 53 [Link]=[Link]*[Link]();
9 private int denominador; 32 54 }
10 33 if ([Link]==[Link]()){ 55 public boolean compara(Fraccion f){
11 public Fraccion(int numerador, int 34 56
denominador) { [Link]=[Link]+[Link](); 57 if (([Link]==[Link]()) &&
12 [Link] = numerador; 35 return 0; 58 ([Link]==[Link]())){
13 [Link] = denominador; 36 } 59 return true;
14 } 37 else { 60 }
15 public int getNumerador() { 38 return -1; 61 else{
16 return numerador; 39 } 62 return false;
17 } 40 } 63 }
18 public void setNumerador(int numerador) { 41 public int resta(Fraccion f){ 64 }
19 [Link] = numerador; 42 65 }
20 } 43 if ([Link]==[Link]()){
21 public int getDenominador() { 44 [Link]=[Link]();
22 return denominador; 45 return 0;
23 } 46 }
Ejemplos fechas
1 /* 33 LocalTime ahora=[Link]();
2 Ejemplos de formato de fecha. 34 [Link]("la hora actual: "+ahora);
3 */ 35 LocalTime otraHora=[Link](10,15,05);
4 package objeto20; 36 [Link]("la hora puesta: "+otraHora);
5 37
6 import [Link].*; 38 [Link]("la hora actual: "+[Link]());
7 import [Link].*; 39 [Link]("los minutos actuales: "+[Link]());
8 import [Link].*; 40
9 41 ahora=[Link](2);
10 public class Ejemplo_fechas { 42 [Link]("la hora actual mas 2: "+ahora);
11 43
12 public static void main(String[] args) { 44 LocalDateTime fecha=[Link](2015,[Link],23,10,15,00);
13 45 [Link]("la fecha y hora puesta: "+fecha);
14 LocalDate fechaActual=[Link](); 46
15 [Link]("la fecha actual es: "+fechaActual); 47 Instant inicio=[Link]();
16 48 int x=555555555;
17 LocalDate miFecha=[Link](2015, [Link], 17); 49 int y=555555555;
18 [Link]("la fecha puesta es: "+miFecha); 50 Instant fin=[Link]();
19 51
20 if([Link](miFecha)) 52 long duracion=[Link](inicio, fin).getSeconds();
21 [Link]("Se pasó la fecha"); 53 [Link]("la duracion entre: "+duracion);
22 54
23 miFecha=[Link](2); 55 [Link]("la fecha actual: "+fechaActual);
24 miFecha=[Link](5); 56 [Link]("la fecha actual es: "
25 [Link]("la fecha personalizada: "+miFecha); 57 +[Link](DateTimeFormatter.ISO_LOCAL_DATE));
26 58 [Link]("la fecha actual es: "
27 [Link]("el dia personalizado: "+[Link]()); 59 +[Link]([Link]("dd-MM-yyyy")));
28 [Link]("el mes personalizado: "+[Link]()); 60 }
29 [Link]("el dia del año: "+[Link]()); 61 }
30 [Link]("el mes personalizado tiene: "+[Link]());
31 [Link]("el año personalizado tiene: "+[Link]());
32
CLASE Viaje
1 package objeto21; 34 public String getIdentificador() {
2 35 return identificador;
3 public class Viaje { 36 }
4 37 public Hotel getHotel() {
5 private String identificador; 38 return hotel;
6 private Hotel hotel; 39 }
7 private Vuelo vueloIda; 40 public Vuelo getVueloIda() {
8 private Vuelo vueloVuelta; 41 return vueloIda;
9 private int numeroPersonas; 42 }
10 43 public Vuelo getVueloVuelta() {
11 public Viaje(String identificador, Hotel hotel, Vuelo vueloIda, 44 return vueloVuelta;
12 Vuelo vueloVuelta, int numeroPersonas) { 45 }
13 [Link] = identificador; 46 public int getNumeroPersonas() {
14 [Link] = hotel; 47 return numeroPersonas;
15 [Link] = vueloIda; 48 }
16 [Link] = vueloVuelta; 49 public String toString() {
17 [Link] = numeroPersonas; 50 return "Viaje{" + "identificador=" + identificador +
18 } 51 ", hotel=" + hotel + ", vueloIda=" + vueloIda +
19 public void setIdentificador(String identificador) { 52 ", vueloVuelta=" + vueloVuelta +
20 [Link] = identificador; 53 ", numeroPersonas=" + numeroPersonas + '}';
21 } 54 }
22 public void setHotel(Hotel hotel) { 55 public double calcularPrecio(int total_noches){
23 [Link] = hotel; 56 double total=0;
24 } 57 //recibe calcular factura del hotel,
25 public void setVueloIda(Vuelo vueloIda) { 58 //numero de personas y numero noches
26 [Link] = vueloIda; 59 double total_hotel=[Link]
27 } 60 ([Link], total_noches);
28 public void setVueloVuelta(Vuelo vueloVuelta) { 61 total=[Link]*([Link]()
29 [Link] = vueloVuelta; 62 +[Link]())+total_hotel;
30 } 63 return total;
31 public void setNumeroPersonas(int numeroPersonas) { 64 }
32 [Link] = numeroPersonas; 65 }
33 }
CLASE Hotel
1 package objeto21; 36 public void setPrecio(double precio) {
2 37 [Link] = precio;
3 public class Hotel { 38 }
4 39 public String getNif() {
5 private String nif; 40 return nif;
6 private String nombre; 41 }
7 private String direccion; 42 public String getNombre() {
8 private String ciudad; 43 return nombre;
9 private String categoria; 44 }
10 private double precio; 45 public String getDireccion() {
11 46 return direccion;
12 public Hotel(String nif, String nombre, String direccion, String ciudad, 47 }
13 String categoria, double precio) { 48 public String getCiudad() {
14 [Link] = nif; 49 return ciudad;
15 [Link] = nombre; 50 }
16 [Link] = direccion; 51 public String getCategoria() {
17 [Link] = ciudad; 52 return categoria;
18 [Link] = categoria; 53 }
19 [Link] = precio; 54 public double getPrecio() {
20 } 55 return precio;
21 public void setNif(String nif) { 56 }
22 [Link] = nif; 57 public String toString() {
23 } 58 return "Hotel{" + "nif=" + nif + ", nombre=" + nombre +
24 public void setNombre(String nombre) { 59 ", direccion=" + direccion + ", ciudad=" + ciudad +
25 [Link] = nombre; 60 ", categoria=" + categoria + ", precio=" + precio + '}';
26 } 61 }
27 public void setDireccion(String direccion) { 62 public double calcularFactura(int numero_personas,
28 [Link] = direccion; 63 int numero_noches){
29 } 64 double total=0;
30 public void setCiudad(String ciudad) { 65 total=numero_personas*numero_noches*[Link];
31 [Link] = ciudad; 66 return total;
32 } 67 }
33 public void setCategoria(String categoria) { 68 }
34 [Link] = categoria;
35 }
Los packages admiten subcarpetas, las subcarpetas se indican con el import [Link].*
ACCION IMPRIME
try{
[Link](5/10);
} [Link]: /by zero
catch(Exception e){
}
try{
[Link](5/10);
}
/by zero
catch(Exception e){
[Link]([Link]());
}
try{
[Link](5/10);
} [Link]:
/by zero
catch(Exception e){ at [Link]([Link])
[Link]([Link]());
}
Nombre de la excepcion descripcion
RAM
MiClase
a1 à [Link](); -elimina el 5 y pone el 6
5 6
MiClase
a2 à [Link]();
7
MiClase
b1 à -elimina el 7 y pone el 8.
7 8
b2 à -elimina el 8 y pone el 9.
9
• Clase normal: Persona, Coche, es decir, clases que contienen datos solamente (siempre set y get)
(llamados Beans).
6.-Herencias.
Consiste en que una clase puede heredar (recibir) atributos y métodos de una clase superior. Le llamaremos superclase o
clase padre.
• Extensibilidad: añadir nuevas funciones. Aplicar una buena herencia implica un gran análisis previo.
A a,b m()
B b,c,e m(),p()
C d,b,a h(),m()
Además de ser factor común tiene que tener sentido, se relaciona con “es_un”.
Los estudiantes tienen dni, nombre y titulación, los trabajodres dni, nombre y nº_ss, las personas tienen nobre y dni,
los directores tienen dni, nombre, nº_ss y extra en el sueldo. Hacer UML.
Personas
Dni
nombre
7.-Sobreescritura de métodos.
Al heredar un método podemos modificar su código programado para ajustarlo a la nueva clase.
+saluda() +saluda()
Al volver a pasar +saluda() indico sobreescritura. Al sobreescribir puedo ejecutar el código anterior y añadir código nuevo.
Si una clase superior tiene constructor, la descendiente obligatoriamente debe tenerlo y llamarlo.
CLASE Contador
1 /* 13 } 25 cont++;
2 -- 14 else{ 26 }
3 */ 15 [Link] = cont; 27 public void dec() throws Exception{
4 package objeto31; 16 } 28 [Link]--;
5 17 } 29 if (cont<0){
6 public class Contador { 18 public int getCont() { 30 throw new Exception("error contador negativo!");
7 19 return cont; 31 }
8 private int cont; 20 } 32 }
9 21 public void setCont(int cont) { 33 public void show(){
10 public Contador(int cont) throws Exception { 22 [Link] = cont; 34 [Link](cont);
11 if (cont<0){ 23 } 35 }
12 throw new Exception("error contador negativo!"); 24 public void add(){ 36 }
CLASE NuevoContador
1 /* 14 [Link]([Link]()+cantidad);
2 -- 15 }
3 */ 16 public void dec(int cantidad) throws Exception {
4 package objeto31; 17 //utilizo set y get porque son privados
5 18 //en contador y tengo que cogerlos
6 public class NuevoContador extends Contador{ 19 [Link]([Link]()-cantidad);
7 20 if([Link]()<0){
8 public NuevoContador(int cont) throws Exception {//hereda de contador 21 throw new Exception("error contador negativo!");
9 super(cont);//creamos constructor y llama al cont de contador 22 }
10 } 23 }
11 public void add(int cantidad) { 24 }
12 //utilizo set y get porque son privados
13 //en contador y tengo que cogerlos
CLASE Alquiler
1 /* 43 public void setFechaInicio(LocalDate fechaInicio) { 85 return total;
2 -- 44 [Link] = fechaInicio; 86 }
3 */ 45 } 87 }
4 package objeto32; 46 public LocalDate getFechaFin() {
5 47 return fechaFin;
6 import [Link]; 48 }
7 import [Link].*; 49 public void setFechaFin(LocalDate fechaFin) {
8 import [Link].*; 50 [Link] = fechaFin;
9 51 }
10 public class Alquiler { 52 public Barco getBarco() {
11 53 return barco;
12 private String dni; 54 }
13 private String nombre; 55 public void setBarco(Barco barco) {
14 private LocalDate fechaInicio; 56 [Link] = barco;
15 private LocalDate fechaFin; 57 }
16 private Barco barco; 58 public String getPosicion() {
17 private String posicion; 59 return posicion;
18 60 }
19 public Alquiler(String dni, String nombre, LocalDate fechaInicio, 61 public void setPosicion(String posicion) {
20 LocalDate fechaFin, Barco barco, String posicion) { 62 [Link] = posicion;
21 [Link] = dni; 63 }
22 [Link] = nombre; 64 @Override
23 [Link] = fechaInicio; 65 public String toString() {
24 [Link] = fechaFin; 66 return "Alquiler{" + "dni=" + dni + ", nombre=" + nombre +
25 [Link] = barco; 67 ", fechaInicio=" + fechaInicio + ", fechaFin=" + fechaFin +
26 [Link] = posicion; 68 ", Barco=" + barco + ", posicion=" + posicion + '}';
27 } 69 }
28 public String getDni() { 70 public double getAlquiler (){
29 return dni; 71 //obtiene la diferencia en dia entre dos fechas y hora
30 } 72 LocalDateTime i=[Link](//fecha inicio
31 public void setDni(String dni) { 73 [Link](),
32 [Link] = dni; 74 [Link](),
33 } 75 [Link](),
34 public String getNombre() { 76 0,0);
35 return nombre; 77 LocalDateTime f=[Link](//fecha fin
36 } 78 [Link](),
37 public void setNombre(String nombre) { 79 [Link](),
38 [Link] = nombre; 80 [Link](),
39 } 81 0,0);
40 public LocalDate getFechaInicio() { 82 //devuelve diferencia en dias entre fechas
41 return fechaInicio; 83 long dias=[Link](i,f).toDays();//toMonths toYears
42 } 84 double total=dias*[Link]()*2;
CLASE Interfaz
1 /* 21 //saco fechas del alquiler
2 Extension, metodo printInfo que reciba como parametro 22 LocalDate inicio=[Link]();
3 un alquiler y muestre los datos del alquiler por 23 LocalDate fin=[Link]();
4 pantalla con esta forma: 24
5 ALQUILER del cliente: 78293222Q 25 [Link]([Link]([Link]("dd/MM/yyyy")));
6 Del 7/8/2007 al 19/8/2007 (total dias 12) 26 [Link](" al ");
7 EMBARCACION 5678BZD de 14 metros 27 [Link]([Link]([Link]("dd/MM/yyyy")));
8 IMPORTE TOTAL: 567 28
9 */ 29 //otra forma de obtener la diferencia entre fechas
10 package objeto32; 30 long dias=[Link](inicio, fin);
11 31 [Link]("total dias "+dias);
12 import [Link].*; 32
13 import [Link]; 33 //accede a la matricula del barco y a la eslora del barco
14 import [Link]; 34 [Link]("EMBARCACION "+[Link]().getMatricula()+
15 35 " de "+[Link]().getEslora()+" metros");
16 public class Interfaz { 36
17 37 [Link]("IMPORTE TOTAL: "+[Link]()+" ");
18 public void printInfo(Alquiler alquiler){//recibe parametro alquiler 38 }
19 [Link]("ALQUILER del cliente: "+[Link]()); 39 }
20
8.-Polimorfismo.
Es la capacidad de un objeto de cambiar en tiempo de ejecución de tipo de clase al que representa. Se ejecuta de
forma automática.
Su objetivo es complementar la herencia en reutilización y flexibilidad. Un objeto puede cambiar de clase siempre hacia
abajo.
B b=new B();
a=b;
C c=new C(); c=b; no vale
A a=null
En Java existe la superclase Object, todo hereda de ella implícitamente. Cualquier lenguaje a objetos tiene una
superclase.
Object v[ ]=new Object[3]; se puede meter en el Array cualquier cosa por distinta que sea.
9.-IDE.
Es un entorno gráfico.
MAIN
1 /* 35 try{
2 Crear programa que crea cartas a partir de una 36 //abro fichero para escribir
3 plantilla de carta con datos introducidos por 37 FileWriter f=new FileWriter("[Link]");
4 el teclado. 38 PrintWriter pw=new PrintWriter(f);
5 */ 39 //abrimos fichero carta para leer
6 package objeto35; 40 File ff=new File("[Link]");
7 41 FileReader fr=new FileReader(ff);
8 import [Link].*; 42 BufferedReader br=new BufferedReader(fr);
9 import [Link].*; 43
10 44 //leo las lineas y lo meto en var linea
11 public class Objeto35 { 45 String linea;
12 46 while((linea=[Link]())!=null){
13 public static void main(String[] args) { 47 //creo linea2 y remplazo nombre y apellidos por la var nombre
14 48 //sino encuentra nada no hace nada
15 Scanner sc=new Scanner([Link]); 49 String linea2=linea;
16 50 linea2=[Link]("[nombre y apellidos]", nombre);
17 [Link]("nombre y apellidos: "); 51 linea2=[Link]("[direccion]", direccion);
18 String nombre=[Link](); 52 linea2=[Link]("[codigo postal]", codigo);
19 [Link]("direccion: "); 53 linea2=[Link]("[ciudad]", ciudad);
20 String direccion=[Link](); 54 linea2=[Link]("[poblacion]", poblacion);
21 [Link]("codigo postal: "); 55 linea2=[Link]("[dia]", dia);
22 String codigo=[Link](); 56 linea2=[Link]("[mes]", mes);
23 [Link]("ciudad: "); 57 linea2=[Link]("[ano]", ano);
24 String ciudad=[Link](); 58 [Link](linea2);
25 [Link]("poblacion: "); 59 }
26 String poblacion=[Link](); 60 [Link]();
27 [Link]("dia: "); 61 [Link]();
28 String dia=[Link](); 62 }
29 [Link]("mes: "); 63 catch(Exception e){
30 String mes=[Link](); 64 [Link]("error!!!");
31 [Link]("ano: "); 65 }
32 String ano=[Link](); 66 }
33 [Link](" "); 67 }
34
Planteamiento
[Link] [Link] [Link]
Leer Nombre:apellido:direccion Leer [nombre] Escribir [luis]
brà brà [apellidos] pwà [fernandez]
[direccion] [la calle 3]
LEO SUSTITUYO ESCRIBO
10.-Clases abstractas.
No se pueden instanciar, debemos heredar de ella y ya instanciar la clase heredada. Si no se dice nada se puede crear
objetos de 3 tipos, Profesor, Interino y Titular. Pero si solo quiero crear objetos de tipo Interino o Titular creo clases
abstractas. Para crearla:
<<abstract>>
MAIN
Profesor
1 /*
2 --.
3 */
4 package objeto38;
5
ProfesorInterino
6 public class Objeto38 {
7
8 public static void main(String[] args) {
9 ProfesorTitular
10 //no podemos instanciar profesor al
11 //ser abstracta la clase
12 //Profesor p=new Profesor("12","luis",25);
13
14 ProfesorTitular p=new ProfesorTitular("12","luis",25);
15 [Link]();
16 }
17 }
Las clases abstractas suelen tener métodos abstractos que tienen las siguientes características:
11.-Interface.
Es un paso más allá de una clase abstracta, va a ser una clase abstracta pura, todos los métodos son abstractos y no va
a tener ningún atributo “normal” (final o static).
Interface Nombre{ Public class MiClase implements Nombre{
método(); método(){
método(); //contenido
} }
método(){
//contenido
}
}
<<interface>>
MAIN CLASE InstrumentoMusical CLASE Guitarra
InstrumentoMusical
1 /* 1 /* 1 /*
2 2 -- 2 --
3 */ 3 */ 3 */
4 package objeto39; 4 package objeto39; 4 package objeto39;
5 5 5
Guitarra
6 public class Objeto39 { 6 public interface InstrumentoMusical { 6 public class Guitarra implements InstrumentoMusical{
7 7 7
8 public static void main(String[] args) { 8 //no se implementa nada en los metodos 8 public void tocar(){
9 9 public void tocar(); 9 //codigo
10 Guitarra g=new Guitarra(); 10 public void afinar(); 10 }
11 [Link](); 11 public String tipoInstrumento(); 11 public void afinar(){
12 } 12 } 12 //codigo
13 } 13 }
14 public String tipoInstrumento(){
15 //codigo
16 return "";
17 }
18 }
1 /* 17 try{
2 Diseñar un programa (main) que guarde en el 18 FileWriter fichero=new FileWriter("[Link]",true);
3 fichero [Link] la longitud de cada 19 PrintWriter pw=new PrintWriter(fichero);
4 palabra que el usuario introduzca por teclado. 20
5 El programa acaba cuando el usuario escribe salir. 21 [Link]("introduzca palabra: ");
6 */ 22 String palabra=[Link]();
7 package objeto44; 23 while(){//mientras sea distinta de salir..
8 24 [Link]("longitud de: "+palabra+" = "+[Link]());
9 import [Link]; 25 [Link]("introduzca palabra: ");
10 import [Link].*; 26 palabra=[Link]();
11 27 }
12 public class Objeto44 { 28 [Link]();
13 29 [Link]("fichero creado");
14 public static void main(String[] args) { 30 }
15 31 catch(Exception e){
16 Scanner teclado=new Scanner([Link]); 32 [Link](e);
33 }
34 }
35 }
cà
c()
1.-Clases envolventes.
En Java todo dato nativo o primitivo (variables, int, char, long, float) tiene su correspondiente clase envolvente, que
lo convierte en una calse de Java. Muchas clases no admiten tipos nativos en sus parámetros y debemos de convertirlos.
int a;
[Link](a);
Integer a=new Integer(5); //el 5 dentro de una clase Integer c=new Integer(14); //el 14 lo mete en h
int N=5; Integer p=new Integer(N); //el 5 dentro de una clase int h=; [Link]();
Son clases que tienen sus propios métodos. Para pasar a la inversa (hacer operaciones):
1 /* 14 String n1="45"; String n2="5"; 27 if([Link](num2)){
2 Tenemos dos objetos String, n1=45 y n2=5, 15 28 [Link]("iguales");
3 debemos convertirlos a tipo Integer y comparar 16 //se convierte a num entero 29 }
4 si ambos objetos son iguales o no. 17 Integer num1=new Integer(n1); 30 else{
5 Volver a convertir estos objetos Integer a 18 Integer num2=new Integer(n2); 31 [Link]("distintos");
6 tipo nativo almacenando su valor en int a,b. 19 //comparar si son iguales opcion 1 32 }
7 */ 20 if([Link](num2)==0){ 33 int a=[Link]();
8 package clase01; 21 [Link]("iguales"); 34 int b=[Link]();
9 22 } 35
10 public class Clase01 { 23 else{ 36 [Link](n1+n2);//tipo String da 455
11 24 [Link]("distintos"); 37 [Link](a+b);//tipo entero da 50
12 public static void main(String[] args) { 25 } 38 }
13 26 //comparar si son iguales opcion 2 39 }
CLASE Contenedora
1 /* 23 } 48 //metodo elimina figura de posicion dada
2 -- 24 //metodo get que devuelve figuras 49 //true si todo bien, false si mal
3 */ 25 public Figura get(int pos){//me pasan posicion 50 //muevo todos los elementos una posicion
4 package clase03; 26 if(pos<indice){//compruebo que exista posicion 51 //a la izquierda para machacar
5 27 return v[pos];//devuelve figura 52 public boolean remove(int pos){
6 public class Contenedora { 28 } 53 if(pos<indice){
7 29 else{ 54 for(int i=pos;i<indice-1;i++){
8 //creo un array de figuras 30 return null;//sino null 55 v[i]=v[i+1];
9 //indico tamaño a traves del constructor 31 } 56 }
10 private Figura v[]; 32 } 57 indice--;
11 private int indice=0; 33 //metodo que devuelve todo el array 58 return true;
12 34 public Figura[] get(){ 59 }
13 //constructor 35 return v; 60 else{
14 public Contenedora(int tam) { 36 } 61 return false;
15 v=new Figura[tam]; 37 //metodo que devuelve elementos de la contenedora
16 } 38 public int size(){
17 //me pasan una figura que guardar en array v 39 return indice;
18 public void add(Figura f){ 40 }
19 if(indice<[Link]){//compruebo que array no esta lleno 41 //metodo pone el array a 0
20 v[indice]=f;//meto figura en indice 42 public void clear(){
21 indice++;//voy sumando figuras 43 indice=0;
22 } 44 for(int i=0;i<[Link];i++){
62 } 45 v[i]=null;
63 } 46 }
64 } 47 }
CLASE Contenedora
1 /* 27 public int size(){ 52 while(i<indice && encontrado==false){
2 -- 28 return indice; //nº elementos dentro 53 if(v[i].getMatricula().equals(matricula)){
3 */ 29 } 54 encontrado=true;
4 package clase04; 30 public void clear(){ //borro 55 }
5 31 indice=0; 56 else{
6 public class Contenedora { 32 int i; 57 i++;
7 private Barco v[]; 33 for(i=0;i<[Link];i++){ 58 }
8 private int indice=0; 34 v[i]=null; 59 }
9 35 } 60 if(i==indice){
10 public Contenedora(int tam) { 36 } 61 return null;
11 v = new Barco[tam]; 37 public int getEslora(double eslora){ 62 }
12 } 38 int i; 63 else{
13 public void add(Barco f){ 39 int contador=0; 64 return v[i];
14 if (indice<[Link]){ 40 65 }
15 v[indice]=f; 41 for(i=0;i<indice;i++){ 66 }
16 indice++; 42 if(v[i].getEslora()>eslora){ 67 }
17 } 43 contador++;
18 } 44 }
19 public Barco get (int pos){ 45 }
20 if(pos<indice && pos>=0){ 46 return contador;
21 return v[pos]; 47 }
22 } 48 public Barco getMatricula(String matricula){
23 else{ 49 int i=0;
24 return null; 50 boolean encontrado=false;
25 } 51
26 }
3.-Colecciones en Java.
Son clases contenedoras ya programadas. Su tamaño es dinámico y disponen de los métodos más comunes,
insertar, eliminar, buscar… ([Link].*;)
<<Interface>>
List
+add +get
+size +remove
ArrayList Vector LinkedList
+add +get +add +get +add +get
+size +remove +size +remove +size +remove
3.1.2.-ArrayList: la búsqueda de elementos es más rápida que un LinkedList, es la versión mejorada del vector, se
usa para consultas.
3.1.3.-LinkedList: la aplicación está optimizada para altas y eliminaciones de elementos, (altas y bajas).
3.2.-Interface Set: permite almacenar elementos no duplicados (no los inserta). El hashset.
3.3.-Interface Map: se trata de un Array asociativo. Es un Array donde el índice no es un número, sino texto.
Un Array asociativo nos permite acceder directamente a un elemento por su índice aunque son texto. Se usan
para consultas.
4.-Colecciones especiales.
4.1.-Cola: FIFO (First In First Out). La colección se llama ArrayDeque.
Entra à Luis David bea Saleà Luis David bea
MAIN
1 /* 13 ArrayDeque<String> cola=new ArrayDeque<String>();
2 -- 14
3 */ 15 //insertamos elementos en la cola
4 package clase12; 16 [Link]("luis");
5 17 [Link]("david");
6 import [Link]; 18 [Link]("bea");
7 19
8 public class Clase12 { 20 //saca el primero
9 21 String p=[Link]();
10 public static void main(String[] args) { 22 [Link](p);//saco el primero: luis
11 //FIFO, primero en entrar, primero en salir 23 }
12 //String: que guardo en la cola 24 }
MAIN
1 /* 13 Stack<String> p=new Stack<String>();
2 -- 14
3 */ 15 //insertamos elementos en la pila
4 package clase13; 16 [Link]("luis");
5 17 [Link]("david");
6 import [Link]; 18 [Link]("bea");
7 19
8 public class Clase13 { 20 //saca el ultimo
9 21 String a=[Link]();
10 public static void main(String[] args) { 22 [Link](a);//saco el ultimo: bea
11 //LIFO, ultimo en entrar, primero en salir 23 }
12 //String: que guardo en la pila 24 }
5.-Clases especiales.
5.1.-Clases miembro: son aquellas que se crean en el cuerpo de otra clase y no en un archivo Java independiente.
Cuando se compilan se crea un .class independiente para cada clase.
CLASE MAIN
public class A{ main--------------------------
public void método(){ A a=new A();
Interna i=new Interna(); [Link]();
[Link]();
}
class Interna{
public void saluda(){
[Link](“hola”);
}
La clase interna solo la puede usar A. Crea en la carpeta build 2 archivos: [Link] y A$[Link]
5.2.-Clases locales: son aquellas que se crean dentro de un método de otra clase, al compliarse se crea un .class
independiente con una numeración. A$n clase. (Ejà crea A$[Link] y [Link])
CLASE MAIN
public class A{ main--------------------------
public void método(){ A a=new A();
public void Saluda(){ [Link]();
[Link](“hola”);
}
}
Interna i=new Interna();
[Link]();
CLASE Contenedora
1 /* 18 //nos pasan ref y cuando la encuentre devuelve inmueble 48 //metodo elimina figura de posicion dada
2 -- 19 public Inmueble getReferencia(String referencia){ 35 return null;
3 */ 20 int i=0; 36 }
4 package clase14; 21 boolean encontrado=false; 37 }
5 22 38 public int getModificables(){
6 import [Link]; 23 while(i<[Link]() && encontrado==false){ 39 int i=0;
7 24 if([Link](i).getReferencia().equals(referencia)){ 40 int total=0;
8 public class Contenedora { 25 encontrado=true; 41
9 26 } 42 for(i=0;i<[Link]();i++){
10 private ArrayList<Inmueble> v=new ArrayList<Inmueble>(); 27 else{ 43 if([Link](i).permitirObra()==true){
11 28 i++; 44 total++;
12 //me pasan inmueble y si el tamaño array es <10 lo añado 29 } 45 }
13 public void add(Inmueble i){ 30 } 46 }
14 if([Link]()<10){ 31 if (encontrado==true){//si lo encuentras lo devuelves 47 return total;
15 [Link](i); 32 return [Link](i); 48 }
16 } 33 } 49 }
17 } 34 else{
CLASE Inmueble
1 /* 21 } 41 return fecha;
2 -- 22 public String getReferencia() { 42 }
3 */ 23 return referencia; 43 public void setFecha(LocalDate fecha) {
4 package clase14; 24 } 44 [Link] = fecha;
5 25 public void setReferencia(String referencia) { 45 }
6 import [Link].*; 26 [Link] = referencia; 46 @Override
7 27 } 47 public String toString() {
8 public class Inmueble { 28 public String getPropietario() { 48 return "Inmueble{" + "referencia=" + referencia
9 29 return propietario; 49 + ", propietario=" + propietario + ", metros="
10 private String referencia; 30 } 50 + metros + ", fecha=" + fecha + '}';
11 private String propietario; 31 public void setPropietario(String propietario) { 51 }
12 private double metros; 32 [Link] = propietario; 52 public boolean permitirObra(){
13 private LocalDate fecha; 33 } 53 return false;
14 34 public double getMetros() { 54 }
15 public Inmueble(String referencia, String propietario, 35 return metros; 55 }
16 double metros, LocalDate fecha) { 36 }
17 [Link] = referencia; 37 public void setMetros(double metros) {
18 [Link] = propietario; 38 [Link] = metros;
19 [Link] = metros; 39 }
20 [Link] = fecha; 40 public LocalDate getFecha() {
6.-Expresiones regulares.
Es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de
patrones de cadenas de caracteres y operaciones de sustitución. Se utiliza para validaciones, [Link] pedir una matricula y
vaalidarla..
1 /* 1 /* 25 [Link]("ciclo coincide");
2 -- 2 Crear expresiones regulares para validar el nombre 26 }
3 */ 3 de un ciclo formativo (1DAW, 2ASIR) y un numero 27 else{
4 package clase15; 4 de cuenta bancaria (4-4-2-10) digitos. 28 [Link]("ciclo no coincide");
5 5 */ 29 }
6 import [Link].*; 6 package clase15_1; 30
7 7 31 if([Link]()){
8 public class Clase15 { 8 import [Link].*; 32 [Link]("banco coincide");
9 9 33 }
10 public static void main(String[] args) { 10 public class Clase15_1 { 34 else{
11 11 35 [Link]("banco no coincide");
12 String matricula="2342ABJ"; 12 public static void main(String[] args) { 36 }
13 13 37 }
14 Pattern p=[Link]("[0-9]{4}[A-Z]{3}"); 14 String ciclo="1DAW"; 38 }
15 15
16 Matcher m=[Link](matricula); 16 Pattern c=[Link]("[1-2]{1}[A-Z]{2,4}"); //entre 2 y 4
17 17 Matcher m=[Link](ciclo);
18 if([Link]()){ 18
19 [Link]("coincide"); 19 String banco="1111-2222-33-4444444444";
20 } 20
21 else{ 21 Pattern b=[Link]("[0-9]{4}-[0-9]{4}-[0-9]{2}-[0-9]{10}");
22 [Link]("no coincide"); 22 Matcher m1=[Link](banco);
23 } 23
24 } 24 if([Link]()){
25 }
1.-Persistencia.
La persistencia busca guardar objetos en memoria, no en la RAM, porque al apagar el ordenador se va. Se busca
guardar en disco. Solo se almacenan los datos, no el código.
RAM
Persona p=new Persona(“luis”,”David”);
Luis Bea [Link](p);
David //al apagar el ordenador se pierde de la RAM
Como se repite tanto el código Java ofrece un mecanismo llamado Serialización. Si nuestra clase va a
almacenar en un fichero, indicamos implements Serializable (hereda).
MAIN
1 /* 16 31 Persona a=(Persona)[Link]();
2 -- 17 try{ 32 [Link]();
3 */ 18 ObjectOutputStream o=new ObjectOutputStream( 33 [Link]("Al preguntar nos queda: "+a);
4 package persistencia02; 19 new FileOutputStream("[Link]")); 34 }
5 20 [Link](p); 35 catch(Exception e){
6 import [Link].*; 21 [Link](); 36 [Link](e);
7 22 } 37 }
8 public class Persistencia02 { 23 catch(Exception e){ 38 }
9 24 [Link](e); 39 }
10 public static void main(String[] args) { 25 }
11 26 //deserializo
CLASE Persona
12 //para serializar, la clase Persona 27 try{ 4 package persistencia02;
13 //debe implementar Serializable 28 ObjectInputStream i=new ObjectInputStream( 5
14 Persona p=new Persona("111","luis",30); 29 new FileInputStream("[Link]")); 6 import [Link];
15 [Link]("antes de serializar: "+p); 30 //le digo que lea de tipo persona 7
8 public class Persona implements Serializable{
Public class Persona implements Serializable{ 9
Private String dni: 10 private String dni;
11 private String nombre;
Private transcent String nombre; //Si se pone transcent no se sacan los datos. 12 private int edad;13
14 public Persona(String dni, String nombre, int edad) {
Serializar un objeto en fichero es algo puntual. Si el almacenamiento es continuo mejor usar una Base de Datos.
2.2.-Java Persistence API (JPA): estándar, código para acceder a BD (Oracle, DB2, SQL Server o MySQL) desde
aplicaciones Java. Import javax persistence.*;
Lo primero será conectarse a la BD con EntityManagerFactory y EntityManager. Cuando utilizamos JPA y queremos
almacenar una clase en la BD lo indicaremos:
@Entity //implements Serializable no es obligatorio ponerlo
public class Clase implements Serializable{
//código
}
Cuando se almacena el objeto en la BD, solo se almacenan los datos, no el código. Si un atributo es static o
transient no se almacena en la BD.
private Strin a; //guarda la variable
private static String b; //no guarda la variable
private transient Strin c; //no guarda la variable
ObjectDB soporta índices o claves primarias implícitas, aunque siempre indicaremos que atributo es la clave
primaria con la anotación ID.
@Id
private String a; //clave primaria
La conexión JPA con la BD requiere el uso de EntityManager, cualquier operación que modifique el contenido de
la BD implica usar EntityTransaction.
2.2.1.-Ficheros jar (JAva aRchive): es un fichero comprimido de clases de Java ya programadas para utilizarlas. Se
copia el fichero [Link] en la carpeta de Java del proyecto. Despues en la carpeta de la
bibliotecaàagregar [Link]ón en Java: archivoàarchivo nuevoàpersistenciaàclase entidad.
CLASE Coche
1 /* 20 public String getMatricula() { 39 public int hashCode() {
2 -- 21 return matricula; 40 int hash = 0;
3 */ 22 } 41 hash += (id != null ? [Link]() : 0);
4 package persistencia03; 23 public void setMatricula(String matricula) { 42 return hash;
5 24 [Link] = matricula; 43 }
6 import [Link]; 25 } 44 @Override
7 import [Link].*; 26 public String getMarca() { 45 public boolean equals(Object object) {
8 27 return marca; 46
9 @Entity 28 } 47 if (!(object instanceof Coche)) {
10 public class Coche implements Serializable { 29 public void setMarca(String marca) { 48 return false;
11 //la anotacion @Id indica que el campo id sera la clave 30 [Link] = marca; 49 }
12 //la anotacion @GeneratedValue que es autonumerico 31 } 50 Coche other = (Coche) object;
13 @Id 32 public Long getId() { 51 if (([Link] == null && [Link] != null) ||
14 @GeneratedValue(strategy = [Link]) 33 return id; 52 ([Link] != null && )) {
15 private Long id; 34 } 53 return false;
16 35 public void setId(Long id) { 54 }
17 private String matricula; 36 [Link] = id; 55 return true;
18 private String marca; 37 } 56 }
19 38 @Override 57 @Override
58 public String toString() {
59 return "Coche{" + "id=" + id + ", matricula="
60 + matricula + ", marca=" + marca + '}';
61 }
62 }
MAIN
1 /* 30 //en la conexion me guardas las personas
2 -- 31 [Link](p1);
3 */ 32 [Link](p2);
4 package persistencia04; 33 [Link](p3);
5 34
6 import [Link]; 35 //al terminar de modificar la BD acepto los cambios
7 import [Link].*; 36 [Link]().commit();
8 37
9 public class Persistencia04 { 38 //cuantas personas hay y las guarda en q1
10 39 Query q1=[Link]("select count(p) from Persona p");
11 public static void main(String[] args) { 40 [Link]("Total: "+[Link]());
12 //abrimos conexion con la BD 41
13 //si no existe la BD la crea en nuestra carpeta 42 //saca DNI de las personas y las pasa a mayusculas
14 //$objectdb es la carpeta del proyecto 43 Query q2=[Link]("select UPPER([Link]()) "+"from Persona p");
15 //db es la subcarpeta 44 List<String> list=[Link]();
16 //[Link] nombre del fichero 45 for(String dni:list){
17 EntityManagerFactory emf=[Link] 46 [Link]("Dni: "+dni);
18 ("$objectdb/db/[Link]"); 47 }
19 //si la bd estuviera en red: 48
20 //(objectdb://localhost:6136/[Link];"+"user=admin;password=admin"); 49 //saca las personas de edad entre 20 y 30
21 EntityManager em=[Link](); 50 Query q3=[Link]("select p from Persona p"+
22 51 " where [Link]() Between 10 and 30");
23 //para dar de alta el coche 52 List<Persona> resultado=(List<Persona>)[Link]();
24 [Link]().begin(); 53 for(Persona p:resultado){//cada persona la meto en p
25 54 [Link]([Link]());//saco el nombre de las personas
26 Persona p1=new Persona((long)1,"111","luis",42); 55 }
27 Persona p2=new Persona((long)2,"222","david",12); 56 //cerramos la conexion
28 Persona p3=new Persona((long)3,"333","bea",16); 57 [Link]();
29 58 [Link]();
59 }
60 }
MAIN
1 /* 30 Barco b1=new Barco("111",42);
2 almacenar 3 objetos de tipo barco (matricula clave, 31 Barco b2=new Barco("222",12);
3 y eslora, en la BD [Link] de la carpeta bdobjectdb 32 Barco b3=new Barco("111",34);
4 de nuestro proyecto. 33
5 despues visualizar la matricula de los barcos con 34 //en la conexion me guardas las barcos
6 eslora superior a 30. 35 [Link](b1);
7 */ 36 [Link](b2);
8 package persistencia05; 37 [Link](b3);
9 38
10 import [Link]; 39 //al terminar de modificar la BD acepto los cambios
11 import [Link].*; 40 [Link]().commit();
12 41
13 public class Persistencia05 { 42 //saca los barcos con eslora > 30
14 43 Query q1=[Link]("select b from Barco b"+" where [Link]() > 30");
15 public static void main(String[] args) { 44 List<Barco> resultado=(List<Barco>)[Link]();
16 //abrimos conexion con la BD 45 for(Barco b:resultado){//cada barco lo meto en b
17 //si no existe la BD la crea en nuestra carpeta 46 [Link]([Link]());//saco la matricula de los barcos
18 //$objectdb es la carpeta del proyecto 47 }
19 //db es la subcarpeta 48 //busca por la clave primaria
20 //[Link] nombre del fichero 49 Barco p=[Link]([Link], "111");
21 EntityManagerFactory emf=[Link] 50 [Link](p);
22 ("$objectdb/dbobjectdb/[Link]"); 51
23 //si la bd estuviera en red: 52 //cerramos la conexion
24 //(objectdb://localhost:6136/[Link];"+"user=admin;password=admin"); 53 [Link]();
25 EntityManager em=[Link](); 54 [Link]();
26 55 }
27 //para dar de alta el barco 56 }
28 [Link]().begin();
29
CLASE Barco
1 /* 16 public Barco(String matricula, int eslora) { 31 }
2 -- 17 [Link] = matricula; 32 @Override
3 */ 18 [Link] = eslora; 33 public String toString() {
4 package persistencia05; 19 } 34 return "Barco{" + "matricula=" + matricula +
5 20 public String getMatricula() { 35 ", eslora=" + eslora + '}';
6 import [Link]; 21 return matricula; 36 }
7 import [Link].*; 22 } 37 }
8 23 public void setMatricula(String matricula) {
9 @Entity 24 [Link] = matricula;
10 public class Barco implements Serializable { 25 }
11 private static final long serialVersionUID = 1L; 26 public int getEslora() {
12 @Id 27 return eslora;
13 private String matricula; 28 }
14 private int eslora; 29 public void setEslora(int eslora) {
15 30 [Link] = eslora;
MAIN
1 /* 21 EntityManagerFactory emf= 40 [Link]().commit();
2 un aviso (id clave primaria, descripcion) se 22 [Link] 41
3 almacena en la BD [Link] 23 ("$objectdb/dbobjectdb/[Link]"); 42 [Link]("Id a buscar?: ");
4 pedir por teclado los datos de 3 avisos y 24 43 int id=[Link]();
5 almacenarlos en la BD. 25 EntityManager em=[Link](); 44
6 despues pedir por teclado un id y mostar 26 45 Aviso a=[Link]([Link],id);
7 por pantalla el aviso correspondiente 27 [Link]().begin(); 46 if(a==null){
8 (usar metodo find visto). 28 47 [Link]("Id no encontrado");
9 */ 29 int i; 48 }
10 package persistencia07; 30 for(i=0;i<3;i++){ 49 else{
11 31 [Link]("aviso nº: "); 50 [Link](a);
12 import [Link]; 32 int id=[Link](); 51 }
13 import [Link].*; 33 [Link](); 52 [Link]();
14 34 [Link]("introduzca descripcion: "); 53 [Link]();
15 public class Persistencia07 { 35 String desc=[Link](); 54 }
16 36 55 }
17 public static void main(String[] args) { 37 Aviso a=new Aviso(id,desc);
18 38 [Link](a);
19 Scanner teclado=new Scanner([Link]); 39 }
20
2.4.-Objetos embebidos:
La clase embebida (persona en este caso) se indica con @Embeddable y no lleva clave. Si borro el trabajo se
borran las personas dentro del trabajo. Como la clase trabajo tiene un ArrayList de personas, la persona debe estar
embebida.
2.5.-Resumen:
Almacenar: persist
EntityManagerFactory emf=[Link] //creamos la conexion
("$objectdb/dbobjectdb/[Link]"); //carpeta proyecto/db subcarpeta/ nombre fichero
EntityManager em=[Link](); //abrimos conexión con base de datos
[Link]().begin(); //damos de alta el barco
Barco b1=new Barco("111",42); //creamos barco
[Link](b1); //guardamos el barco en la conexión
[Link]().commit(); [Link](); [Link](); //aceptamos los cambios al terminar y cerramos conexion
Consultar: Query, JPQL, método find
Query q1=[Link]("select b from Barco b"+" where [Link]() > 30"); //sacamos barcos con eslora >30
Actualizar: [Link]().begin; //inicio la transacción
Persona p=[Link]([Link],”222”); //busco la persona con DNI 222
[Link](89); //cambio su edad
[Link]().commit(); //confirmo el cambio
Eliminar: [Link]().begin; //inicio la transacción
Persona p=[Link]([Link],”111”); //busco la persona con DNI 111
[Link](h); //borro la persona de la BD
[Link]().commit(); //confirmo el cambio
MAIN
1 /* 43 public static void ver(String usuario){ 85 }
2 diseñar un programa de envio de mensajes. 44 Scanner teclado=new Scanner([Link]); 86 catch (Exception e){
3 */ 45 try{ 87 [Link](e);
4 package persistencia11; 46 String linea; 88 }
5 47 File archivo=new File("[Link]"); 89 }
6 import [Link].*; 48 //mapeo en windows ("z:/"+usuario+".txt"); 90 public static void todos(String usuario){
7 import [Link].*; 49 //mapeo en mac 91
8 import [Link]; "/Volumes/Users/Public/Downloads/PROG/ 92 LocalDate fechaActual;
9 50 //CHAT/luisfalagan/[Link]" 93 Scanner teclado=new Scanner([Link]);
10 public class Persistencia11 { 51 if(![Link]()){ 94
11 52 [Link]("error no existe"); 95 try{
12 public static void main(String[] args) { 53 } 96 [Link]("a que usuario escribes?: ");
13 54 else{ 97 String nombre=[Link]();
14 Scanner teclado=new 55 FileReader fr=new FileReader(archivo); 98
Scanner([Link]); 56 BufferedReader br=new BufferedReader(fr); 99 [Link]("escribe un mensaje: ");
15 57 while((linea=[Link]())!=null){ 100 String mensaje=[Link]();
16 [Link]("nombre de usuario: "); 58 [Link](linea); 101
17 String usuario=[Link](); 59 } 102 FileWriter fichero=new FileWriter("[Link]",true);
18 60 [Link](); 103 PrintWriter pw=new PrintWriter(fichero);
19 int opcion=0; 61 } 104
20 62 } 105 fechaActual=[Link]();
21 while(opcion!=5){ 63 catch (Exception e){ 106 [Link](usuario+": "+fechaActual+":
22 menu(); 64 [Link](e); "+mensaje);
23 [Link]("introduce la opcion: 65 } 107 [Link]();
"); 66 } 108 }
24 opcion=[Link](); 67 public static void enviar(String usuario){ 109 catch (Exception e){
25 68 110 [Link](e);
26 switch(opcion){ 69 LocalDate fechaActual; 111 }
27 case 1:ver(usuario);break; 70 Scanner teclado=new Scanner([Link]); 112 }
28 case 2:enviar(usuario);break; 71 113 public static void borrar(String usuatio){
29 case 3:todos(usuario);break; 72 try{ 114
30 case 4:borrar(usuario);break; 73 [Link]("a quien escribes?: "); 115 try{
31 } 74 String nombre=[Link](); 116 FileWriter fichero=new FileWriter("[Link]");
32 } 75 117 PrintWriter pw=new PrintWriter(fichero);
33 } 76 [Link]("escribe un mensaje: "); 118 [Link]();
34 public static void menu(){ 77 String mensaje=[Link](); 119 }
35 [Link]("-------menu-------"); 78 120 catch (Exception e){
36 [Link]("------------------"); 79 FileWriter fichero=new FileWriter("[Link]",true); 121 [Link](e);
37 [Link]("1.-leer mensaje"); 80 PrintWriter pw=new PrintWriter(fichero); 122 }
38 [Link]("2.-enviar mensaje"); 81 123 }
39 [Link]("3.-correo a todos"); 82 fechaActual=[Link](); 124 }
40 [Link]("4.-borrar correo"); 83 [Link](usuario+": "+fechaActual+": "+mensaje);
41 [Link]("5.-salir"); 84 [Link]();
42 }
MAIN
1 /* 20 try{
2 diseñar un programa que cree el fichero 21 FileWriter fichero=new FileWriter("[Link]");
3 [Link] con este formato: 22 PrintWriter pw=new PrintWriter(fichero);
4 45,8,9, 23
5 1,120,56,78,98, 24 Random aleatorio=new Random();
6 2,35, 25 int totallineas=[Link](100)+1;
7 el fichero tendrá entre 1 y 100 lineas, 26 int i,j;
8 en cada linea entre 1 y 20 numeros y 27
9 cada nº es aleatorio entre 1 y 300. 28 for(i=0;i<totallineas;i++){//gestiona lineas
10 */ 29 int totalnumeros=[Link](20)+1;
11 package clase17; 30 for(j=0;j<totalnumeros;j++){//gestiona numeros
12 31 int numero=[Link](300)+1;
13 import [Link].*; 32 [Link](numero+",");
14 import [Link].*; 33 }
15 34 [Link]();
16 public class Clase17 { 35 }
17 36 [Link]();
18 public static void main(String[] args) { 37 }
19 38 catch(Exception e){
39 [Link](e);
40 }
41 }
42 }
MAIN Ventana
1 /* 116 private void jButton1ActionPerformed([Link] evt) {
2 -- 117 //saco lo que hay en la caja
3 */ 118 int numero1=[Link]([Link]());
4 package grafico08; 119 int numero2=[Link]([Link]());
5 120 int suma=numero1+numero2;
6 public class Grafico08 { 121
7 122 [Link]([Link](suma));//añade texto a la caja
8 public static void main(String[] args) { 123 }
9 Ventana v=new Ventana();
10 [Link]("calculadora");
11 [Link](true);
12 }
13 }
MAIN Ventana
1 /* 116 private void jButton1ActionPerformed([Link] evt) {
2 -- 117 //saco lo que hay en la caja
3 */ 118 int numero1=[Link]([Link]());
4 package grafico03; 119 int numero2=[Link]([Link]());
5 120 int suma=numero1+numero2;
6 import [Link]; 121
7 import [Link]; 122 [Link]([Link](suma));//añade texto a la caja
8 123 }
9 public class Grafico03 {
10
11 public static void main(String[] args) {
12 Ventana v=new Ventana();
13 [Link]("suma de dos numeros");
14 [Link](true)
15 ;
16 //para centrarla
17 [Link](null);
18
19 //añadir imagen de titulo de ventana
20 Image icono=[Link]().getImage
21 ([Link]("resources/[Link]"));
22
23 [Link](icono);
24
25 //no cambia tamaño de ventana
26 [Link](false);
27 }
28 }
1.2.-.Casilla de activacion(JCheckBox):
MAIN Ventana
1 /* 166 private void calculaActionPerformed([Link] evt) {
2 -- 167 double unidades=[Link]([Link]());
3 */ 168 double precio=[Link]([Link]());
4 package grafico07; 169 double total=unidades*precio;
5 170 [Link]([Link](total));//añade texto a la caja
6 public class Grafico07 { 171
7 172 if([Link]()){
8 public static void main(String[] args) { 173 total=total*1.18;
9 Ventana v=new Ventana(); 174 [Link]([Link](total));//
10 [Link]("calculo de factura"); 175 }
11 [Link](true); 176 if([Link]()){
12 } 177 double descuento=[Link]([Link]());
13 } 178 total=total-((total*descuento)/100);
179 [Link]([Link](total));
180 }
SINTAXIS:
f([Link]()){
}
MAIN Ventana
1 /* 156 private void generamenuActionPerformed([Link] evt) {
2 -- 157
3 */ 158 Vector<String> v=new Vector<String>();
4 package grafico09; 159
5 160 [Link]([Link]().toString());
6 public class Grafico09 { 161 [Link]([Link]().toString());
7 162 [Link]([Link]().toString());
8 public static void main(String[] args) { 163
9 Ventana v=new Ventana(); 164 [Link](v);
10 [Link]("Menu"); 165 }
11 [Link](true); SINTAXIS LISTA DESPLEGABLE:
12 } [Link](); //se vacia la lista
13 } [Link](); //se añaden elementos
String dato=[Link](); //extrae a dato el seleccionado
1.4.-Eventos:
MAIN Ventana
1 /* 99 private void generaparesActionPerformed([Link] evt) {
2 -- 100
3 */ 101 //saco valores y los paso a numeros
4 package grafico11; 102 int num1=[Link]([Link]().toString());
5 103 int num2=[Link]([Link]().toString());
6 public class Grafico11 { 104
7 105 int i;
8 public static void main(String[] args) { 106 Vector<String> v=new Vector<String>();//creo coleccion
9 Ventana v=new Ventana(); 107 for(i=num1;i<=num2;i++){
10 [Link]("genera pares"); 108 if(i%2==0){
11 [Link](true); 109 [Link]([Link](i));//lo meto en la coleccion
12 } 110 }
13 } 111 }
112 [Link](v);//meto la coleecion en la lista
113 }
SINTAXIS SPINNER:
int n=[Link]();
1.6.-Deslizador(jSlider):
MAIN Ventana
1 /* 135 private void desliza1StateChanged([Link] evt) {
2 -- 136 int red=[Link]();
3 */ 137 int green=[Link]();
4 package grafico12; 138 int blue=[Link]();
5 139 [Link](new Color (red, green, blue));
6 public class Grafico12 { 140 }
7 141
8 public static void main(String[] args) { 142 private void desliza2StateChanged([Link] evt) {
9 Ventana v=new Ventana(); 143 int red=[Link]();
10 [Link]("color RGB"); 144 int green=[Link]();
11 [Link](true); 145 int blue=[Link]();
12 } 146 [Link](new Color (red, green, blue));
13 } 147 }
148
149 private void desliza3StateChanged([Link] evt) {
150 int red=[Link]();
151 int green=[Link]();
152 int blue=[Link]();
153 [Link](new Color (red, green, blue));
154 }
1.7.-Boton de opcion(jRadioButton):
MAIN Ventana
1 /* 344 private void progresoActionPerformed([Link] evt) {
2 -- 345 int valor=[Link]();
3 */ 346 valor++;
4 package grafico04; 347 [Link](valor);
5 348 }
6 public class Grafico04 {
7 SINTAXIS JRADIOBUTTON:
8 public static void main(String[] args) { [Link](100);
9 Ventana v=new Ventana(); [Link](100);
10 [Link]("progreso");
11 [Link](true); Ejemplo: analizar ficheros de unidad D:
12 }
13 } int totalfichero=Contarficheros();
[Link](totalfichero);
while(-------------){
//analiza fichero y aumenta la barra
}
MAIN Ventana
1 /* 86 private void tablaActionPerformed([Link] evt) {
2 -- 87 //creacion de tabla
3 */ 88 DefaultTableModel modelo=new DefaultTableModel();
4 package grafico13; 89
5 90 [Link](4);
6 public class Grafico13 { 91 [Link](2);
7 92 //creamos la cabecera con una coleccion
8 public static void main(String[] args) { 93 Vector<String> v=new Vector<String>();
9 Ventana v=new Ventana(); 94 [Link]("col1");
10 [Link]("tabla datos"); 95 [Link]("col2");
11 [Link](true); 96 [Link](v);
12 } 97 //meto los datos
13 } 98 [Link]("10",0,0);//dato, fila, columna
99 [Link]("20",0,1);//dato, fila, columna
100
101 [Link]("30",1,0);//dato, fila, columna
102 [Link]("40",1,1);//dato, fila, columna
103
104 [Link]("50",2,0);//dato, fila, columna
105 [Link]("60",2,1);//dato, fila, columna
106
107 //para visualizar el modelo
108 [Link](modelo);
109 }
SINTAXIS JTable:
int fila=[Link](); //fila seleccionada
int fila[]=[Link](); //filas seleccionadas
String d=[Link](2,1); //que dato de celda seleccionado (fila 2 columna 1)
MAIN Ventana
1 /* 102 private void jButton1ActionPerformed([Link] evt) {
2 -- 103 //creacion de tabla
3 */ 104 DefaultTableModel modelo=new DefaultTableModel();
4 package grafico14; 105
5 106 [Link](3);
6 public class Grafico14 { 107 [Link](2);
7 108 //creamos la cabecera con una coleccion
8 public static void main(String[] args) { 109 Vector<String> v=new Vector<String>();
9 Ventana v=new Ventana(); 110 [Link]("provincia");
10 [Link]("tabla datos"); 111 [Link]("localidad");
11 [Link](true); 112 [Link](v);
12 } 113 //meto los datos
13 } 114 [Link]("leon",0,0);//dato, fila, columna
115 [Link]("ponferrada",0,1);//dato, fila, columna
116
117 [Link]("leon",1,0);//dato, fila, columna
118 [Link]("bembibre",1,1);//dato, fila, columna
119
120 [Link]("leon",2,0);//dato, fila, columna
121 [Link]("cacabelos",2,1);//dato, fila, columna
122
123 //para visualizar el modelo
124 [Link](modelo);
125 }
126
127 private void caja1ActionPerformed([Link] evt) {
128 // TODO add your handling code here:
129 }
130
131 private void tablaMouseClicked([Link] evt) {
132 int fila=[Link]();//fila seleccionada
133 //saco datos de la fila
134 String dato=[Link](fila,0).toString()+" "+[Link](fila, 1).toString();
135 [Link](dato);
136 }
1.13.-Cuadro de contraseña(jPasswordField):
1.14.-Cuadro formateado(jFormattedTextField):
Obligamos a que el contenido cumpla un formato, sino se borra solo. Extraemos contenido con getText();
1.16.-Ventanas Swing:
MAIN Ventana
1 /* 79 private void archivoActionPerformed([Link] evt) {
2 -- 80 //cuadro dialogo abrir archivo
3 */ 81 JFileChooser fc=new JFileChooser();
4 package grafico16; 82 int respuesta=[Link](this);
5 83 //comprobar si se ha pulsado aceptar
6 public class Grafico16 { 84 if(respuesta==JFileChooser.APPROVE_OPTION){
7 85 //crea un objeto file de archivo seleccionado
8 public static void main(String[] args) { 86 //en ruta se mete la ruta del archivo
9 Ventana v=new Ventana(); 87 File archivoElegido=[Link]();
10 [Link]("abre archivos y colores"); 88 String ruta=[Link]();
11 [Link](true); 89
12 } 90 [Link](ruta);//muestra ruta archivo (opcional)
13 } 91 }
92 }
93
94 private void colorActionPerformed([Link] evt) {
95 Color c=[Link](null,"selecciona color",[Link]);
96 if(c !=null){
97 //uso el color para algo...
98 }
99 }
1.17.-Menus clásicos:
MAIN Ventana
1 /* 20
2 -- 21 LocalTime h=[Link]();
3 */ 22
4 package grafico22; 23 [Link]([Link]([Link]()));
5 24
6 public class Grafico22 { 25 String min;
7 26 if([Link]()<10){
8 public static void main(String[] args) { 27 min="0"+[Link]();
9 Ventana v=new Ventana(); 28 }
10 [Link]("reloj"); 29 else{
11 [Link](true); 30 min=[Link]([Link]());
12 } 31 }
13 } 32 [Link](min);
33
34 String seg;
35 if([Link]()<10){
36 seg="0"+[Link]();
37 }
38 else{
39 seg=[Link]([Link]());
Ventana 40 }
41 [Link]( seg);
11 public class Ventana extends [Link] {
42 }
12
43 };
13 public Ventana() {
44 [Link](tarea);
14 initComponents();
45 [Link]();
15
46 }
16 Timer t=new Timer(1000,null);
17
18 ActionListener tarea= new ActionListener(){
19 public void actionPerformed(ActionEvent evt){
Para ejecutar codigo al iniciar la ventana Timer: guarda una tarea automaticamente al pasar x segundos
public Ventana() { public Ventana() {
initComponents(); initComponents();
//codigo a ejecutar Timer t=new Timer(1000,null); (1000=milisegundos)
} }
MAIN Ventana
1 /* 173
2 -- 174 private void jMenuItem6ActionPerformed([Link] evt) {
3 */ 175 //ultimo
4 package grafico23; 176 if([Link]()>0){//si hay algo en el array
5 177 pos=[Link]()-1;//sacas posicion ultima
6 public class Grafico23 { 178 mostrar();//muestras los datos
7 179 }
8 public static void main(String[] args) { 180 else{
9 Ventana v=new Ventana(); 181 pos=-1;//si esta vacio no saco nada
10 [Link]("agenda"); 182 }
11 [Link](true); 183 }
12 } 184
13 } 185 private void jMenuItem4ActionPerformed([Link] evt) {
186 //anterior
187 if([Link]()>0){//si hay algo en el array
188 pos--;//retrocedo posicion
189 if(pos<0){//si estoy al principio me quedo aqui
190 pos=0;
191 }
192 mostrar();//muestras los datos
193 }
194 else{
Ventana 195 pos=-1;//si esta vacio no saco nada
196 }
150 private void jMenuItem2ActionPerformed([Link] evt) {
197 }
151 [Link](0);
198
152 }
199 private void jMenuItem5ActionPerformed([Link] evt) {
153
200 //avanza
154 private void jMenuItem1ActionPerformed([Link] evt) {
201 if([Link]()>0){//si hay algo en el array
155 //guardar
202 pos++;//avanzo posicion
156 Persona p=new Persona([Link](),[Link](),[Link]());
203 if(pos==[Link]()){//si estoy al final me quedo aqui
157 [Link](p);//guardo la persona
204 pos=[Link]();
158 [Link]("");//pongo a cero
205 }
159 [Link]("");//pongo a cero
206 mostrar();//muestras los datos
160 [Link]("");//pongo a cero
207 }
161 }
208 else{
162
209 pos=-1;//si esta vacio no saco nada
163 private void jMenuItem3ActionPerformed([Link] evt) {
210 }
164 //primero
211 }
165 if([Link]()>0){//si hay algo en el array
212 private void mostrar(){//creo funcion mostrar
166 pos=0;//sacas posicion 0
213 [Link]([Link](pos).getDni());
167 mostrar();//muestras los datos
214 [Link]([Link](pos).getNombre());
168 }
215 [Link]([Link](pos).getApellidos());
169 else{
216 }
170 pos=-1;//si esta vacio no saco nada
171 }
172 }
CLASE persona
4 package grafico23; 11
5 12 public Persona(String dni, String nombre, String apellidos) {
6 public class Persona { 13 [Link] = dni;
7 14 [Link] = nombre;
8 private String dni; 15 [Link] = apellidos;
9 private String nombre; 16 }
10 private String apellidos; //resto de codigo…set y get y toString
MAIN Ventana
1 /* 104 v[i]=[Link](fin-ini+1)+ini;
2 -- 105 if([Link]()){
3 */ 106 while(v[i]%2!=0){//mientras el numero no sea par...sigues
4 package grafico24; 107 v[i]=[Link](fin-ini+1)+ini;
5 108 }
6 public class Grafico24 { 109 }
7 110 }
8 public static void main(String[] args) { 111 [Link](this,"numeros generados");
9 Ventana v=new Ventana(); 112 }
10 [Link]("aleatorios"); 113
11 [Link](true); 114 private void exportarActionPerformed([Link] evt) {
12 } 115 try{
13 } 116 FileWriter fichero=new FileWriter("[Link]");
117 PrintWriter pw=new PrintWriter(fichero);
118
119 for(int i=0;i<[Link];i++){
120 [Link](v[i]+"");
121 }
122 [Link]();
123 //mensaje al crearlo
Ventana 124 [Link](null,"archivo exportado");
97 private void generarActionPerformed([Link] evt) { 125 }
98 Random aleatorio=new Random(); 126 catch(Exception e){
99 127 [Link](null,e);
100 int ini=[Link]([Link]()); 128 }
101 int fin=[Link]([Link]()); 129 }
102
103 for(int i=0;i<1000;i++){ Generar: crea aleatorios y los guarda en un array.
Exportar: guarda el array en un [Link]
Ventana
200 //creo la conexion a la base de datos
201 Connection conexion=[Link](
202 "jdbc:mysql://localhost:3306/BDbanco","root","root");
203 //preparo la consulta
204 PreparedStatement sql=[Link](
205 "select * from cuentas where numerocuenta=?");
206 //meto los valores
207 [Link](1,numerocuenta);//primer ? cuenta
208 //ejecutamos la consulta
209 ResultSet rs=[Link]();
210 if([Link]()){
211 [Link]([Link]("saldo"));
212 }
213 else{
214 [Link](this,"no encontrado");
215 }
Ventana 216 [Link]();//cierro la conexion
13 public class Cajero extends [Link] { 217 }
14 218 catch(Exception e){
15 private String numerocuenta; 219 [Link](this,e);
16 //indico en el constructor lo que recibe 220 }
17 public Cajero(String numerocuenta) { 221 }
18 initComponents(); 223 private void salirActionPerformed([Link] evt) {
19 [Link]=numerocuenta; 224 //salir a ventana principal
20 } 225 Ventana v=new Ventana();
21 private void reintegro(double cantidad){ 226 [Link]("Ventana");
22 try{ 227 [Link](null);
23 //cargar el driver 228 [Link](true);
24 [Link]("[Link]"); 229 [Link](false);
25 //creo la conexion a la base de datos 230
26 Connection conexion=[Link]( 231 [Link]();
27 "jdbc:mysql://localhost:3306/BDbanco","root","root"); 232 }
28 //preparo la consulta 234 private void movimientosActionPerformed([Link] evt) {
29 PreparedStatement sql=[Link]( 235 [Link]("");
30 "insert into movimientos values (0,?,?,?,?)"); 236 try{
31 LocalDate fecha=[Link](); 237 //cargar el driver
32 [Link](1,[Link]()); 238 [Link]("[Link]");
33 [Link](2,[Link]); 239 //creo la conexion a la base de datos
34 [Link](3,"reintegro"); 240 Connection conexion=[Link](
35 [Link](4,cantidad); 241 "jdbc:mysql://localhost:3306/BDbanco","root","root");
36 int rs=[Link](); 242 //preparo la consulta
37 if(rs==1){ 243 PreparedStatement sql=[Link](
38 //la catidad que me pasan es negativa 244 "select * from movimientos where numerocuenta=?");
39 sql=[Link]( 245 //meto los valores
40 "update cuentas set saldo=saldo +? where numerocuenta=?"); 246 [Link](1,numerocuenta);//primer ? cuenta
41 247 //ejecutamos la consulta
42 [Link](1,cantidad); 248 ResultSet rs=[Link]();
43 [Link](2,[Link]); 249 while([Link]()){
44 250 String cadena=[Link]("fecha")+" "+
45 rs=[Link](); 251 [Link]("descripcion")+" "+
46 if(rs==1){ 252 [Link]("cantidad")+"\n";
47 [Link](this,"operacion realizada"); 253 [Link](cadena);
48 } 254 }
49 else{ 255 [Link]();//cierro la conexion
50 [Link](this,"operacion no realizada"); 256 }
51 } 257 catch(Exception e){
52 } 258 [Link](this,e);
53 else{ 259 }
54 [Link](this,"operacion no realizada"); 260 }
55 } 262 private void saca50ActionPerformed([Link] evt) {
56 [Link](); 263 reintegro(-50);
57 } 264 }
58 catch(Exception e){ 266 private void saca100ActionPerformed([Link] evt) {
59 [Link](this,e); 267 reintegro(-100);
60 } 268 }
61 } 270 private void saca200ActionPerformed([Link] evt) {
195 private void saldoActionPerformed([Link] evt) { 271 reintegro(-100);
196 [Link](""); 272 }
197 try{ 274 private void reintegroActionPerformed([Link] evt) {
198 //cargar el driver 275 reintegro(-[Link]([Link]()));
199 [Link]("[Link]"); 276 }
1.-Introducción.
MySql: (Apache, php, MySql). Xamp, wamp, lamp.
Script sql: fichero de texto (sql) con órdenes sql que se ejecutan en lote. Después se pega en php Myadmin y se ejecuta,
guardándose guarda la base de datos.
#Ejemplo de script
#si existe la base la borras, y si no la creas
drop database if exists BDejemplo;
create database BDejemplo;
#selecciono la BBDD con la que voy a trabajar
use BDejemplo;
#creo una tabla dos columnas a y b
create table tabla (a int, b int, primary key(a));
#cargo datos
insert into tabla (a,b) values (1,1);
insert into tabla (a,b) values (2,2);
insert into tabla (a,b) values (3,3);
Debemos tener el driver de la BD que usaremos. Es un fichero .jar que hay que buscar en internet (para mysql, Access,
Oracle). Para mysql ya la tiene incorporada Java. (agregar biblioteca à driver MySql jdbc. Si no esta se busca en internet
y agregar archivo JAR/Carpeta. Hay que incorporar el import [Link].*;
Los driver serán proporcionados por los propietarios del SGDB y deben ser cargados antes de conectarnos a la BD. La
sentencia para cargar el driver es:
[Link](“driver”);
[Link](“[Link]”); //En el caso del driver de mysql.
El driver y la cadena de conexión dependen de la BD, si cambiamos la BD hay que cambiarlos. Suelen parametrizarse en
un fichero externo XML.
Clase driver
//cargar el driver
[Link]("[Link]");
//creo la conexion a la base de datos
Connection conexion=[Link](
"jdbc:mysql://localhost:3306/BDejemplo","root","root");
while([Link]()){
//codigo
}
[Link]();//cierro la conexion
El next mueve la flecha hacia abajo y dice si hay datos, (busca en la fila entera).
1 /* 26 //[Link]("hubo resultados");
2 -- 27 //}
3 */ 28 //else{
4 package datos01; 29 //[Link]("no hubo resultados");
5 30 //}
6 import [Link].*; 31 //bucle para mover la flecha y que saque
7 32 //lo que hay en la columna a
8 public class Datos01 { 33 while([Link]()){
9 34 //modo uno
10 public static void main(String[] args) { 35 int a=[Link]("a");//columna a
11 try{ 36 int b=[Link]("b");//columna b
12 //cargar el driver 37 [Link](a+" "+b);
13 [Link]("[Link]"); 38 //modo dos
14 //creo la conexion a la base de datos 39 [Link]([Link]("a"));//columna a
15 Connection conexion=[Link]( 40 [Link](" ");
16 "jdbc:mysql://localhost:3306/BDejemplo","root","root"); 41 [Link]([Link]("b"));//columna b
17 42 }
18 [Link]("contectados a la BD"); 43 [Link]();//cierro la conexion
19 //aqui pongo el codigo 44 }
20 Statement sql=[Link]();//creo consulta 45 catch(Exception e){
21 //se guarda el resultado en rs 46 [Link](e);
22 ResultSet rs=[Link]("select * from tabla"); 47 }
23 48 }
24 //comprobamos si la select tuvo resultados 49 }
25 //if([Link]()){
1 /* 24 [Link]("contectados a la BD");
2 Buscar un cliente por su dni 25 //aqui pongo el codigo
3 */ 26 Statement sql=[Link]();//creo consulta
4 package datos02_1; 27 //se guarda el resultado en rs
5 28 ResultSet rs=[Link](
6 import [Link].*; 29 "select * from clientes where dni='"+dni+"'");
7 import [Link]; 30
8 31 if([Link]()){//si encuentras sacas los datos
9 public class Datos02_1 { 32 [Link]([Link]("nombre"));
10 33 [Link]([Link]("id"));
11 public static void main(String[] args) { 34 [Link]([Link]("nacimiento"));
12 Scanner sc=new Scanner([Link]); 35 }
13 [Link]("introduzca dni: "); 36 else{
14 String dni=[Link](); 37 [Link]("no encontrado");
15 38 }
16 [Link](sc); 39 [Link]();//cierro la conexion
17 try{ 40 }
18 //cargar el driver 41 catch(Exception e){
19 [Link]("[Link]"); 42 [Link](e);
20 //creo la conexion a la base de datos 43 }
21 Connection conexion=[Link]( 44 }
22 "jdbc:mysql://localhost:3306/BDdatos02","root","root"); 45 }
23
MAIN Ventana
1 /* 160 Connection conexion=[Link](
2 -- 161 "jdbc:mysql://localhost:3306/BDdatos02","root","root");
3 */ 162
4 package datos04; 163 //aqui pongo el codigo a actualizar
5 164 PreparedStatement sql=[Link](
6 public class Datos04 { 165 "update clientes set nombre=?,id=? where dni=?");
7 166 //meto los valores
8 public static void main(String[] args) { 167 [Link](1,[Link]());//primer ? metes nombre
9 Ventana v=new Ventana(); 168 [Link](2,[Link]([Link]()));
10 [Link]("buscar"); 169 [Link](3,[Link]());//tercer ? extraes dni
11 [Link](true); 170 [Link]("");[Link]("");[Link]("");
12 } 171
13 } 172 //devuelve el numero de filas actualizadas
173 int resultado=[Link]();
174
175 if(resultado==1){
176 [Link](this,"actualizado");
177 }
178 else{
179 [Link](this,"no actualizado");
180 }
181 [Link]();//cierro la conexion
182 }
Ventana 183 catch(Exception e){
184 [Link](this,e);
124 private void buscarActionPerformed([Link] evt) {
185 }
125 try{
186 }
126 //cargar el driver
187
127 [Link]("[Link]");
188 private void guardarActionPerformed([Link] evt) {
128 //creo la conexion a la base de datos
189 try{
129 Connection conexion=[Link](
190 //cargar el driver
130 "jdbc:mysql://localhost:3306/BDdatos02","root","root");
191 [Link]("[Link]");
131
192 //creo la conexion a la base de datos
132 PreparedStatement sql=[Link](
193 Connection conexion=[Link](
133 "select dni,nombre,id from clientes where dni=?");
194 "jdbc:mysql://localhost:3306/BDdatos02","root","root");
134 //sin comillas (primer ?, valor)
195
135 [Link](1,[Link]());//primer ? metes dni
196 //aqui pongo el codigo a insertar
136
197 PreparedStatement sql=[Link](
137 //se guarda el resultado en rs
198 "insert into clientes (dni,nombre,id) values(?,?,?)");
138 ResultSet rs=[Link]();
199 //meto los valores
139
200 [Link](1,[Link]());//primer ? metes dni
140 //comprobamos si la select tuvo resultados
201 [Link](2,[Link]());//segundo ? metes nombre
141 if([Link]()){
202 [Link](3,[Link]([Link]()));//tercer ? metes id
142 [Link]([Link]("nombre"));
203 [Link]("");[Link]("");[Link]("");
143 [Link]([Link]("id"));
204
144 }
205 //devuelve el numero de filas actualizadas
145 else{
206 int resultado=[Link]();
146 [Link](this, "no encontrado");
207
147 }
208 if(resultado==1){
148 [Link]();//cierro la conexion
209 [Link](this,"guardado");
149 }
210 }
150 catch(Exception e){
211 else{
151 [Link](this,e);
212 [Link](this,"no guardado");
152 }
213 }
153 }
214 [Link]();//cierro la conexion
154
215 }
155 private void actualizarActionPerformed([Link] evt) {
216 catch(Exception e){
156 try{
217 [Link](this,e);
157 //cargar el driver
218 }
158 [Link]("[Link]");
219 }
159 //creo la conexion a la base de datos
Script BDdatos02
# Ejemplo de script
drop database if exists BDdatos02;
# cargo datos
insert into clientes values ("111","luis",145,"1990-5-25");
insert into clientes values ("222","marta",109,"1987-2-12");
MAIN Ventana
1 /* 28 modelo=new DefaultTableModel();
2 Crear BD de articulos y la tabla articulos 29 //Titulo de las columnas
3 cargarla con 10 articulos y mostrar la 30 Vector<String> v=new Vector<String>();
4 tabla en Jtable. 31 [Link]("Rferencia");
5 */ 32 [Link]("Descripcion");
6 package datos06; 33 [Link]("Precio");
7 34 [Link]("Stock");
8 public class Datos06 { 35
9 36 [Link](v);
10 public static void main(String[] args) { 37
11 Ventana v=new Ventana(); 38 try{
12 [Link]("articulos"); 39 //cargar el driver
13 [Link](true); 40 [Link]("[Link]");
14 } 41 //creo la conexion a la base de datos
15 } 42 Connection conexion=[Link](
43 "jdbc:mysql://localhost:3306/BDarticulos","root", "root");
44 //creamos la consulta
45 Statement sql = [Link]();
46
47 ResultSet rs = [Link]("select * from articulos");
48
49 while([Link]()){
50 String [] fila={([Link]("referencia")),
51 ([Link]("descripcion")),
52 ([Link]("precio")),
53 ([Link]("stock"))};
54 [Link](fila);
Ventana 55 }
56 [Link](modelo);
17 public class Ventana extends [Link] {
57 [Link]();
18 DefaultTableModel modelo;
58 }
19 /**
59 catch(Exception e){
20 * Creates new form Articulos
60 [Link](this,e);
21 */
61 }
22 public Ventana() {
62 }
23 initComponents();
24 tabla();
25 }
26 private void tabla(){
27
Script BDarticulos
drop database if exists BDarticulos;
create database BDarticulos;
use BDarticulos;
MAIN Ventana
1 /* private void primeroActionPerformed([Link] evt) {
2 -- 168 try{
3 */ 169 [Link]();//si estoy al principio..
4 package datos07; 170 mostrar();
5 171 }
6 public class Datos07 { 172 catch(Exception e){
7 173 [Link](this,e);
8 public static void main(String[] args) { 174 }
9 Ventana v=new Ventana(); 175 }
10 [Link]("paneles, jPanel"); 176
11 [Link](true); 177 private void ultimoActionPerformed([Link] evt) {
12 } 178 try{
13 } 179 [Link]();//si estoy al final..
180 mostrar();
181 }
182 catch(Exception e){
183 [Link](this,e);
184 }
185 }
186
187 private void atrasActionPerformed([Link] evt) {
188 try{
189 if(![Link]()){//si no estoy al principio..
190 [Link]();//retrocede
Ventana 191 mostrar();
15 public class Ventana extends [Link] { 192 }
16 //creo la conexion aqui 193 }
17 private Connection conexion=null; 194 catch(Exception e){
18 private ResultSet rs=null; 195 [Link](this,e);
19 196 }
20 public Ventana() { 197 }
21 initComponents(); 198
22 199 private void adelanteActionPerformed([Link] evt) {
23 try{ 200 try{
24 //cargar el driver 201 if(![Link]()){//si no estoy al final..
25 [Link]("[Link]"); 202 [Link]();//avanza
26 //creo la conexion a la base de datos 203 mostrar();
27 conexion=[Link]( 204 }
28 "jdbc:mysql://localhost:3306/BDdatos02","root","root"); 205 }
29 206 catch(Exception e){
30 //aqui pongo el codigo 207 [Link](this,e);
31 PreparedStatement sql=[Link]( 208 }
32 "select * from clientes", 209 }
33 ResultSet.TYPE_SCROLL_SENSITIVE,//moverme arriba y abajo 210 @Override
34 ResultSet.CONCUR_READ_ONLY); 211 public void finalize(){
35 rs=[Link](); 212 try{
36 213 [Link]();
37 if([Link]()){//si hay resultados... 214 }
38 mostrar(); 215 catch(Exception e){
39 } 216 [Link](this,e);
40 else{ 217 }
41 [Link](this,"tabla vacia"); 218 }
42 }
43 //no se cierra la conexion
44 }
45 catch(Exception e){
46 [Link](e);
47 }
48 }
49 private void mostrar() throws Exception{
50 [Link]([Link]("dni"));
51 [Link]([Link]("nombre"));
52 [Link]([Link]("id"));
53 }
CLASE DAO
1 /* 46 encontrado=true;
2 -- 47 }
3 */ 48 return encontrado;
4 package datos08; 49 }
5 50 @Override //finaliza la conexion
6 import [Link].*; 51 public void finalize()throws Exception{
7 52 [Link]();
8 public class DAO { 53 }
9 private Connection conexion=null; 54 public boolean eliminar(String dni) throws Exception{
10 //hacemos constructor para pasar parametros 55 boolean eliminado=false;//para ver si esta eliminado
11 public DAO(String driver, String dsn, 56
12 String usuario, String password)throws Exception{ 57 //meto en ? el dni
13 //throws pasa el error arriba 58 PreparedStatement sql=[Link](
14 [Link](driver); 59 "delete from clientes where dni=?");
15 conexion=[Link](dsn,usuario, password); 60 [Link](1,dni);//primer ? metes dni
16 } 61
17 public boolean insertar(String dni, String nombre, int id)throws Exception{ 62 //devuelve cuantas filas se han e
18 boolean insertado=false;//para ver si esta insertado 63 int resultado=[Link]();
19 64 //si lo elimina lo devuelve
20 //meto en ??? el dni, nombre e id 65 if(resultado==1){
21 PreparedStatement sql=[Link]( 66 eliminado=true;
22 "insert into clientes(dni,nombre,id) values (?,?,?"); 67 }
23 [Link](1,dni);//primer ? metes dni 68 return eliminado;
24 [Link](2,nombre);//segundo ? metes nombre 69 }
25 [Link](3,id);//tercer ? metes id 70 public boolean actualizar(String nombre,
26 71 int id,String dni) throws Exception{
27 //devuelve cuantas filas se han actualiado 72 boolean actualizado=false;//para ver si esta actualizado
28 int resultado=[Link](); 73
29 //si lo encuentra lo devuelve 74 //meto en ??? el dni, nombre e id
30 if(resultado==1){ 75 PreparedStatement sql=[Link](
31 insertado=true; 76 "update clientes set nombre=?,id=? where dni=?");
32 } 77 //meto los valores
33 return insertado; 78 [Link](1,nombre);//primer ? metes nombre
34 } 79 [Link](2,id);//segundo ? metes id
35 public boolean buscar(String dni)throws Exception{ 80 [Link](3,dni);//tercer ? metes dni
36 boolean encontrado=false;//para ver si esta encontrado 81
37 82 //devuelve el numero de filas actualizadas
38 //meto en ??? el dni, nombre e id 83 int resultado=[Link]();
39 PreparedStatement sql=[Link]( 84 //si lo encuentra lo devuelve
40 "select * from clientes where dni=?"); 85 if(resultado==1){
41 [Link](1,dni);//primer ? metes dni 86 actualizado=true;
42 87 }
43 ResultSet r=[Link](); 88 return actualizado;
44 //si lo encuentra lo devuelve 89 }
45 if([Link]()){ 90 }
MAIN Ventana
1 /* 108
2 -- 109 private void nuevoActionPerformed([Link] evt) {
3 */ 110 Nuevo n=new Nuevo();
4 package datos10; 111 [Link]("nuevo vehiculo");
5 112 [Link](true);
6 public class Datos10 { 113 [Link](null);
7 114 }
8 public static void main(String[] args) { 115
9 Ventana v=new Ventana(); 116 private void eliminarActionPerformed([Link] evt) {
10 [Link]("taller"); 117 Eliminar e=new Eliminar();
11 [Link](true); 118 [Link]("eliminar vehiculo");
12 [Link](null); 119 [Link](true);
13 } 120 [Link](null);
14 } 121 }
122
123 private void burcarActionPerformed([Link] evt) {
124 Buscar b=new Buscar();
125 [Link]("buscar vehiculo");
126 [Link](true);
127 [Link](null);
128 }
129
130 private void listarActionPerformed([Link] evt) {
131 Listado l=new Listado();
Ventana 132 [Link]("listar vehiculo");
105 private void salirActionPerformed([Link] evt) { 133 [Link](true);
106 [Link](0); 134 [Link](null);
107 } 135 }
Nuevo
137 double n1=[Link]([Link]());
138 Integer n2=[Link]([Link]());
139
140 [Link](1,[Link]());//primer ? matricula
141 [Link](2,[Link]());//segundo ? marca
142 [Link](3,[Link]());//tercer ? modelo
143 [Link](4,n1);//cuarto ? cv
144 [Link](5,n2);//quinto ? km
145
146 int resultado=[Link]();
147
Nuevo 148 if(resultado==1){
125 private void jButton1ActionPerformed([Link] evt) { 149 [Link](this,"Alta realizada");
126 try{ 150 }
127 //cargar el driver 151 else{
128 [Link]("[Link]"); 152 [Link](this,"Alta no realizada");
129 //creo la conexion a la base de datos 153 }
130 Connection conexion=[Link]( 154 [Link](); //cerramos la conexión
131 "jdbc:mysql://localhost:3306/bdtaller","root","root"); 155 }
132 //Creamos una consulta 156 catch (Exception e){
133 PreparedStatement sql= [Link]( 157 [Link](e);
134 "insert into coches (matricula,marca,modelo,cv,km) " 158 }
135 + "values(?,?,?,?,?)"); 159 }
136 160
161 private void jButton2ActionPerformed([Link] evt) {
162 [Link]();
163 }
Buscar
136 //Creamos una consulta
137 PreparedStatement sql= [Link](
138 "select * from coches where matricula=?" );
139 [Link](1,[Link]());//primer ? matricula
140 //ejecutamos la consulta
141 ResultSet rs= [Link]();
142
143 if([Link]()){
144 [Link]([Link]("marca"));
145 [Link]([Link]("modelo"));
Buscar 146 [Link]([Link]("cv"));
125 private void jButton2ActionPerformed([Link] evt) { 147 [Link]([Link]("km"));
126 [Link](); 148 }
127 } 149 else{
128 150 [Link]([Link]("marca"));
129 private void BuscarActionPerformed([Link] evt) { 151 }
130 try{ 152 [Link]();//cerramos la conexión
131 //cargar el driver 153 }
132 [Link]("[Link]"); 154 catch (Exception e){
133 //creo la conexion a la base de datos 155 [Link](this,e);
134 Connection conexion=[Link]( 156 }
135 "jdbc:mysql://localhost:3306/bdtaller","root","root"); 157 }
Listado
90 ResultSet rs= [Link]();
91
92 DefaultTableModel modelo=new DefaultTableModel();
93
94 [Link]("Matrícula");
95 [Link]("Marca");
96 [Link]("Modelo");
97 [Link]("cv");
98 [Link]("km");
99
100 while([Link]()){
101 Object[]fila=new Object[5];
102
Listado 103 for (int i=0;i<5;i++){
75 private void jButton1ActionPerformed([Link] evt) { 104 fila[i]=[Link](i+1);
76 [Link](); 105 }
77 } 106 [Link](fila);
78 107 }
79 private void formWindowActivated([Link] evt) { 108 [Link](modelo);
80 try{ 109 [Link]();//cerramos la conexión
81 //cargar el driver 110 }
82 [Link]("[Link]"); 111 catch (Exception e){
83 //creo la conexion a la base de datos 112 [Link](e);
84 Connection conexion=[Link]( 113 }
85 "jdbc:mysql://localhost:3306/bdtaller","root","root"); 114 }
86 //Creamos la consulta
87 PreparedStatement sql= [Link](
88 "select * from coches" );
89
MAIN Ventana
1 /* 171 //actualizo la caja total
2 -- 172 double acum=0;
3 */ 173 //recorro hasta la ultima fila
4 package datos11; 174 for(int i=0;i<[Link]();i++){
5 175 double t=[Link]([Link](i,4).toString());
6 public class Datos11 { 176 acum=acum+t;//acumulo los resultados
7 177 [Link]([Link](acum));
8 public static void main(String[] args) { 178 }
9 Ventana v=new Ventana(); 179 }
10 [Link]("factura"); 180
11 [Link](true); 181 private void guardarActionPerformed([Link] evt) {
12 } 182 try{
13 } 183 //cargar el driver
1.-Imágenes en BD.
1.1.-Almacenar la ruta física: externa a la base de datos. Si me llevo la BD debo llevar las imágenes. No ocupan
espacio en la base de datos.
Id foto
1 C:/[Link]
2 C:/[Link]
1.2.-Almacenar la imagen: interna en la base de datos. Se guarda en bytes. Mysql usa el formato Blop. Las imágenes
se almacenan en la BD de Mysql y ocupan espacio.
Id foto
1 010011011001
2 100110110010
MAIN Ventana
1 /* 170 //meto los valores
2 -- 171 [Link](1,[Link]());//primer ? metes nombre
3 */ 172 //guardo la imagen
4 package datos12; 173 File file=new File([Link]());
5 174 FileInputStream fis=new FileInputStream(file);//lee el fichero
6 public class Datos12 { 175 //en la segunda ?, guardas el fichero entero
7 176 [Link](2,fis,(int)[Link]());
8 public static void main(String[] args) { 177
9 Ventana v=new Ventana(); 178 //devuelve el numero de filas actualizadas
10 [Link]("imagen frutas"); 179 int resultado=[Link]();
11 [Link](true); 180
12 } 181 if(resultado==1){
13 } 182 [Link](this,"guardado");
183 }
184 else{
185 [Link](this,"no guardado");
186 }
187 [Link]();//cierro la conexion
188 }
189 catch(Exception e){
190 [Link](this,e);
191 }
192 }
193
194 private void mostrarActionPerformed([Link] evt) {
195 try{
MAIN Ventana
1 /* 254 //guardo la imagen
2 -- 255 File file=new File([Link]());
3 */ 256 FileInputStream fis=new FileInputStream(file);//lee el fichero
4 package datos13; 257 //en la segunda ?, guardas el fichero entero
5 258 [Link](3,fis,(int)[Link]());
6 public class Datos13 { 259 [Link]("");[Link]("");[Link]("");
7 260
8 public static void main(String[] args) { 261 //devuelve el numero de filas actualizadas
9 Ventana v=new Ventana(); 262 int resultado=[Link]();
10 [Link]("imagen personas"); 263
11 [Link](true); 264 if(resultado==1){
12 } 265 [Link](this,"guardado");
13 } 266 }
267 else{
268 [Link](this,"no guardado");
269 }
270 [Link]();//cierro la conexion
271 }
272 catch(Exception e){
273 [Link](this,e);
274 }
275 }
276
277 private void buscarActionPerformed([Link] evt) {
278 try{
279 //cargar el driver
280 [Link]("[Link]");
281 //creo la conexion a la base de datos
Ventana 282 Connection conexion=[Link](
226 private void seleccionarActionPerformed([Link] evt) { 283 "jdbc:mysql://localhost:3306/BDpersonas","root","root");
227 //cuadro dialogo abrir archivo 284
228 JFileChooser fc=new JFileChooser(); 285 //aqui pongo el codigo a insertar
229 int respuesta=[Link](this); 286 PreparedStatement sql=[Link](
230 //comprobar si se ha pulsado aceptar 287 "select * from personas where dni=?");
231 if(respuesta==JFileChooser.APPROVE_OPTION){ 288 //meto los valores
232 //crea un objeto file de archivo seleccionado 289 [Link](1,[Link]());//primer ? metes nombre
233 //en ruta se mete la ruta del archivo 290
234 File ficheroelegido=[Link](); 291 ResultSet resultado=[Link]();
235 [Link]([Link]()); 292
236 } 293 if([Link]()){
237 } 294 [Link]([Link]("nombre"));
238 295 Blob blob=[Link]("imagen");
239 private void guardarActionPerformed([Link] evt) { 296 //convierto el blob en un array de bytes
240 try{ 297 byte[]data=[Link](1,(int)[Link]());
241 //cargar el driver 298 //pasamos datos a imagen
242 [Link]("[Link]"); 299 ImageIcon image=new ImageIcon(data);
243 //creo la conexion a la base de datos 300 [Link](image);
244 Connection conexion=[Link]( 301 }
245 "jdbc:mysql://localhost:3306/BDpersonas","root","root"); 302 else{
246 303 [Link](this,"no guardado");
247 //aqui pongo el codigo a insertar 304 }
248 PreparedStatement sql=[Link]( 305 [Link]();//cierro la conexion
249 //dni, nombre, ruta imagen 306 }
250 "insert into personas values (?,?,?)"); 307 catch(Exception e){
251 //meto los valores 308 [Link](this,e);
252 [Link](1,[Link]());//primer ? dni 309 }
253 [Link](2,[Link]());//primer ? nombre 310 }
CLASE Muestra
4 package repaso04; 38 return hora;
5 39 }
6 import [Link].*; 40 public void setHora(LocalTime hora) {
7 41 [Link] = hora;
8 public class Muestra { 42 }
9 43 public String getCodigopuesto() {
10 private LocalDate fecha; 44 return codigopuesto;
11 private LocalTime hora; 45 }
12 private String codigopuesto; 46 public void setCodigopuesto(String codigopuesto) {
13 private String matricula; 47 [Link] = codigopuesto;
14 private double tasa; 48 }
15 49 public String getMatricula() {
16 public Muestra(LocalDate fecha, LocalTime hora, 50 return matricula;
17 String codigopuesto, String matricula, 51 }
18 double tasa) throws Exception { 52 public void setMatricula(String matricula) {
19 //controlo el fallo de throws 53 [Link] = matricula;
20 if(tasa<0 || tasa>2.5){ 54 }
21 throw new Exception("tasa no permitida"); 55 public double getTasa() {
22 } 56 return tasa;
23 else{ 57 }
24 [Link] = fecha; 58 public void setTasa(double tasa) throws Exception{
25 [Link] = hora; 59 if(tasa<0 || tasa>2.5){
26 [Link] = codigopuesto; 60 throw new Exception("tasa no permitida");
27 [Link] = matricula; 61 }
28 [Link] = tasa; 62 else{
29 } 63 [Link] = tasa;
30 } 64 }
31 public LocalDate getFecha() { 65 }
32 return fecha; 66 @Override
33 } 67 public String toString() {
34 public void setFecha(LocalDate fecha) { 68 return "Muestra{" + "fecha=" + fecha + ", "
35 [Link] = fecha; 69 + "hora=" + hora + ", codigopuesto=" + codigopuesto + ", "
36 } 70 + "matricula=" + matricula + ", tasa=" + tasa + '}';
37 public LocalTime getHora() { 71 }
72 }
1 /* 35 try{
2 crear programa que crea clases. 36 FileWriter fichero=new FileWriter(clase+".java");//abro archivo
3 */ 37 PrintWriter pw=new PrintWriter(fichero);
4 package repaso08; 38
5 39 [Link]("public class "+clase+"{");
6 import [Link]; 40 //bucle para crear atributos
7 import [Link]; 41 //con recorrer un array vale
8 import [Link]; 42 for(int i=0;i<[Link]();i++){
9 import [Link]; 43 [Link](" private "+[Link](i)+" "+[Link](i)+";");
10 44 }
11 public class Repaso08 { 45 [Link]("}");
12 46 [Link]();
13 public static void main(String[] args) { 47 [Link]("clase creada");
14 Scanner teclado=new Scanner([Link]); 48 }
15 49 catch(Exception e){
16 [Link]("nombre de la clase: "); 50 [Link](e);
17 String clase=[Link](); 51 }
18 //creo array para guardar los nombres 52 }
19 ArrayList<String> atributos=new ArrayList<String>(); 53 }
20 ArrayList<String> tipo=new ArrayList<String>();
21
22 String mas="si";
23 while([Link]().equals("si")){
24 [Link]("nombre de atributo: ");
25 String atributo=[Link]();
26 [Link](atributo);
27
28 [Link]("tipo de atributo: ");
29 String tipos=[Link]();
30 [Link](tipos);
31
32 [Link]("mas? si/no ");
33 mas=[Link]();
34 }
1 /* 27
2 pedir por teclado precio min y max y mostrar 28 int min=[Link]();
3 articulos comprendidos entre ellos. 29 [Link]("introduzca un valor maximo: ");
4 */ 30 int max=[Link]();
5 package repaso09_3; 31 //aqui pongo el codigo de la consulta
6 32 PreparedStatement sql=[Link](
7 import [Link]; 33 "select nombre from productos where precio between ? and ?");
8 import [Link]; 34 [Link](1,min);
9 import [Link]; 35 [Link](2,max);
10 import [Link]; 36
11 import [Link]; 37 //se guarda el resultado en rs
12 38 ResultSet rs=[Link]();
13 public class Repaso09_3 { 39 //bucle para sacarlos todos
14 40 while([Link]()){
15 public static void main(String[] args) { 41 [Link]([Link]("nombre"));
16 try{ 42 }
17 //cargar el driver 43 [Link]();//cierro la conexion
18 [Link]("[Link]"); 44 }
19 //creo la conexion a la base de datos 45 catch(Exception e){
20 Connection conexion=[Link]( 46 [Link](e);
21 "jdbc:mysql://localhost:3306/BDejemplo2","root","root"); 47 }
22 48 }
23 [Link]("contectados a la BD"); 49 }
24
25 Scanner teclado=new Scanner([Link]);
26 [Link]("introduzca un valor minimo: ");