El documento explica conceptos básicos de clases y objetos en Java como clases, atributos, métodos, constructores, herencia y polimorfismo. Define las clases Pelota y Fabrica para crear objetos pelota de diferentes colores y materiales. La clase Fabrica contiene el método main que crea instancias de la clase Pelota y modifica sus atributos.
3. Define los atributos y métodos con los que contarán todos los objetos de esta clase.
4. Pensemos en la clase pelota. Qué es una pelota? Una pelota es un objeto circular que tiene color y que dependiendo del material en que se elabore puede rebotar o no
13. Arreglo materialesPermitidos materialesPermitidos 0 1 2 plastico tela cuero Índice del arreglo Para acceder al contenido del arreglo se utiliza la sintaxis: nombreArreglo[indice] Por ejemplo para recuperar el valor plástico: materialesPermitidos[0]
14.
15. Pelota(color): constructor – sobrecargado – que recibe un parámetro, correspondiente al color de la pelota que se está creando (instanciando)
19. Clase Pelota (Pelota.java) class Pelota{ String color; String material; //Arreglo de Strings que define los materiales permitidos String[] materialesPermitidos = {"plastico","tela","cuero"}; /* * Constructor */ Pelota(){ color = "Blanco";//por defecto las pelotas se crean Blancas material = materialesPermitidos[0];//por defecto se crean de plastico } /* * Constructor sobrecargado: permite definir el color * deseado al momento de la construcción de la pelota */ Pelota(String colorDeseado){ color = colorDeseado;//por defecto las pelotas se crean Blancas material = materialesPermitidos[0];//por defectos se crean de plastico } /* * modifica el material de una pelota conviertiendolo en plastico */ void dePlastico(){ material = materialesPermitidos[0]; } /* * modifica el material de una pelota conviertiendolo en tela */ void deTela(){ material = materialesPermitidos[1]; } /* * modifica el material de una pelota conviertiendolo en cuero */ void deCuero(){ material = materialesPermitidos[2]; } }
20.
21. Clase Fábrica (Fabrica.java) /* * Clase Fabrica: * hara uso de la clase Pelota * para fabricar las pelotas */ class Fabrica{ public static void main(String[] args){ //fabricacion de una pelota blanca de plastico Pelota producto1 = new Pelota(); //fabricacion de una pelota amarilla de plastico Pelota producto2 = new Pelota("Amarillo"); //modificacion de la primera pelota para que sea de cuero producto1.deCuero(); //modificacion de la segunda pelota para que sea de tela producto2.deTela(); //notificacion al usuario final System.out.println("Se han fabricado - instanciado - dos pelotas diferentes"); } }
22.
23. Asimismo en la clase Fábrica debemos hacer uso del nuevo método definido para imprimir las características de cada producto
24. Método mostrarCaracteristicas (Pelota.java) /* * permite visualizar el material y el color de * una pelota */ String[] mostrarCaracteristicas(){ String[] caracteristicas;//se define un arreglo caracteristicas = new String[2];//el arreglo tendra dos posiciones caracteristicas[0] = color;//en la posicion 0 tendra el color caracteristicas[1] = material;//en la posicion 1 tendra el material return caracteristicas; }
25. Consultando los productos (Fabrica.java) //detalle de las pelotas fabricadas System.out.println("Pelota 1"); System.out.println("Color: "+producto1. mostrarCaracteristicas()[0] ); System.out.println("Material: "+producto1. mostrarCaracteristicas()[1] ); System.out.println("Pelota 2"); System.out.println("Color: "+producto2.mostrarCaracteristicas()[0]); System.out.println("Material: "+producto2.mostrarCaracteristicas()[1]);
28. Departamento.java class Departamento{ String nombre; //constructor Departamento(){ nombre = "Sin Nombre"; } /* * constructor sobrecargado: * esta nueva version del constructor permitira * fijar el nombre de un departamento tan pronto * como se crea */ Departamento(String auxNombre){ nombre = auxNombre; } /* * este metodo permite cambiar el nombre * de un departamento previamente creado * se habla de cambiar en lugar de definir * pues en el peor de los casos un departamento * se llama Sin Nombre - que ya es en si un nombre - */ void cambiarNombre(String nuevoNombre){ nombre = nuevoNombre; } /* * este metodo permite recuperar el nombre * de un departamento creado previamente */ String recuperarNombre(){ return nombre; } }
29.
30. Dentro de este método serán creados 5 Departamentos diferentes con los siguientes nombres: Hogar, Belleza, Entretenimiento, Libros, Jardín
31. El método presentará la información al usuario dándole la bienvenida al almacen por Departamentos
32. Kiosko.java class Kiosko{ /* * Este metodo sera el punto de entrada de la * aplicacion */ public static void main(String[] args){ /* * arreglo de Strings con los nombres de los * departamentos */ String[] nombresDepartamentos = {"Hogar","Belleza","Entretenimiento", "Libros","Jardin"};//1 statement puede escribirse en varias lineas // String auxiliar de bienvenida al usuario String saludo = "Bienvenido a Nuestra Tienda de Departamentos"; // variable tipo int auxiliar para el listado int aux = 0; /* * creacion de los 5 Departamentos usando el constructor * sobrecargado */ Departamento depto1 = new Departamento(nombresDepartamentos[0]); Departamento depto2 = new Departamento(nombresDepartamentos[1]); Departamento depto3 = new Departamento(nombresDepartamentos[2]); Departamento depto4 = new Departamento(nombresDepartamentos[3]); Departamento depto5 = new Departamento(nombresDepartamentos[4]); /* * Mensaje de bienvenida al usuario, indicacion del numero de * departamentos existentes y listado de los mismos */ System.out.println(saludo); System.out.println("Contamos con los siguientes (" +nombresDepartamentos.length+") Departamentos:"); System.out.println(++aux+" - "+depto1.recuperarNombre()); System.out.println(++aux+" - "+depto2.recuperarNombre()); System.out.println(++aux+" - "+depto3.recuperarNombre()); System.out.println(++aux+" - "+depto4.recuperarNombre()); System.out.println(++aux+" - "+depto5.recuperarNombre()); } }
33. Control de Flujo Definiendo el curso a seguir dentro de la aplicación
34.
35. Simple1.java - Ejemplo class Simple1{ /* * entry point de la clase Simple1. En esta * ocasion se empleara el arreglo de parametros * de entrada */ public static void main(String[] args){ if( args.length == 0 ){ System.out.println("Usted no paso ningun parametro a la aplicacion Simple1"); } System.out.println("Fin de la primera prueba"); } }
36.
37.
38. length es un atributo de los arreglos que se utiliza para determinar su tamaño
39.
40. Simple2.java class Simple2{ /* * entry point de la clase Simple1. En esta * ocasion se empleara el arreglo de parametros * de entrada */ public static void main(String[] args){ if(args.length == 0){ System.out.println("Usted no paso ningun parametro a la aplicacion Simple2"); }else{ System.out.println("Usted paso "+args.length+" parametro(s) a la aplicacion Simple2"); } System.out.println("Fin de la segunda prueba"); } } true false
41.
42. Simple3.java class Simple3{ /* * entry point de la clase Simple1. En esta * ocasion se empleara el arreglo de parametros * de entrada */ public static void main(String[] args){ if(args.length == 0){ System.out.println("Usted no paso ningun parametro a la aplicacion Simple3"); }else{ if(args.length > 1){ System.out.println("Usted paso mas de 1 parametro a la aplicacion Simple3"); }else{ System.out.println("Usted paso exactamente 1 parametro a la aplicacion Simple3"); } } System.out.println("Fin de la segunda prueba"); } }
43.
44. La aplicación deberá contar con un mensaje de ayuda que aparezca cuando el usuario ingrese el caracter ?, dicho mensaje será: Para acceder a la información del departamento ingrese un número entre 1 y 5 y presione ENTER.
45. La aplicación deberá presentar un mensaje de error si el usuario ingresa cualquier otro valor.
46.
47. Para poder usar este método es necesario declarar una excepción
48. ReadMe.java – leer un int import java.io.IOException; //requerida para el manejo de excepciones class ReadMe{ public static void main(String[] args){ //variable auxiliar para almacenar un int int numeroIngresado; System.out.println("Ingrese un numero: "); try{ numeroIngresado = (int)System.in.read(); /* * numeroIngresado contiene un valor ASCII * que debe modificarse antes de poderse * usar */ System.out.println(numeroIngresado - '0');//para convertir del valor ASCII al int } catch (IOException e){ System.out.println("No se puede leer el dato"); } }//main method }//ReadMe Class
49. ReadMe2.java – leer un char import java.io.IOException;//requerida para el manejo de excepciones class ReadMe2{ public static void main(String[] args){ //variable auxiliar para almacenar un char char caracterIngresado; System.out.println("Ingrese un caracter: "); try{ caracterIngresado = (char)System.in.read(); System.out.println(caracterIngresado); } catch (IOException e){ System.out.println("No se puede leer el dato"); } } }
50. Kiosko.java – modificaciones solicitadas //modificaciones requeridas para implementar el ejercicio // de la diapositiva 28 int asciiValue; //recuerde que el valor es el codigo ASCII System.out.println("Ingrese el numero del departamento de su interes o ? para mas informacion"); try{ asciiValue = System.in.read(); /* * Los valores de la tabla ASCII para los numeros 1 al 5 son * 49,50,51,52,53 * El valor del simbolo ? es: 63 */ if(asciiValue >= 49 & asciiValue <= 53){ //se trata de un departamento valido y se presenta la informacion if(asciiValue == 49){ System.out.println("Departamento: "+depto1.recuperarNombre()); } if(asciiValue == 50){ System.out.println("Departamento: "+depto2.recuperarNombre()); } if(asciiValue == 51){ System.out.println("Departamento: "+depto3.recuperarNombre()); } if(asciiValue == 52){ System.out.println("Departamento: "+depto4.recuperarNombre()); } if(asciiValue == 53){ System.out.println("Departamento: "+depto5.recuperarNombre()); } } if(asciiValue == 63){ System.out.println("Para acceder a la informacion del departamento ingrese un numero entre 1 y 5 y presione ENTER"); } /* * si en este punto la variable isValid es false quiere decir que * el usuario ingreso un dato invalido */ if((asciiValue>=0 & asciiValue<49)|(asciiValue>53 & asciiValue<63)|asciiValue>63){ System.out.println("Opcion Invalida"); } } catch(IOException e){ System.out.println("Se produjo un error al intentar leer su informacion"); }
53. Simple4.java – For Loop import java.io.IOException;//requerida para el manejo de excepciones class Simple4{ public static void main(String[] args){ //el primer parametro ingresado por el usuario //es el limite hasta el que se ejecuta el ciclo For try{ for(int i=0;i< Integer.parseInt(args[0]); i++){ System.out.println(i); } } catch( ArrayIndexOutOfBoundsException e){ System.out.println("No es posible iterar ese numero de veces"); } } }
54.
55. Kiosko.java Departamento depto1 = new Departamento(nombresDepartamentos[0]); Departamento depto2 = new Departamento(nombresDepartamentos[1]); Departamento depto3 = new Departamento(nombresDepartamentos[2]); Departamento depto4 = new Departamento(nombresDepartamentos[3]); Departamento depto5 = new Departamento(nombresDepartamentos[4]); //el cambio que sigue requiere un arreglo de departamentos para //su implementacion Departamento[] depto = new Departamento[nombresDepartamentos.length]; for(int i=0;i<nombresDepartamentos.length;i++){ depto[i] = new Departamento(nombresDepartamentos[i]); } ANTES DESPUES
58. El Loop Do..While es muy similar al While, pero la diferencia entre los dos reside en que en éste último las instrucciones contenidas siempre se ejecutan al menos una vez
59. Simple5.java – While vs Do..While class Simple5{ public static void main(String[] args){ int aux = 1; /* * esta es la diferencia entre while y do while */ while(aux<=Integer.parseInt(args[0])){ System.out.println("While - paso "+aux); aux++; } aux = 1; do{ System.out.println("Do..While - paso "+aux); aux++; }while(aux<=Integer.parseInt(args[0])); } }