JAVA2: Segunda Lección
-
Upload
jose-martinez -
Category
Education
-
view
1.819 -
download
2
Transcript of JAVA2: Segunda Lección
Clases y Objetos
Pequeño Repaso
Clase
Una clase es una plantilla o molde para la creación de un tipo de objetos.
Define los atributos y métodos con los que contarán todos los objetos de esta clase.
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
Clase: Pelota
Atributos:
Color
Material: plástico, tela, cuero
Métodos:
Pelota()
Pelota(color)
dePlastico()
deTela()
deCuero()
Atributos Clase Pelota
Color: una cadena de texto que almacene el nombre del color de la pelota
String color;
Material: una cadena de texto que almacena el material del que está hecha la pelota, pero que sólo puede tomar/tener tres valores: plástico, tela, cuero
String material;
String[] materialesPermitidos = {“plastico”,”tela”,”cuero”};//define un arreglo
Arreglo materialesPermitidos
materialesPermitidos
0
1
2
plastico
tela
cuero
Índice del arreglo
Para acceder al contenido
del arreglo se utiliza lasintaxis:
nombreArreglo[indice]Por ejemplo para
recuperarel valor plástico:
materialesPermitidos[0]
Métodos Clase Pelota
Pelota(): constructor sin parámetros
Pelota(color): constructor – sobrecargado – que recibe un parámetro, correspondiente al color de la pelota que se está creando (instanciando)
dePlastico(): método que define material = plastico
deTela(): método que define material = tela
deCuero(): método que define material = cuero
Clase Pelota (Pelota.java)
class Pelota{
String color;
String material;
//Arreglo de Strings que define los materiales permitidos
String[] materialesPermitidos = {"plastico","tela","cuer
/*
* modifica el material de una pelota conviertiendolo en plastico
*/
void dePlastico(){
material = materialesPermitidos[0];
Clase Fabrica
La clase Fábrica representa una fábrica de pelotas, cuenta únicamente con un método estático main que permite su ejecución directa
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
Revisando las Pelotas instanciadas
Para poder revisar las pelotas instanciadas es necesario definir un nuevo método en la clase Pelota que permita consultar el color y material de las mismas
Asimismo en la clase Fábrica debemos hacer uso del nuevo método definido para imprimir las características de cada producto
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
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]);
Aplicación Curso
Clases Kiosko y Departamento
Clase Departamento
La clase Departamento cuenta con un atributo tipo String para el nombre y con los métodos requeridos para modificar y recuperar el nombre. Asimismo cuenta con un constructor
Departamento.java
class Departamento{
String nombre;
//constructor
Departamento(){
nombre = "Sin Nombre";
}
/*
* este metodo permite cambiar el nombre
* de un departamento previamente creado
* se habla de cambiar en lugar de definir
Clase Kiosko
La clase Kiosko contará con un método que servirá como punto de entrada de la aplicación
Dentro de este método serán creados 5 Departamentos diferentes con los siguientes nombres: Hogar, Belleza, Entretenimiento, Libros, Jardín
El método presentará la información al usuario dándole la bienvenida al almacen por Departamentos
Kiosko.java
class Kiosko{
/*
* Este metodo sera el punto de entrada de la
* aplicacion
*/
public static void main(String[] args){
Departamento depto1 = new Departamento(nombresDepartamentos[0]);
Departamento depto2 = new Departamento(nombresDepartamentos[1]);
Departamento depto3 = new Departamento(nombr
Control de Flujo
Definiendo el curso a seguir dentro de la aplicación
If
If es el primer mecanismo de control de flujo que puede usarse en Java. Evalúa una condición lógica y si el resultado es verdadero (true) realiza el conjunto de instrucciones (statements) que se hayan definido. En caso de que el resultado de la evaluación sea falso (false) no se realiza ninguna de las instrucciones contenidas en el If y el programa continúa luego del } que define el final del mismo
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){
Simple1.java - Ejemplo
Al invocar esta aplicación sin parámetros se observa la siguiente salida:
java Simple1
Usted no paso ningun paramentro a la aplicacion Simple1
Fin de la primera prueba
En caso de invocar la aplicación pasando parámetros la salida cambia por la siguiente:
java Simple1 param1
Fin de la primera pruebaparámetro
Simple1.java - Explicación
La condición a evaluar en esta aplicación de ejemplo tiene que ver con el tamaño del arreglo que almacena los argumentos de entrada: String[] args, en caso de que la aplicacion se invoque sin argumentos (args.length == 0) se ejecuta la instrucción de impresión que se encuentra definida dentro de los {} del If, en caso contrario sólo se imprime la segunda línea.
length es un atributo de los arreglos que se utiliza para determinar su tamaño
If - Else
La instrucción If – Else permite definir condiciones tanto para el caso en el que la expresión evaluada sea verdadera, como para cuando sea falsa.
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){
true
false
If anidados
De la misma forma que en la vida real la toma de desiciones implica la ejecución de varios pasos, en programación – en JAVA – es posible anidar If para condicionar el flujo de un programa de forma compleja
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){
De vuelta al Almacén
Ahora que los diferentes departamentos del almacén han sido codificados, su jefe desea la siguiente funcionalidad:
La aplicación deberá responder a una entrada numérica del usuario y presentar el Departamento correspondiente, por ejemplo si el usuario ingresa el número 1 el programa presentará el mensaje: Departamento: Hogar.
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
Cómo leer datos del usuario?
Para capturar un byte (caracter) del usuario en medio de la ejecución de un programa se emplea el método: System.in.read() y se asigna su valor de retorno a una variable del tipo deseado: int / char
Para poder usar este método es necesario declarar una excepción
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
/*
* numeroIngresado contiene un valor ASCII
* que debe modificarse antes de poderse
* usar
*/
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: ");
Kiosko.java – modificaciones solicitadas
//modificaciones requeridas para implementar el ejercicio
// de la diapositiva 28
int asciiValue; //recuerde que el valor es el codigo ASCII
if(asciiValue == 52){
System.out.println("Departamento: "+depto4.recuperarNombre());
}
if(asciiValue == 53){
Loops
Multiples iteraciones
For Loop
Se trata de una clase de Loop que realiza una instrucción (statement) o conjunto de instrucciones hasta el momento en que la evaluación de una condición booleana cambia
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{
De vuelta al Almacén
Ahora que usted ha aprendido a definir ciclos For modifique el código de la clase Kiosko para asignar los nombres de los departamentos de una forma más eficiente
Kiosko.java
Departamento depto1 = new Departamento(nombresDepartamentos[0]);
Departamento depto2 = new Departamento(nombresDepartamentos[1]);
Departamento depto3 = new Departamento(nombr
//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
Kiosko.java
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+" -
for(int i=0;i<nombresDepartamentos.length;i++){
System.out.println(++aux+" - "+depto[i].recuperarNombre());
}
ANTES DESPUES
While y Do... While Loops
El Loop While es similar al For, las instrucciones que contiene se ejecutan hasta el momento en que una condición booleana cambia su valor, su diferencia radica en que no requiere un contador
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
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);
Simple5.java - ejecución
Java Simple5 22While - paso 1
While - paso 2
Do..While - paso 1
Do..While - paso 2
Java Simple5 00Do..While - paso 1
Nuestro Jefe... de nuevo
Luego de realizar una investigación de mercadeo nuestro Jefe ha decidido que el programa del Almacen debe continuar solicitando un valor de entrada cuando el usuario ingrese un valor incorrecto. Es decir ahora aparte del mensaje de Opción incorrecta, el usuario verá de nuevo el mensaje que le solicita un valor entre 1 y 5 y podrá realizar un segundo intento
Sugerencia: boolean + while
El ENTER es un caracter
Notó cómo al resolver el ejercicio anterior apareció un problema de doble línea?
while(System.in.available()>0){
System.in.read();
}