Description

Taller de programación orientada a objetos;Tercer capitulo Presentado por Laura solanggi Caicedo varón 20172005010 Michael Steven López 20172005147 Presentado a: Julio cortes Trujillo Universidad distrital francisco José de caldas Facultad: ingeniería Proyecto curricular: ingeniería electrónica Bogotá d.c. 2018  3.2 Conteste con verdadero o falso a cada una de las siguientes proposiciones; en caso de ser falso, explique por qué. a) Por convención, los nombres de los métodos empiezan con la primera letra en mayúscula y todas las palabras subsiguientes en el nombre empiezan con la primera letra en mayúscula. R//: Falso. Por convención, los nombres de los métodos empiezan con una primera letra en minúscula y todas las palabras subsiguientes en el nombre empiezan con una letra en mayúscula. b) Una declaración import no es obligatoria cuando una clase en un paquete utiliza a otra clase en el mismo paquete. R//: verdadero. c) Los paréntesis vacíos que van después del nombre de un método en la declaración del mismo indican que éste no requiere parámetros para realizar su tarea. R//: verdadero. d) Una variable de tipo primitivo puede usarse para invocar un método. R//: Falso. Una variable de tipo primitivo no puede usarse para invocar a un método; se requiere una referencia a un objeto para invocar a los métodos de ese objeto. e) Las variables que se declaran en el cuerpo de un método específico se conocen como variables de instancia, y pueden utilizarse en todos los métodos de la clase. R//: Falso. Dichas variables se llaman variables locales, y sólo se pueden utilizar en el método en el que están declaradas. f) El cuerpo de cada método está delimitado por llaves izquierda y derecha ({ y }). R//: verdadero. g) Las variables locales de tipo primitivo se inicializan de manera predeterminada. R//: Falso. Las variables de instancia de tipo primitivo se inicializan de manera predeterminada. A cada variable local se le debe asignar un valor de manera explícita. h) Las variables de instancia de tipo por referencia se inicializan de manera predeterminada con el valor null. R//: verdadero i) Cualquier clase que contenga public static void main(String[] args) puede usarse para ejecutar una aplicación. R//: verdadero j) El número de argumentos en la llamada a un método debe coincidir con el número de parámetros en la lista de parámetros de la declaración del método. R//: verdadero k) Los valores de punto flotante que aparecen en código fuente se conocen como literales de punto flotante, y son de tipo float de manera predeterminada. R//: Falso. Dichas literales son de tipo double de manera predeterminada.  3.4 Explique el propósito de un parámetro de un método. ¿Cuál es la diferencia entre un parámetro y un argumento? R//: Un parámetro representa la información adicional que requiere un método para realizar su tarea. Cada pará- metro requerido por un método está especificado en la declaración del método. Un argumento es el valor actual para un parámetro del método. Cuando se llama a un método, los valores de los argumentos se pasan a los parámetros correspondientes del método, para que éste pueda realizar su tarea.  3.6 (Constructores predeterminados) ¿Qué es un constructor predeterminado? ¿Cómo se inicializan las variables de instancia de un objeto, si una clase sólo tiene un constructor predeterminado? R//: Los paréntesis a la derecha del objeto son obligatorios, esos paréntesis en combinación con el nombre de una clase representan una llamada a un constructor, que es similar a un método, pero se utiliza sólo cuando se crea un objeto, para inicializar los datos de éste. Cada clase que usted declare puede proporcionar un constructor, el cual puede utilizarse para inicializar un objeto de una clase al momento de crear ese objeto. De hecho, Java requiere una llamada al constructor para cada objeto que se crea. La palabra clave new llama al constructor de la clase para realizar la inicialización. La llamada al constructor se indica mediante el nombre de la clase, seguido de paréntesis; el constructor debe tener el mismo nombre que la clase. Cuando una clase sólo tiene el constructor predeterminado, sus variables de instancia se inicializan con sus valores predeterminados. Las variables de los tiposchar, byte, short, int, long, float y double se inicializan con 0, las variables de tipo boolean se inicializan confalse, y las variables de tipo por referencia se inicializan con null. Un constructor es un método especial de una clase que se llama automáticamente siempre que se declara un objeto de esa clase. La principal misión del constructor es reservar memoria e inicial izar las variables miembros de la clase. Constructor Java por defecto Si para una clase no se define ningún método constructor se crea uno automáticamente por defecto. El constructor por defecto es un constructor sin parámetros que no hace nada. Los atributos del objeto son iniciados con los valores predeterminados por el sistema. Este tipo de constructor se lo llama como constructor no-args, ya que no recibe parámetros. Constructor Java copia Es un constructor que recibe por parámetro un objeto del mismo tipo de la clase, asignando atributo por atributo al nuevo objeto generado.  3.8 (Uso de clases sin importarlas) La mayoría de las clases necesitan importarse antes de poder ser usadas en una aplicación ¿Por qué cualquier aplicación puede utilizar las clases System y String sin tener que importarlas primero? R//:La mayoría de las clases que utilizará en los programas de Java deben importarse. Las clases System y String están en el paquete java.lang, que se importa de manera implícita en todo programa de Java, por lo que todos los programas pueden usar las clases del paquete java.lang sin tener que importarlas de manera explícita.  3.10 Explique por qué una clase podría proporcionar un método establecer y un método obtener para una variable de instancia. R//:El método establecer, almacena el nombre de un curso en un objeto. El método obtener, obtiene el nombre del curso de un objeto.  3.12 (La clase Factura) Cree una clase llamada Factura que una ferretería podría utilizar para representar una factura para un artículo vendido en la tienda. Una Factura debe incluir cuatro piezas de información como variables de instancia: un número de pieza (tipo String), la descripción de la pieza (tipo String), la cantidad de artículos de ese tipo que se van a comprar (tipo int) y el precio por artículo (double). Su clase debe tener un constructor que inicialice las cuatro variables de instancia. Proporcione un método establecer y un método obtener para cada variable de instancia. Además, proporcione un método llamado obtenerMontoFactura, que calcule el monto de la factura (es decir, que multiplique la cantidad de artículos por el precio de cada uno) y después devuelva ese monto como un valor double. Si la cantidad no es positiva, debe establecerse en 0. Si el precio por artículo no es positivo, debe establecerse en 0.0. Escriba una aplicación de prueba llamada PruebaFactura, que demuestre las capacidades de la clase Factura. R//: 1. public class Factura 2. { 3. // Variables de instancia 4. private String numDePieza; // Número de la pieza 5. private String descPieza; // Descripción de la pieza 6. private int qtyArticulo; // Cantidad del artículo 7. private double vlrArticulo; // Valor del artículo 8. 9. // Constructur personalizado 10. public Factura( String pNumDePieza , String pDescPieza , int pQtyArticulo , doublepVlrArticulo ) 11. { 12. // Asignación de los valores de los parámetros a las vars. de inst. 13. numDePieza = pNumDePieza; 14. descPieza = pDescPieza; 15. if( pQtyArticulo &gt; 0 ) 16. { 17. qtyArticulo = pQtyArticulo; 18. } 19. if( pVlrArticulo &gt; 0.0 ) 20. { 21. vlrArticulo = pVlrArticulo; 22. } 23. } // Fin del constructor de la clase 24. 25. // Método establecer para número de la pieza 26. public void establecerNumDePieza( String pNumDePieza ) 27. { 28. numDePieza = pNumDePieza; 29. } 30. 31. // Método obtener para número de la pieza 32. public String obtenerNumDePieza() 33. { 34. return numDePieza; 35. } 36. 37. // Método para establecer la descripción de la pieza 38. public void establecerDescPieza( String pDescPieza ) 39. { 40. descPieza = pDescPieza; 41. } 42. 43. // Método para obtener la descripción de la pieza 44. public String obtenerDescPieza() 45. { 46. return descPieza; 47. } 48. 49. // Método para establecer la cantidad de artículo 50. public void establecerQtyArticulo( int pQtyArticulo ) 51. { 52. qtyArticulo = pQtyArticulo; 53. } 54. 55. // Método para obtener la cantidad de artículo 56. public int obtenerQtyArticulo() 57. { 58. return qtyArticulo; 59. } 60. 61. // Método para establecer valor del artículo 62. public void establecerVlrArticulo( double pVlrArticulo ) 63. { 64. vlrArticulo = pVlrArticulo; 65. } 66. 67. // Método para obtener el valor del artículo 68. public double obtenerVlrArticulo() 69. { 70. return vlrArticulo; 71. } 72. 73. // Método Obtener Monto Factura 74. public void obtenerMontoFactura() 75. { 76. // Comprobación de que no hayan cantidad negativas 77. if( obtenerQtyArticulo() &lt; 0 ) 78. { 79. qtyArticulo = 0; 80. } 81. 82. if( obtenerVlrArticulo() &lt; 0.0 ) 83. { 84. vlrArticulo = 0.0; 85. } 86. 87. System.out.printf( "\n ********** FERRETERÍA **********" ); 88. System.out.printf( "\n ***** Factura *****\n\n" ); 89. System.out.printf( "Número de pieza: %s" , obtenerNumDePieza() ); 90. System.out.printf( "\nDescripción de la pieza: %s" , obtenerDescPieza() ); 91. System.out.printf( "\nCantidad del artículo: %d" , obtenerQtyArticulo() ); 92. System.out.printf( "\nValor unitario del artículo: %f" , obtenerVlrArticulo() ); 93. 94. //Totalizar el monto de la compra 95. System.out.printf( "\n\nEl total a pagar es: %f" , ( obtenerQtyArticulo() *obtenerVlrArticulo() ) ); 96. } // fin de main 97.} ///:~ controladora import java.util.Scanner; public class PruebaFactura { // El método main inicia y finaliza la ejecución de la aplicación public static void main( String args[] ) { // Variables String cadena; // Número y descripción de la pieza int cantidad; // Cantidad del artículo double valor; // Valor del artículo // Constructor personalizado. Creación de un objeto inicializando sus // variables de instancia Factura factura = new Factura( "0" , "Ninguna" , 0 , 0.0 ); // Mostrar el estado actual de los atributos del objeto 'factura' System.out.printf( "\nNúmero de pieza: %s" , factura.obtenerNumDePieza() ); System.out.printf( "\nDescripción de la pieza: %s" , factura.obtenerDescPieza() ); System.out.printf( "\nCantidad del artículo: %d" , factura.obtenerQtyArticulo() ); System.out.printf( "\nValor unitario del artículo: %f" , factura.obtenerVlrArticulo() ); // Solicitud y obtención de los datos // Creación de un objeto de tipo 'Scanner' Scanner entrada = new Scanner( System.in ); // Número de pieza System.out.print( "\nEscriba el número de pieza: " ); cadena = entrada.nextLine(); factura.establecerNumDePieza( cadena ); //Descripción de la pieza System.out.print( "\nEscriba la descripción de la pieza: " ); cadena = entrada.nextLine(); factura.establecerDescPieza( cadena ); // Cantidad del artículo System.out.print( "\nEscriba la cantidad del artículo: " ); cantidad = entrada.nextInt(); factura.establecerQtyArticulo( cantidad ); // Valor del artículo System.out.print( "\nEscriba el valor del artículo: " ); valor = entrada.nextDouble(); factura.establecerVlrArticulo( valor ); // Mostrar el monto de la factura factura.obtenerMontoFactura(); System.out.println(); System.out.println(); } // fin de main } ///:~  3.14 (La clase Fecha) Cree una clase llamada Fecha, que incluya tres variables de instancia: un mes (tipo int), un día (tipo int) y un año (tipo int). Su clase debe tener un constructor que inicialice las tres variables de instancia, y debe asumir que los valores que se proporcionan son correctos. Proporcione un método establecer y un método obtener para cada variable de instancia. Proporcione un método mostrarFecha, que muestre el mes, día y año, separados por barras diagonales (/). Escriba una aplicación de prueba llamada PruebaFecha, que demuestre las capacidades de la clase Fecha. R//: 1. public class Fecha 2. { 3. // Variables de instancia (o piezas de información) 4. private int dia; // Día del año (formato numérico) 5. private int mes; // Mes del año (formato numérico) 6. private int annio; // Mes del año 7. 8. // Constructor para inicializar las variables de instancia 9. public Fecha( int pMes , int pDia , int pAnnio ) 10. { 11. // Validación para el mes 12. if( pMes &gt; 0 ) 13. { 14. if( pMes &lt;= 12 ) 15. { 16. mes = pMes; 17. } 18. } 19. 20. // Validación para el día 21. if( pDia &gt; 0 ) 22. { 23. if( pDia &lt;= 31 ) 24. { 25. dia = pDia; 26. } 27. } 28. 29. // Validacion para el annio 30. if( pAnnio &gt;= 1929 ) 31. { 32. if( pAnnio &lt;= 2029 ) 33. { 34. annio = pAnnio; 35. } 36. } 37. } // Fin del constructor 38. 39. // Método para establecer el mes 40. public void establecerMes( int pMes ) 41. { 42. if( pMes &gt; 0 ) 43. { 44. if( pMes &lt;=31 ) 45. { 46. mes = pMes; 47. } 48. } 49. } 50. 51. // Método para obtener el mes 52. public int obtenerMes() 53. { 54. return mes; 55. } 56. 57. // Método para establecer el día 58. public void establecerDia( int pDia ) 59. { 60. if( pDia &gt; 0) 61. { 62. if( pDia &lt;= 31 ) 63. { 64. dia = pDia; 65. } 66. } 67. } 68. 69. // Método para obtener el día 70. public int obtenerDia() 71. { 72. return dia; 73. } 74. 75. // Método para establecer el año 76. public void establecerAnnio( int pAnnio ) 77. { 78. if( pAnnio &gt;= 1929 ) 79. { 80. if ( pAnnio &lt;= 2029 ) 81. { 82. annio = pAnnio; 83. } 84. } 85. } 86. 87. // Método para obtener el año 88. public int obtenerAnnio() 89. { 90. return annio; 91. } 92. 93. // Método para mostrar la fecha en formato mm / dd / aaaa 94. public void mostrarFecha() 95. { 96. System.out.print( "\nFecha seleccionada: " ); 97. System.out.printf( "\n %d / %d / %d " , obtenerMes() , obtenerDia() , obtenerAnnio() ); 98. } // fin del método mostrarFecha 99.} controladora  3.16 (Calculadora de la frecuencia cardiaca esperada) Mientras se ejercita, puede usar un monitor de frecuencia cardiaca para ver que su corazón permanezca dentro de un rango seguro sugerido por sus entrenadores y doctores. De acuerdo con la Asociación Estadounidense del Corazón (AHA) (www.americanheart.org/presenter. jhtml?identifier=4736), la fórmula para calcular su frecuencia cardiaca máxima en pulsos por minuto es 220 menos su edad en años. Su frecuencia cardiaca esperada tiene un rango que está entre el 50 y el 85% de su frecuencia cardiaca máxima. [Nota: estas fórmulas son estimaciones proporcionadas por la AHA. Las frecuencias cardiacas máxima y esperada pueden variar con base en la salud, condición física y sexo del individuo. Siempre debe consultar un médico o a un profesional de la salud antes de empezar o modificar un programa de ejercicios]. Cree una clase llamada FrecuenciasCardiacas. Los atributos de la clase deben incluir el primer nombre de la persona, su apellido y fecha de nacimiento (la cual debe consistir de atributos independientes para el mes, día y año de nacimiento). Su clase debe tener un constructor que reciba estos datos como parámetros. Para cada atributo debe proveer métodos establecer y obtener. La clase también debe incluir un método que calcule y devuelva la edad de la persona (en años), un método que calcule y devuelva la frecuencia cardiaca máxima de esa persona, y otro método que calcule y devuelva la frecuencia cardiaca esperada de la persona. Escriba una aplicación de Java que pida la información de la persona, cree una instancia de un objeto de la clase FrecuenciasCardiacas e imprima la información a partir de ese objeto (incluyendo el primer nombre de la persona, su apellido y fecha de nacimiento), y que después calcule e imprima la edad de la persona en (años), frecuencia cardiaca máxima y rango de frecuencia cardiaca esperada.  R//: public class FrecuenciaCardiaca { // Variables de instancia private int edad; private String nombreCompleto; // Constructores public FrecuenciaCardiaca(String nombre, int edad) { this.nombreCompleto = nombre; this.edad = edad; } public void mostrarDatos() { // Calcular frecuencias int fmax = 220 - this.edad; double fesp_inicio = fmax * 0.5; double fesp_fin = fmax * 0.85; // Imprimir System.out.println("Nombre: " + this.nombreCompleto); System.out.println("Frecuencia cardiaca máxima: " + fmax ); String fesp = "Frecuencia cardiaca esperada (rango): [ "; fesp += fesp_inicio + "-" + fesp_fin + " ]"; System.out.println( fesp ); } // Getters & Setters public int getEdad() { return this.edad; } public String getNombreCompleto() { return this.nombreCompleto; } public void setEdad(int edad) { this.edad = edad; } public void setNombreCompleto(String nombreCompleto) { this.nombreCompleto = nombreCompleto; } } 3.5 (Palabra clave new) ¿Cuál es el propósito de la palabra clave new? Explique lo que ocurre cuando se utiliza en una aplicación. La instruccion especifica para crear un Objeto en Java es la palabra clave new. La palabra clave new comienza una expresion del creacion de instancia de una clase, la cual crea un objeto del tipo especificado a la derecha del new. El proceso de crear nuevos objetos se conoce tambien como crear una instancia de, o instanciar un objeto. El valor entre parentisis despues del tipo de expresion de creacion de instancia de una clase se utiliza para inicializar ( es decir, dar un valor a) el nuevo objeto. 3.7 (Variables de instancia) Explique el propósito de una variable de instancia. Una variable de instancia es un campo declarado dentro de la declaración de una clase sin usar la palabra reservada static. Si una clase T tiene un campo a que es una variable de instancia, entonces una nueva variable de instancia a es creada e inicializada a un valor por defecto como parde de cada nuevo objeto creado de la clase T o de cualquier clase que sea subclase de T La bariable de instancia deja de existir cuando el objeto del cual es campo deja de ser referenciado, después que cualquier finalización necesaria del objeto ha sido completada 3.9 (Uso de una clase sin importarla) Explique cómo podría un programa utilizar la clase Scanner sin importarla. La mayoría de las clases que utilizará en los programas de Java deben importarse de manera explícita. Hay una relación especial entre las clases que se compilan en el mismo directorio. De manera predeterminada, se considera que dichas clases se encuentran en el mismo paquete; a éste se le conoce como el paquete predeterminado. Las clases en el mismo paquete se importan implícitamente en los archivos de código fuente de las demás clases del mismo paquete. No se requiere una declaración import cuando una clase en un paquete usa otra clase en el mismo paquete. 3.11 (Clase Cuenta modificada) Modifique la clase Cuenta (figura 3.8) para proporcionar un método llamado retirar, que retire dinero de un objeto Cuenta. Asegúrese de que el monto a retirar no exceda el saldo de Cuenta. Si lo hace, el saldo debe permanecer sin cambio y el método debe imprimir un mensaje que indique “El monto a retirar excede el saldo de la cuenta”. Modifique la clase PruebaCuenta (figura 3.9) para probar el método retirar. import java.util.Scanner; public class PruebaCuenta { public static void main(String[] args) { Cuenta cuenta1 = new Cuenta("Jane Green", 50.00); Cuenta cuenta2 = new Cuenta("John Blue", -7.53); cuenta1.obtenerNombre(), cuenta1.obtenerSaldo()); System.out.printf("Saldo de %s: $%.2f%n%n", cuenta2.obtenerNombre(), cuenta2.obtenerSaldo()); Scanner entrada = new Scanner(System.in); System.out.print("Escriba el monto a depositar para cuenta1: "); // indicador (promt) double montoDeposito = entrada.nextDouble(); // obtiene entrada del usuario System.out.printf("%nsumando %.2f al saldo de cuenta1%n%n", montoDeposito); cuenta1.depositar(montoDeposito); // suma al saldo de cuenta1 if (cuenta2.obtenerSaldo() < cuenta1.depositar(montoDeposito) ){ System.out.printf("Saldo de %s: $%.2f%n", cuenta1.obtenerNombre(), cuenta1.obtenerSaldo()); System.out.printf("Saldo de %s: $%.2f%n%n", cuenta2.obtenerNombre(), cuenta2.obtenerSaldo()); System.out.print("Escriba el monto a depositar para cuenta2: "); montoDeposito = entrada.nextDouble(); // obtiene entrada del usuario System.out.printf("%nsumando %.2f al saldo de cuenta2%n%n", montoDeposito); cuenta2.depositar(montoDeposito); // suma al saldo de cuenta2 System.out.printf("Saldo de %s: $%.2f%n", cuenta1.obtenerNombre(), cuenta1.obtenerSaldo()); System.out.printf("Saldo de %s: $%.2f%n%n", cuenta2.obtenerNombre(), cuenta2.obtenerSaldo()); } else { System.out.printf("Saldo insuficiente %s: $%.2f%n%n", cuenta2.obtenerSaldo()); } } } 3.13 (La clase Empleado) Cree una clase llamada Empleado, que incluya tres variables de instancia: un primer nombre (tipo String), un apellido paterno (tipo String) y un salario mensual (double). Su clase debe tener un constructor que inicialice las tres variables de instancia. Proporcione un método establecer y un método obtener para cada variable de instancia. Si el salario mensual no es positivo, no establezca su valor. Escriba una aplicación de prueba llamada PruebaEmpleado, que demuestre las capacidades de la clase Empleado. Cree dos objetos Empleado y muestre el salario anual de cada objeto. Después, proporcione a cada Empleado un aumento del 10% y muestre el salario anual de cada Empleado otra vez. package coo1; import java.util.Scanner; public class empleado {public class Empleado { String nombre; String apellido; double salarioMensual; public Empleado( String pNombre , String pApellido , double SalarioMensual ) { nombre = pNombre; apellido = pApellido; if( SalarioMensual < 0.0 ) { salarioMensual = SalarioMensual; } } public void establecerNombre( String pNombre ) { nombre = pNombre; } public String obtenerNombre() { return nombre; } public void establecerApellido( String pApellido ) { apellido = pApellido; } public String obtenerApellido() { return apellido; } public void establecerSalarioMensual( double salario ) { if( salario < 0.0 ) { System.out.print( "\nEl salario escrito no es válido." ); return; } salarioMensual = salario; } public double obtenerSalarioMensual() { return salarioMensual; } public double obtenerSalarioAnual() { return obtenerSalarioMensual() * 12; } public double obtenerAumento() { return obtenerSalarioAnual() * 1.10; } public void mostrarResumen() { System.out.printf( "\nSu nombre es: %s" , obtenerNombre() ); System.out.printf( "\nSu apellido es: %s" , obtenerApellido() ); System.out.printf( "\nSu salario mensual es: %f" , obtenerSalarioMensual() ); System.out.printf( "\nSu salario anual sin incremento es: %f" , obtenerSalarioAnual() ); System.out.printf( "\nSu salario anual con incremento es: %f" , obtenerAumento() ); } } import java.util.Scanner; public class PruebaEmpleado { public static void main( String args[] ) { String nombre; String apellido; double salario; String empleado1; Empleado empleado1 = new Empleado( "Zhen" , "Gholz" , 800 ); Empleado empleado2 = new Empleado( "Larz" , "Binz" , -900 ); Scanner entrada = new Scanner( System.in ); System.out.print( "\nSolicitud y recepción de los datos del empleado1" ); System.out.print( "\nEscriba su nombre: " ); nombre = entrada.nextLine(); empleado1.establecerNombre( nombre ); System.out.print( "\nEscriba su apellido: " ); apellido = entrada.nextLine(); empleado1.establecerApellido( apellido ); System.out.print( "\nEscriba su salario mensual: " ); salario = entrada.nextDouble(); empleado1.establecerSalarioMensual( salario ); System.out.print( "\nResumen para empleado1: " ); empleado1.mostrarResumen(); System.out.println( "\n\nSolicitud y recepción de los datos del empleado2" ); System.out.print( "\nEscriba su nombre: " ); nombre = entrada.nextLine(); empleado2.establecerNombre( nombre ); System.out.print( "\nEscriba su apellido: " ); apellido = entrada.nextLine(); empleado2.establecerApellido( apellido ); System.out.print( "\nEscriba su salario mensual: " ); salario = entrada.nextDouble(); empleado2.establecerSalarioMensual( salario ); System.out.print( "\nResumen para empleado2: " ); empleado2.mostrarResumen(); System.out.println(); } } 3.15 (Eliminar código duplicado en el método main) En la clase PruebaCuenta de la figura 3.9, el método main contiene seis instrucciones (líneas 13-14, 15-16, 28-29, 30-31, 40-41 y 42-43), cada una de las cuales muestra en pantalla el nombre y saldo de un objeto Cuenta. Estudie estas instrucciones y notará que difieren sólo en el objeto Cuenta que se está manipulando: cuenta1 o cuenta2. En este ejercicio definirá un nuevo método mostrarCuenta que contiene una copia de esa instrucción de salida. El parámetro del método será un objeto Cuenta y el método imprimirá en pantalla el nombre y saldo de ese objeto. Después usted sustituirá las seis instrucciones duplicadas en main con llamadas a mostrarCuenta, pasando como argumento el objeto Cuenta específico a mostrar en pantalla. Modifique la clase PruebaCuenta de la figura 3.9 para declarar el siguiente método mostrarCuenta después de la llave derecha de cierre de main y antes de la llave derecha de cierre de la clase PruebaCuenta: public static void mostrarCuenta(Cuenta cuentaAMostrar) { } Sustituya el comentario en el cuerpo del método con una instrucción que muestre el nombre y el saldo de cuentaAMostrar. Recuerde que main es un método static, por lo que puede llamarse sin tener que crear primero un objeto de la clase en la que se declara main. También declaramos el método mostrarCuenta como un método static. Cuando main necesita llamar a otro método en la misma clase sin tener que crear primero un objeto de esa clase, el otro método también debe declararse como static. Una vez que complete la declaración de mostrarCuenta, modifique main para reemplazar las instrucciones que muestran el nombre y saldo de cada Cuenta con llamadas a mostrarCuenta; cada una debe recibir como argumento el objeto cuenta1 o cuenta2, según sea apropiado. Luego, pruebe la clase PruebaCuenta actualizada para asegurarse de que produzca la misma salida que se muestra en la figura 3.9. 1 // Fig. 3.9: PruebaCuenta.java 2 // Entrada y salida de números de punto flotante con objetos Cuenta. 3 import java.util.Scanner; 4 5 public class PruebaCuenta 6 { 7 public static void main(String[] args) 8 { 9 Cuenta cuenta1 = new Cuenta(“Jane Green”, 50.00); 10 Cuenta cuenta2 = new Cuenta(“John Blue”, -7.53); 11 12 // muestra el saldo inicial de cada objeto 13 System.out.printf(“Saldo de %s: $%.2f%n”, 14 cuenta1.obtenerNombre(), cuenta1.obtenerSaldo()); 15 System.out.printf(“Saldo de %s: $%.2f%n%n”, 16 cuenta2.obtenerNombre(), cuenta2.obtenerSaldo()); 17 18 // crea un objeto Scanner para obtener la entrada de la ventana de comandos 19 Scanner entrada = new Scanner(System.in); 20 21 System.out.print(“Escriba el monto a depositar para cuenta1: “); // indicador (promt) 22 double montoDeposito = entrada.nextDouble(); // obtiene entrada del usuario 23 System.out.printf(“%nsumando %.2f al saldo de cuenta1%n%n”, 24 montoDeposito); 25 cuenta1.depositar(montoDeposito); // suma al saldo de cuenta1 26 27 // muestra los saldos 28 System.out.printf(“Saldo de %s: $%.2f%n”, 29 cuenta1.obtenerNombre(), cuenta1.obtenerSaldo()); 30 System.out.printf(“Saldo de %s: $%.2f%n%n”, 31 cuenta2.obtenerNombre(), cuenta2.obtenerSaldo()); 32 33 System.out.print(“Escriba el monto a depositar para cuenta2: “); // indicador (promt) 34 montoDeposito = entrada.nextDouble(); // obtiene entrada del usuario 35 System.out.printf(“%nsumando %.2f al saldo de cuenta2%n%n”, 36 montoDeposito); 37 cuenta2.depositar(montoDeposito); // suma al saldo de cuenta2 38 39 // muestra los saldos 40 System.out.printf(“Saldo de %s: $%.2f%n”, 41 cuenta1.obtenerNombre(), cuenta1.obtenerSaldo()); 42 System.out.printf(“Saldo de %s: $%.2f%n%n”, 43 cuenta2.obtenerNombre(), cuenta2.obtenerSaldo()); 44 } // fin de main 45 } // fin de la clase PruebaCuenta
Copyright © 2024 DOKUMEN.SITE Inc.