©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter 7 - 1 Capítulo 7 Definindo sus propias clases Parte 2.

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Curso de java básico (scjp)
Métodos y parámetros.
Sun Microsystems desarrolló, en 1991, el lenguaje de programación orientado a objetos que se conoce como Java. La intención de Sun era crear un lenguaje.
Curso de java básico (scjp)
Curso de java básico (scjp)
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Introducción a la programación en JAVA
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Inner classes CAPITULO 8.
Capitulo 4 Excepciones.
FUNCIONES EN C.
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Aplicación del paradigma orientado a objetos
Objetos y Clases en Java
Programación por capas: Capa de Clases
Programación Orientada a Objetos en Java
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Primer Programa en JAVA
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Modificadores.
Lic. Rosemary Torrico Bascopé
Inicio Java: Algunas utilidades. Inicio Temporización En ingeniería nos encontramos con tareas que deben repetirse de forma periódica. Son tareas temporizadas.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Tema 6: Clases Antonio J. Sierra.
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Técnicas avanzadas de programación Interfaces
Igor Santos Grueiro. Ahora tenemos datos y datos …
Archivos y Búsqueda Secuencial
SCJP Sun Certified Programmer for Java 6
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Clase Teórica No. 4 Programación IV
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Capítulo 1 “Elementos de Programación”
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Clases y objetos. La unidad fundamental del lenguaje Java es la clase, que proporciona la estructura de los objetos y mecanismos para fabricarlos, a partir.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 8 Excepciones y afirmaciones o invariantes.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Práctica Profesional PHP.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación en Visual Basic
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Transcripción de la presentación:

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Capítulo 7 Definindo sus propias clases Parte 2

Objetivos –Cómo se devuelven los objetos desde métodos –El uso de la palabra reservada this –Definir métodos y contructores sobrecargados –Definir métodos y variables de clase –Cómo se pasan los argumentos a los parámetros usando el esquema pasar por valor –Documentar las clases usando javadoc –Organizar a las clases en paquetes (package)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Retornando un Objecto desde un Método Así como podemos devolver un valor primitivo desde un método, también se puede devolver un objeto Cuando devolvemos un objetos desde un método, en realidad lo que se devuelve es la referencia al objeto Es decir, no se retorna una copia del objeto sino la dirección del mismo

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Clase Fraction class Fraction { private int numerator; private int denominator; public Fraction (int num, int denom) { setNumerator (num); setDenominator (num);} public int getDenominator (){ return denominator;} public int getNumerator (){ return numerator;} }

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Clase Fraction class Fraction { private int numerator; private int denominator; // Constructor public Fraction (int num, int denom) { setNumerator (num); setDenominator (denom); } public int getDenominator (){ return denominator; } public int getNumerator (){ return numerator; } public void setDenominator (int denom){ if (denomm==0){ System.err.println(“Error fatal”); System.exit(1); } denominator = denom; } public void setNumerator (int num){ numerator = num; } Public String toString{ return getNumerator + “/” + getDenominator; } // otros métodos }

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej Método que devuelve un objeto public Fraction simplificar( ) { int num = getNumberator(); int denom = getDenominator(); int gcd = gcd(num, denom); simp = new Fraction(num/gcd, denom/gcd); return simp; } El tipo de retorno indica la clase del objeto que será devuelto por el método Retorna una instancia de la clase Fraction

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter ª Version de simplificar devuelve void public void simplificar( ) { int num = getNumberator(); int denom = getDenominator(); int gcd = gcd(num, denom); setNumerator(num/gcd); setDenominator(denom/gcd); } // Uso del Método Fraction f1 = new Fraction (24, 36); f1.simplify (); f1 cambia porque el método actualiza los valores miembros del objeto. Observar que el método se llamó para el objeto f1 ¿Es deseable cambiar el valor del objeto? en general no. Es mejor mantener la fracción f1 sin modificar y entregar otra fracción con la forma simplificada.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Método Simplificar retorna una fracción public Fraction simplificar( ) { Fraction simp; int num = getNumberator(); int denom = getDenominator(); int gcd = gcd(num, denom); simp = new Fraction(num/gcd, denom/gcd); return simp; } // Ej de llamada al método Fraction f1, f2; f1 = new Fraction(24, 36); f2 = f1.simplify(); System.out.println (f1.toString() + “ puede reducirse a la forma ” + f2.toString()); // Se vera 24/36 puede reducirse a la forma 2/3

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej de llamada a simplificar

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej de llamada a simplify (cont)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter this La palabra reservada this se llama señalador de auto referencia porque se refiere a un objeto desde el método del objeto this puede usarse de tres formas diferentes. Vamos a verlas a continuación : Object this

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Uso de this en el método add (sumar) llamada como  f3 = f1.add(f2) public Fraction add(Fraction frac) { int a, b, c, d; Fraction sum; a = this.getNumerator(); //el num y denom del obj b = this.getDenominator(); //que invoca al met c = frac.getNumerator(); //num y den del parám d = frac.getDenominator(); // sum = new Fraction(a*d + b*c, b*d); // observar que se crea un objeto aquí para devolver // la suma que se guardará en f3 return sum; }

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter f1.add(f2) Como f1 es el objeto receptor (estamos llamando al método desde f ) this se refiere a f1.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Usando add Fraction f1, f2, f3; f1 = new Fraction (1,2); f2 = new Fraction (3,4); f3 = f1.add(f2); // notar que no se crea una // instancia de f3 aqui System.out.println (“La suma de “ + f1.toString() + “ y “ + f2.toString() + “ es “ + f3.toString()); La suma de 1/2 y 3/4 es 10/8.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter f2.add(f1) Ahora llamamos al método desde f2, entonces this se refiere a f2.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Usando this para referirse a miembros de datos En el ej anterior, mostramos el uso de this para llamar a un método desde un objeto receptor Podemos usar this también para referirse a un miembro de dato this.age se refiere al miembro age de esta clase class Person { int age; public void setAge(int val) { this.age = val; }... }

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Sobrecarga de Métodos Varios Métodos pueden compartir el mismo nombre siempre que tengan distinta firma; distinto nombre, distinta cantidad de parámetros o los parámetros son de distinto tipo si tienen la misma cantidad La firma es el nombre del método y la lista de parámetros public void myMethod(int x, int y) {... } public void myMethod(int x) {... } public void myMethod(double x) {... } public void myMethod(int x) {... } Regla 1 Regla 2

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Sobrecarga de Constructores Las mismas reglas se aplican para la sobrecarga de constructores –Así es como podemos definir más de un constructor a una clase public Person( ) {... } public Person(int age) {... } public Pet(int age) {... } public Pet(String name) {... } Regla 1 Regla 2

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Constructores y this Para llamar a un constructor desde otro constructor de la misma clase, usamos la palabra this. public Fraction( ) { //creates 0/1 this(0. 1); } public Fraction(int number) { //creates number/1 this(number, 1); } public Fraction(Fraction frac) { //copy constructor this(frac.getNumerator(), frac.getDenominator()); } public Fraction(int num, int denom) { setNumerator(num); setDenominator(denom); }

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Métodos de clase Usamos la palabra reservada static para definir métodos de clase public static int gcd(int m, int n) { //the code implementing the Euclidean algorithm } public static Fraction min(Fraction f1, Fraction f2) { //convert to decimals and then compare }

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Parámetros Pasados por valor Cuando se llama a un método, –Se pasa el valor del argumento al parámetro correspondiente y –Se asigna un espacio separado de memoria para almacenar su valor Esta forma de pasar los valores de un argumento se llama pasar por valor Ya que se asigna un lugar de memoria para cada parámetro durante la ejecución del método –El parámetro es local al método y –Los cambios realizados sobre el parámetro no afectarán al argumento correspondiente

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej llamada por valor class Tester { public void myMethod(int one, double two ) { one = 25; two = 35.4; } Tester tester; int x, y; tester = new Tester(); x = 10; y = 20; tester.myMethod(x, y); System.out.println(x + " " + y); produce 10 20

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Asignación de memoria Parámetros

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Asignación de memoria Parámetros (cont)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Pasando parámetros 1. Los argumentos se pasan a los métodos usando el esquema de pasaje por valor 2.Se mapean los argumentos y los parámetros en orden de izquierda a derecha. El tipo de dato de un argumento debe ser compatible con el del parámetro correspondiente 3.La cantidad de argumentos en el llamado al método debe ser igual al número de parámetros de la definición del método 4.Parámetros y argumentos no necesitan tener el mismo nombre 5.Copias locales, que son distintos de los argumentos se crean aunque argumentos y parámetros tengan el mismo nombre 6.Los parámetros ingresados a un método son locales a éste. Los cambios realizados sobre los mismos no afectan a los valores de los argumentos correspondientes

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Met clase vs de instancia 1) Los mét de clase puden acceder sólo a variables y contantes de clase 2) Los mét de instancia, incluyendo a los constructores, pueden acceder a todo tipo de dato miembro 3) Los mét de clase no pueden llamar a mét de instancia de la misma clase 4) Los mét de instancia pueden llamar a cualquier mét de la misma clase (ya sea estático o no)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Organizar Clases en Paquetes (Package) Para que una clase A pueda usar otra clase B, los archivos de código byte (los *.class) deben estar en el mismo directorio. –Esto no resulta práctico cuando se quieren re usar clases programadas y distintas aplicaciones La forma para que distintas aplicaciones puedan re usar las clases es incluirlas en un paquete Un paquete es una librería de clases Java

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Creando un Paquete Los sig pasos muestran el proceso de creación de un paquete de nombre myutil que incluye la clase Fraction 1.Incluir la sentencia package myutil; como la 1ª línea del archivo fuente de la clase Fraction 2. La declaración de la clase debe tener visibilidad public public class Fraction {... } 3. Crear una carpeta con nombre myutil, el mismo que el nombre del paquete (el paquete debe corresponderse con la carpeta) 4. Poner la clase modificada Fraction dentro de la carpeta myutil y compilarla 5. Modificar la variable de ambiente CLASSPATH para incluir la carpeta que contiene a myutil

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Modificar la classpath Supongamos que hay una carpeta llamada progJava y que el paquete myutil se coloca dentro de esta carpeta Para poder usar este paquete hay que redefinir la variable classpath para que haga referencia a la carpeta progJava no a la de myutil set classpath=.;C:\progJava El punto se refiere a la carpeta actual

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Usando comentarios Javadoc Muchas de las clases que diseñamos pretendemos que las puedan emplear otros programadores –Es muy importante proveerlas de la documentación para que el cliente de la clase pueda comprender como usarla correctamente. Agregando comentarios javadoc a las clases que creamos, podemos proveer de un estilo consistente de documentación de clases. Una vez que se agregan los comentarios javadoc a la clase, podemos generar arhivos HTML para documentación usando el comando javadoc

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter javadoc para Fracción Esta es una parte de la documentación HTML para la clase Fraction mostrada en un navegador. Este archivo HTML se produce procesando los comentarios javadoc del archivo fuente de la clase Fraction

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter javadoc Tags Los comentarios javadoc comienzan con /** y terminan con */ Información tal como autor, parámetros, valores de retorno y otros se indican con etc

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej: javadoc Fuente... /** * Returns the sum of this Fraction * and the parameter frac. The sum * returned is NOT simplified. * frac the Fraction to add to this * Fraction * the sum of this and frac */ public Fraction add(Fraction frac) {... }... este javadoc producirá

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Ej: javadoc Salida

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter javadoc Fuentes Información general sobre javadoc está en: Referencias detalladas de como usar javadoc con Windows se puede consultar en:

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Problema Escribir una aplicación que compute las cargas totales para los libros atrasados de la biblioteca. Para cada libro, el usuario ingresa la fecha de vencimiento y opcionalmente la carga por día de retrazo, la carga máxima y el título. Si no se ingresan los valores opcionales, se usan valores por defecto. Una lista completa de los libros se debe mostrar cuando el usuario termina de ingresar los libros. El usuario puede usar distintos fechas de devolución para comparar las cargas por retrazo

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Plan General Tareas: 1.Obtener la información de todos los libros 2.Mostrar los libros ingresados 3.Preguntar la fecha de devolución y el cargo total. Repetir este paso hasta que el usuario termine

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Clases Requiridas OverdueChecker Scanner LibraryBook helper class BookTracker

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Pasos para el Desarrollo Desarrollaremos este programa en 5 pasos: 1. Definir la clase básica LibraryBook 2. Explorar la clase BookTracker dada e integrarla con la clase LibraryBook 3. Definir lal clase OverdueChecker, implementar las rutinas de ingreso de información. 4. Completar la clase LibraryBook implementando completamente el cálculo del recargo por atrazo. 5. Finalizar el programa

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 1 Design Desarrollar la base de la clase LibraryBook. La clave del diseño es identificar los datos miembros para almacenar la información relevante. Incluiremos múltiples constructores para facilitar la creación de los objetos LibraryBook. –Asegurese que una instancia se inicialice correctamente sin importar el constructor que se use.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 1 Código Directory: Chapter7/Step1 Source Files: LibraryBook.java Step1Main.java (test program) Directory: Chapter7/Step1 Source Files: LibraryBook.java Step1Main.java (test program)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 1 Prueba Probamos el programa principal Step1Main para confirmar que la salida sea la apropiada

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 2 Diseño Explorar la clase BookTracker e incorporarla al programa Adjustar la clase LibraryBook para hacerla compatible con la clase BookTracker

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 2 Código Directory: Chapter7/Step2 Source Files: LibraryBook.java Step2Main.java (test program) Directory: Chapter7/Step2 Source Files: LibraryBook.java Step2Main.java (test program)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 2 Prueba Correr el programa principal Step2Main y verificamos que de la salida esperada.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 3 Diseño Implementar la clase de control OverdueChecker. Maneja un objeto BookTracker y varios objetos LibraryBook Maneja las rutinas de entrada y salida Si las rutinas de ingreso y salida son complejas podemos considerar diseñar clases separadas para delegar las tareas de ingreso y salida (I/O)

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 3 Pseudocodigo GregorianCalendar returnDate; String reply, table; double totalCharge; inputBooks(); //read in all book information table = bookTracker.getList(); System.out.println(table); //try different return dates do { returnDate = read return date ; totalCharge = bookTracker.getCharge(returnDate); displayTotalCharge(totalCharge); reply = prompt the user to continue or not; } while ( reply is yes );

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 3 Código Directory: Chapter7/Step3 Source Files: OverdueChecker.java LibraryBook.java Directory: Chapter7/Step3 Source Files: OverdueChecker.java LibraryBook.java

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 3 Prueba Correr el programa intentando diferentes valores de ingreso. Confirmar que los controles de los ciclos trabajen correctamente –En este momento, el código para computar la carga atrasada esta imcompleto, así que nosotros siempre obtendremos la misma carga. Despues de verificar que todo funciona correctamente proseguimos

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 4: Calcular el recargo Para calcular el recargo necesitamos dos fechas: el día de vencimiento y el día en el que se devolvió el libro El método getTimeInMillis devuelve el intervalo de tiempo en milisegundos. Restamos los valores obtenidos para ambas fechas. –Si la diferencia es negativa, no se retrazó, por lo tanto no tiene cargo. –Si es positiva, hay que convertir a dias y multiplicar por el costo por dia para calcular el costo total por demora

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 4 Código Directory: Chapter7/Step3 Source Files: OverdueChecker.java LibraryBook.java Directory: Chapter7/Step3 Source Files: OverdueChecker.java LibraryBook.java

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 4 Prueba Corremos el programa varias veces ingresar diferentes valores de entrada para cubrir todos los casos para el calculo del cargo computeCharge. –Intentar con devolución el mismo día que el vencimiento –Se devuelve antes del vencimiento, el recargo alcanza el máximo, etc.

©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Paso 5: Finalizar/ Extender Revisión del Programa –Se manejan todos los casos posibles? –Las rutinas de ingreso son fáciles de usar? –Sería conveniente permitir diferentes formatos para ingresar las fechas? Posibles Extensiones –Avisarle al usuario cuando se aproxima la fecha de vencimiento –Proveer una ventana especial para ingresar los datos (Aún no vimos como implementar este tipo de técnica)