Práctica N°2 de TOAD

Page 1

02

Práctica de Taller de Objeto y Abstracción de Datos

Objetivo:

Enero 2011

Analizar el código fuente de un programa, para determinar su funcionamiento.

Precondición: Conocimientos de Programación Orientada a Objetos. Acciones:

Analizar el código fuente de la presente práctica. Crear un proyecto de nombre practica002 (sin acentos, ni espacios, todo en minúsculas). Crear una clase de nombre practica002 (mismas condiciones anteriores). Transcribir el código que aparece más adelante. Compilarlo. De existir errores, se deberá corregir. Si no existen errores, ejecutar. Comprobar que realice las funciones correctamente. En las partes de código identificadas como “COMENTAR”, realice un breve comentario de la acción del bloque de instrucciones que se señala debajo de dicha palabra (esto acorde al análisis realizado por usted). Realice las modificaciones necesarias al código fuente, para que este pueda mostrar, en las estadísticas, cuánto queda de gasolina en el tanque y además cuántas veces a echado gasolina.

Código a transcribir (cada clase en un archivo diferente):

/* * Creado por.: * Cédula N°..: V* Asignatura.: TOAD * Sección....: 01 * Período....: 3-2010 * Descripción: Práctica N° 2 * Programa que simula el comportamiento real de una moto. */ class practica002 { static Moto moto = new Moto(); public static void main(String[] args) { int op;

}

do { muestra_menu(); op = lee_opcion(); procesa_menu(op); } while (op != 4); private static void muestra_menu() { Console.WriteLine("**********************"); Console.WriteLine("******** MENÚ ********"); Console.WriteLine("**********************"); Console.WriteLine("* (1) Echar gasolina *"); Console.WriteLine("* (2) Avanzar moto *"); Console.WriteLine("* (3) Estadísticas *"); Console.WriteLine("* (4) Salir *"); Console.WriteLine("**********************"); } private static int lee_opcion() { int opcion; Console.Write("Su opción: "); try { opcion = Integer.parseInt(Console.ReadLine()); } catch (Exception e) {

Ing. Fausto Iocchi

1


02

Práctica de Taller de Objeto y Abstracción de Datos Enero 2011

opcion = 0; } Console.WriteLine(""); Console.WriteLine(""); }

return opcion; private static void procesa_menu(int op) { switch (op) { case 1: echa_gasolina(); break; case 2: avanza_moto(); break; case 3: muestra_estadisticas(); break; case 4: Console.WriteLine("Chao...!!!"); break; default: Console.WriteLine("Opción inválida... intente de nuevo"); } Console.WriteLine(""); Console.WriteLine(""); } private static float lee_float(String msg) { String valor; float num; Console.Write(msg); valor = Console.ReadLine(); try { num = Float.parseFloat(valor); } catch (Exception e) { num = -1; } }

return num; private static void echa_gasolina() { float cantidad = lee_float("Litros de gasolina: ");

}

if (cantidad != -1) { resultado(moto.echar_gasolina(cantidad)); } else { Console.WriteLine("ERROR... número inválido!!!"); } private static void avanza_moto() { float cantidad = lee_float("Kilómetros: ");

}

if (cantidad != -1) { resultado(moto.avanzar(cantidad)); } else { Console.WriteLine("ERROR... número inválido!!!"); } private static void muestra_estadisticas() { float kms = moto.valor_kilometros_total_recorridos(); float gas = moto.valor_tanque_nivel_total(); Console.WriteLine("Kilómetros avanzados: " + kms);

Ing. Fausto Iocchi

2


02 }

Práctica de Taller de Objeto y Abstracción de Datos Enero 2011

Console.WriteLine("Gasolina echada.....: " + gas); // COMENTAR private static void resultado(boolean valor) { Console.Write("Resultado: ");

}

}

if (valor) { Console.WriteLine("exitoso!!!"); } else { Console.WriteLine("fallido!!!"); }

/* * Creado por.: Iocchi, Fausto * Cédula N°..: V-99.999.999 * Asignatura.: TOAD * Sección....: 01 * Período....: 3-2010 * Descripción: Con esta clase lo que se quiere es tener centralizado el manejo * de la entrada y salida de datos a través de la consola. * * Todos los métodos de la clase serán estáticos, con el fin de * poderlos utilizar desde cualquier otra clase/método sin la * necesidad de instanciar algún objeto de esta clase. * * Los nombres de estos métodos recuerdan vagamente a la * implementación de la clase también llamada "Console" del lenguaje * C#. Esto se hizo así con la finalidad de que a las personas que * se encuentran acostumbradas a utilizar dicho lenguaje se les haga * más fácil la transición a Java. */ import java.io.BufferedReader; import java.io.InputStreamReader; class Console { // Creamos un BufferedReader a través de System.in private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static public int Read() { try { return br.read(); } catch (Exception e) { return 0; } } static public String ReadLine() { try { return br.readLine(); } catch (Exception e) { return ""; } } static public void Write(String s) { System.out.print(s); } static public void WriteLine(String s) { if (s == null) { WriteLine("(String) null"); } else { System.out.println(s); } }

Ing. Fausto Iocchi

3


02

}

Práctica de Taller de Objeto y Abstracción de Datos Enero 2011

static public void WriteLine(java.lang.Object s) { if (s == null) { WriteLine("(Object) null"); } else { WriteLine(String.valueOf(s)); } } /* * Creado por.: Iocchi, Fausto * Cédula N°..: V-99.999.999 * Asignatura.: TOAD * Sección....: 01 * Período....: 3-2010 * Descripción: Clase que trata de escapsular el comportamiento básico de una * moto real. */ class Moto { private float tanque_capacidad_max; private float tanque_nivel_actual; private float tanque_nivel_total; private float kilometros_recorridos_total; private float rendimiento_por_litro; /* * Constructor por defecto */ public Moto() { tanque_nivel_actual = 0; // valores "casi" constantes, que tomarán valor solo al instanciarse un // objeto "Moto" tanque_capacidad_max = 15; rendimiento_por_litro = 5;

}

// acumuladores para las estadísticas tanque_nivel_total = 0; kilometros_recorridos_total = 0; /* * Argumentos: * - litros: cantidad de litros de gasolina que se desea agregar al tanque de * la moto. * * Retorno: * - Valor lógico. "true" si se pudo echar algo de gasolina. "false" si no se * pudo echar nada de gasolina. */ public boolean echar_gasolina(float litros) { // COMENTAR float dif_full = tanque_capacidad_max - tanque_nivel_actual; // COMENTAR if (litros > dif_full) litros = dif_full; // COMENTAR if (litros > 0) { tanque_nivel_actual += litros; tanque_nivel_total += litros; } }

return true; return false; /* * Argumentos:

Ing. Fausto Iocchi

4


02

Práctica de Taller de Objeto y Abstracción de Datos Enero 2011

* - kilometros: cantidad de kilometros que se desea avanzar hacia adelante. * * Retorno: * - Valor lógico. "true" si se pudo avanzar algo. "false" si no se pudo * avanzar nada. */ public boolean avanzar(float kilometros) { // COMENTAR float consumo = kilometros / rendimiento_por_litro; float kilometros_real; // COMENTAR if (consumo > tanque_nivel_actual) consumo = tanque_nivel_actual; // COMENTAR if (consumo > 0) { tanque_nivel_actual -= consumo; kilometros_real = consumo * rendimiento_por_litro; kilometros_recorridos_total += kilometros_real; } }

return true; return false; /* * Argumentos: * - N/A. * * Retorno: * - Valor numérico decimal, que representa el total de litros de gasolina * que se han echado en el tanque de la moto. */ public float valor_tanque_nivel_total() { return tanque_nivel_total; }

}

/* * Argumentos: * - N/A. * * Retorno: * - Valor numérico decimal, que representa el total de kilometros recorridos * por la moto. */ public float valor_kilometros_total_recorridos() { return kilometros_recorridos_total; }

Fin del Código

Ing. Fausto Iocchi

5


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.