JAVA2: Segunda Lección

42
Clases y Objetos Pequeño Repaso

Transcript of JAVA2: Segunda Lección

Page 1: JAVA2: Segunda Lección

Clases y Objetos

Pequeño Repaso

Page 2: JAVA2: Segunda Lección

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

Page 3: JAVA2: Segunda Lección

Clase: Pelota

Atributos:

Color

Material: plástico, tela, cuero

Métodos:

Pelota()

Pelota(color)

dePlastico()

deTela()

deCuero()

Page 4: JAVA2: Segunda Lección

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

Page 5: JAVA2: Segunda Lección

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]

Page 6: JAVA2: Segunda Lección

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

Page 7: JAVA2: Segunda Lección

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];

Page 8: JAVA2: Segunda Lección

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

Page 9: JAVA2: Segunda Lección

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

Page 10: JAVA2: Segunda Lección

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

Page 11: JAVA2: Segunda Lección

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

Page 12: JAVA2: Segunda Lección

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]);

Page 13: JAVA2: Segunda Lección

Aplicación Curso

Clases Kiosko y Departamento

Page 14: JAVA2: Segunda Lección

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

Page 15: JAVA2: Segunda Lección

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

Page 16: JAVA2: Segunda Lección

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

Page 17: JAVA2: Segunda Lección

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

Page 18: JAVA2: Segunda Lección

Control de Flujo

Definiendo el curso a seguir dentro de la aplicación

Page 19: JAVA2: Segunda Lecció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

Page 20: JAVA2: Segunda Lección

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){

Page 21: JAVA2: Segunda Lección

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

Page 22: JAVA2: Segunda Lección

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

Page 23: JAVA2: Segunda Lección

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.

Page 24: JAVA2: Segunda Lección

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

Page 25: JAVA2: Segunda Lección

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

Page 26: JAVA2: Segunda Lección

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){

Page 27: JAVA2: Segunda Lección

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

Page 28: JAVA2: Segunda Lección

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

Page 29: JAVA2: Segunda Lecció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

*/

Page 30: JAVA2: Segunda Lección

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: ");

Page 31: JAVA2: Segunda Lección

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){

Page 32: JAVA2: Segunda Lección

Loops

Multiples iteraciones

Page 33: JAVA2: Segunda Lección

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

Page 34: JAVA2: Segunda Lección

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{

Page 35: JAVA2: Segunda Lección

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

Page 36: JAVA2: Segunda Lección

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

Page 37: JAVA2: Segunda Lección

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

Page 38: JAVA2: Segunda Lección

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

Page 39: JAVA2: Segunda Lección

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);

Page 40: JAVA2: Segunda Lección

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

Page 41: JAVA2: Segunda Lección

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

Page 42: JAVA2: Segunda Lección

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();

}