SlideShare una empresa de Scribd logo
1 de 6
PorPagar.
«interface»
PorPagar
Factura Empleado
EmpleadoAsalariado
1 // Fig. 10.11: PorPagar.java
2 // Declaración de la interfaz PorPagar.
3
4 public interface PorPagar
5{
6 double obtenerMontoPago(); // calcula el pago; no hay implementación
7 } // fin de la interfaz PorPagar
Fig. 10.11 Η Declaración de la interfaz PorPagar.
10.9.3 La clase Factura
1 Factura.java
2 // La clase Factura implementa a PorPagar.
3
4 public class Factura implements PorPagar
5{
6 private final String numeroPieza;
7 private final String descripcionPieza;
8 private int cantidad;
9 private double precioPorArticulo;
10
11 // constructor
12 public Factura(String numeroPieza, String descripcionPieza, int cantidad,
13 double precioPorArticulo)
14 {
15 if (cantidad < 0) // valida la cantidad
16 throw new IllegalArgumentException (“Cantidad debe ser >= 0”);
17
18 if (precioPorArticulo < 0.0) // valida el precioPorArticulo
19 throw new IllegalArgumentException(
20 “El precio por articulo debe ser >= 0”);
21
22 this.cantidad = cantidad;
23 this.numeroPieza = numeroPieza;
24 this.descripcionPieza = descripcionPieza;
25 this.precioPorArticulo = precioPorArticulo;
26 } // fin del constructor
27
Fig. 10.12 Η La clase Factura, que implementa a Porpagar (parte 1 de 3).
10.9 Creación y uso de interfaces 425
28 // obtiene el número de pieza
29 public String obtenerNumeroPieza()
30 {
31 return numeroPieza; // debe validar
32 }
33
34 // obtiene la descripción
35 public String obtenerDescripcionPieza()
36 {
37 return descripcionPieza;
38 }
39
40 // establece la cantidad
41 public void establecerCantidad(int cantidad)
42 {
43 if (cantidad < 0) // valida la cantidad
44 throw new IllegalArgumentException (“Cantidad debe ser >= 0”);
45
46 this.cantidad = cantidad;
47 }
48
49 // obtener cantidad
50 public int obtenerCantidad()
51 {
52 return cantidad;
53 }
54
55 // establece el precio por artículo
56 public void establecerPrecioPorArticulo(double precioPorArticulo)
57 {
58 if (precioPorArticulo < 0.0) // valida el precioPorArticulo
59 throw new IllegalArgumentException(
60 “El precio por articulo debe ser >= 0”);
61
62 this.precioPorArtculo = precioPorArticulo;
63 }
64
65 // obtiene el precio por artículo
66 public double obtenerPrecioPorArticulo()
67 {
68 return precioPorArticulo;
69 }
70
71 // devuelve representación String de un objeto Factura
72 @Override
73 public String toString()
74 {
75 return String.format(“%s: %n%s: %s (%s) %n%s: %d %n%s: $%,.2f”,
76 “factura”, “numero de pieza”, obtenerNumeroPieza(),
obtenerDescripcionPieza(),
77 “cantidad”, obtenerCantidad(), “precio por articulo”, obtenerPrecioPor-
Articulo());
78 }
79
Fig. 10.12 Η La clase Factura, que implementa a Porpagar (parte 2 de 3).
426 Capítulo 10 Programación orientada a objetos: polimorfismo e interfaces
80 // método requerido para realizar el contrato con la interfaz PorPagar
81 @Override
82 public double obtenerMontoPago()
83 {
84 return obtenerCantidad() * obtenerPrecioPorArticulo(); // calcula el costo
total
85 }
86 } // fin de la clase Factura
1: Empleado.java
2 // La superclase abstracta Empleado que implementa a PorPagar.
3
Fig. 10.13 Η La superclase abstract Empleado, que implementa a PorPagar (parte 1 de 2).
10.9 Creación y uso de interfaces 427
4 public abstract class Empleado implements PorPagar
5{
6 private final String primerNombre;
7 private final String apellidoPaterno;
8 private final String numeroSeguroSocial;
9
10 // constructor
11 public Empleado(String primerNombre, String apellidoPaterno,
12 String numeroSeguroSocial)
13 {
14 this.primerNombre = primerNombre;
15 this.apellidoPaterno = apellidoPaterno;
16 this.numeroSeguroSocial = numeroSeguroSocial;
17 }
18
19 // devuelve el primer nombre
20 public String obtenerPrimerNombre()
21 {
22 return primerNombre;
23 }
24
25 // devuelve el apellido paterno
26 public String obtenerApellidoPaterno()
27 {
28 return apellidoPaterno;
29 }
30
31 // devuelve el número de seguro social
32 public String obtenerNumeroSeguroSocial()
33 {
34 return numeroSeguroSocial;
35 }
36
37 // devuelve representación String de un objeto Empleado
38 @Override
39 public String toString()
40 {
41 return String.format(“%s %s%nnumero de seguro social: %s”,
42 obtenerPrimerNombre(), obtenerApellidoPaterno(),
obtenerNumeroSeguroSocial());
43 }
44
45 // Nota: Aquí no implementamos el método obtenerMontoPago de PorPagar, así que
46 // esta clase debe declararse como abstract para evitar un error de compilación.
47 } // fin de la clase abstracta Empleado
.
1: EmpleadoAsalariado.java
2 // La clase EmpleadoAsalariado que implementa la interfaz PorPagar.
3 // método obtenerMontoPago
4 public class EmpleadoAsalariado extends Empleado
5{
6 private double salarioSemanal;
7
8 // constructor
9 public EmpleadoAsalariado(String primerNombre, String apellidoPaterno,
10 String numeroSeguroSocial, double salarioSemanal)
11 {
12 super(primerNombre, apellidoPaterno, numeroSeguroSocial);
13
14 if (salarioSemanal < 0.0)
15 throw new IllegalArgumentException(
16 “El salario semanal debe ser >= 0.0”);
17
18 this.salarioSemanal = salarioSemanal;
19 }
20
21 // establece el salario
22 public void establecerSalarioSemanal(double salarioSemanal)
23 {
24 if (salariosemanal < 0.0)
25 throw new IllegalArgumentException(
26 “El salario semanal debe ser >= 0.0”);
La clase EmpleadoAsalariado, que implementa el método obtenerMontoPago de la interfaz
PorPagar (parte 1 de 2).
10.9 Creación y uso de interfaces 429
27
28 this.salarioSemanal = salarioSemanal;
29 }
30
31 // devuelve el salario
32 public double obtenerSalarioSemanal()
33 {
34 return salarioSemanal;
35 } // fin del método obtenerSalarioSemanal
36
37 // calcula los ingresos; implementa el método de la interfaz PorPagar
38 // que era abstracto en la superclase Empleado
39 @Override
40 public double obtenerMontoPago()
41 {
42 return obtenerSalarioSemanal();
43 }
44
45 // devuelve representación String de un objeto EmpleadoAsalariado
46 @Override
47 public String toString()
48 {
49 return String.format(“empleado asalariado: %s%n%s: $%,.2f”,
50 super.toString(), “salario semanal”, obtenerSalarioSemanal());
51 }
52 } // fin de la clase EmpleadoAsalariado
Fig. 10.14 Η La clase EmpleadoAsalariado, que implementa el método obtenerMontoPago de
la interfaz
PorPagar (parte 2 de 2).
: PruebaInterfazPorPagar.java
2 // Programa de prueba de la interfaz PorPagar que procesa objetos
3 // Factura y Empleado mediante el polimorfismo.
4 public class PruebaInterfazPorPagar
5{
6 public static void main(String[] args)
7{
8 // crea arreglo PorPagar con cuatro elementos
9 PorPagar[] objetosPorPagar = new PorPagar[4];
10
11 // llena el arreglo con objetos que implementan la interfaz PorPagar
12 objetosPorPagar[0] = new Factura(“01234”, “asiento”, 2, 375.00);
13 objetosPorPagar[1] = new Factura(“56789”, “llanta”, 4, 79.95);
14 objetosPorPagar[2] =
15 new EmpleadoAsalariado(“John”, “Smith”, “111-11-1111”, 800.00);
16 objetosPorPagar[3] =
17 new EmpleadoAsalariado(“Lisa”, “Barnes”, “888-88-8888”, 1200.00);
18
19 System.out.println(
20 “Facturas y Empleados procesados en forma polimorfica:”);
21
22 // procesa en forma genérica cada elemento en el arreglo objetosPorPagar
23 for (PorPagar porPagarActual : objetosPorPagar)
24 {
Fig. 10.15 Η Programa de prueba de la interfaz PorPagar, que procesa objetos Factura y
Empleado
de manera polimórfica (parte 1 de 2).
10.9 Creación y uso de interfaces 431
25 // imprime porPagarActual y su monto de pago apropiado
26 System.out.printf(“%n%s %n%s: $%,.2f%n”,
27 porPagarActual.toString(), // se podría invocar de manera implícita
28 “pago vencido”, porPagarActual.obtenerMontoPago());
29 }
30 } // fin de main
31 } // fin de la clase PruebaInterfazPorPagar
Facturas y Empleados procesados en forma polimorfica:
factura:
numero de pieza: 01234 (asiento)
cantidad: 2
precio por articulo: $375.00
pago vencido: $750.00
factura:
numero de pieza: 56789 (llanta)
cantidad: 4
precio por articulo: $79.95
pago vencido: $319.80
empleado asalariado: John Smith
numero de seguro social: 111-11-1111
salario semanal: $800.00
pago vencido: $800.00
empleado asalariado: Lisa Barnes
numero de seguro social: 888-88-8888
salario semanal: $1,200.00
pago vencido: $1,200.00

Más contenido relacionado

La actualidad más candente

SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classesflekoso
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...jaircazarin
 
SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Genericsflekoso
 
JavaScript funciones
JavaScript funcionesJavaScript funciones
JavaScript funcionesjcremiro
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto PooEPN
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuarioLaura Folgado Galache
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collectionsflekoso
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHPJavier Peñaranda
 
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones coleccionesluis freddy
 
PROBLEMAS DE PROGRAMACION 3
PROBLEMAS DE PROGRAMACION 3PROBLEMAS DE PROGRAMACION 3
PROBLEMAS DE PROGRAMACION 3Jordan Puente
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignacionesflekoso
 
Calculadora
CalculadoraCalculadora
CalculadoraPablo GP
 

La actualidad más candente (20)

Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classes
 
Ajax
AjaxAjax
Ajax
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Codigo autogenerado
Codigo autogeneradoCodigo autogenerado
Codigo autogenerado
 
SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Generics
 
JavaScript funciones
JavaScript funcionesJavaScript funciones
JavaScript funciones
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto Poo
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
Java 2
Java 2Java 2
Java 2
 
Advanced angular 2
Advanced angular 2Advanced angular 2
Advanced angular 2
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP
 
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
 
Introducción a TDD y PHPUnit
Introducción a TDD y PHPUnitIntroducción a TDD y PHPUnit
Introducción a TDD y PHPUnit
 
PROBLEMAS DE PROGRAMACION 3
PROBLEMAS DE PROGRAMACION 3PROBLEMAS DE PROGRAMACION 3
PROBLEMAS DE PROGRAMACION 3
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignaciones
 
Calculadora
CalculadoraCalculadora
Calculadora
 
Java básico
Java  básicoJava  básico
Java básico
 

Similar a Por pagar

Hebras
HebrasHebras
HebrasTensor
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es VietnamAlex Casquete
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANSWilliam Diaz S
 
Unit Testing - GTUG
Unit Testing - GTUGUnit Testing - GTUG
Unit Testing - GTUGJordi Gerona
 
Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Soraya Lara
 
Taller de programación clase #3
Taller de programación   clase #3Taller de programación   clase #3
Taller de programación clase #3Juan Cardona
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - TrovitJordi Gerona
 
Presentación arraysobjetos
Presentación arraysobjetosPresentación arraysobjetos
Presentación arraysobjetossilsilvetti
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupSoraya Lara
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en JavaJohn Ortiz
 
Ejercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráficaEjercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráficaDiroplan
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01cursobeta
 

Similar a Por pagar (20)

Guia5 java
Guia5 javaGuia5 java
Guia5 java
 
Hebras
HebrasHebras
Hebras
 
Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0
 
Prac1
Prac1Prac1
Prac1
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
Ejemplos robert miguel
Ejemplos robert miguelEjemplos robert miguel
Ejemplos robert miguel
 
Unit Testing - GTUG
Unit Testing - GTUGUnit Testing - GTUG
Unit Testing - GTUG
 
2 f programas
2 f programas2 f programas
2 f programas
 
2 f programas
2 f programas2 f programas
2 f programas
 
Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )
 
Taller de programación clase #3
Taller de programación   clase #3Taller de programación   clase #3
Taller de programación clase #3
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - Trovit
 
Presentación arraysobjetos
Presentación arraysobjetosPresentación arraysobjetos
Presentación arraysobjetos
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y Cup
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en Java
 
Ejercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráficaEjercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráfica
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 

Último

infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendidaLuis Francisco Reyes Aceves
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionEmanuelMuoz11
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORASMarc Liust
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8antoniopalmieriluna
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptxdulcemonterroza
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfYanitza28
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfYanitza28
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Último (18)

infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Por pagar

  • 1. PorPagar. «interface» PorPagar Factura Empleado EmpleadoAsalariado 1 // Fig. 10.11: PorPagar.java 2 // Declaración de la interfaz PorPagar. 3 4 public interface PorPagar 5{ 6 double obtenerMontoPago(); // calcula el pago; no hay implementación 7 } // fin de la interfaz PorPagar Fig. 10.11 Η Declaración de la interfaz PorPagar. 10.9.3 La clase Factura 1 Factura.java 2 // La clase Factura implementa a PorPagar. 3 4 public class Factura implements PorPagar 5{ 6 private final String numeroPieza; 7 private final String descripcionPieza; 8 private int cantidad; 9 private double precioPorArticulo; 10 11 // constructor 12 public Factura(String numeroPieza, String descripcionPieza, int cantidad, 13 double precioPorArticulo) 14 { 15 if (cantidad < 0) // valida la cantidad 16 throw new IllegalArgumentException (“Cantidad debe ser >= 0”); 17 18 if (precioPorArticulo < 0.0) // valida el precioPorArticulo 19 throw new IllegalArgumentException( 20 “El precio por articulo debe ser >= 0”); 21 22 this.cantidad = cantidad; 23 this.numeroPieza = numeroPieza; 24 this.descripcionPieza = descripcionPieza; 25 this.precioPorArticulo = precioPorArticulo; 26 } // fin del constructor 27 Fig. 10.12 Η La clase Factura, que implementa a Porpagar (parte 1 de 3). 10.9 Creación y uso de interfaces 425 28 // obtiene el número de pieza 29 public String obtenerNumeroPieza() 30 { 31 return numeroPieza; // debe validar
  • 2. 32 } 33 34 // obtiene la descripción 35 public String obtenerDescripcionPieza() 36 { 37 return descripcionPieza; 38 } 39 40 // establece la cantidad 41 public void establecerCantidad(int cantidad) 42 { 43 if (cantidad < 0) // valida la cantidad 44 throw new IllegalArgumentException (“Cantidad debe ser >= 0”); 45 46 this.cantidad = cantidad; 47 } 48 49 // obtener cantidad 50 public int obtenerCantidad() 51 { 52 return cantidad; 53 } 54 55 // establece el precio por artículo 56 public void establecerPrecioPorArticulo(double precioPorArticulo) 57 { 58 if (precioPorArticulo < 0.0) // valida el precioPorArticulo 59 throw new IllegalArgumentException( 60 “El precio por articulo debe ser >= 0”); 61 62 this.precioPorArtculo = precioPorArticulo; 63 } 64 65 // obtiene el precio por artículo 66 public double obtenerPrecioPorArticulo() 67 { 68 return precioPorArticulo; 69 } 70 71 // devuelve representación String de un objeto Factura 72 @Override 73 public String toString() 74 { 75 return String.format(“%s: %n%s: %s (%s) %n%s: %d %n%s: $%,.2f”, 76 “factura”, “numero de pieza”, obtenerNumeroPieza(), obtenerDescripcionPieza(), 77 “cantidad”, obtenerCantidad(), “precio por articulo”, obtenerPrecioPor- Articulo()); 78 } 79 Fig. 10.12 Η La clase Factura, que implementa a Porpagar (parte 2 de 3). 426 Capítulo 10 Programación orientada a objetos: polimorfismo e interfaces 80 // método requerido para realizar el contrato con la interfaz PorPagar 81 @Override
  • 3. 82 public double obtenerMontoPago() 83 { 84 return obtenerCantidad() * obtenerPrecioPorArticulo(); // calcula el costo total 85 } 86 } // fin de la clase Factura 1: Empleado.java 2 // La superclase abstracta Empleado que implementa a PorPagar. 3 Fig. 10.13 Η La superclase abstract Empleado, que implementa a PorPagar (parte 1 de 2). 10.9 Creación y uso de interfaces 427 4 public abstract class Empleado implements PorPagar 5{ 6 private final String primerNombre; 7 private final String apellidoPaterno; 8 private final String numeroSeguroSocial; 9 10 // constructor 11 public Empleado(String primerNombre, String apellidoPaterno, 12 String numeroSeguroSocial) 13 { 14 this.primerNombre = primerNombre; 15 this.apellidoPaterno = apellidoPaterno; 16 this.numeroSeguroSocial = numeroSeguroSocial; 17 } 18 19 // devuelve el primer nombre 20 public String obtenerPrimerNombre() 21 { 22 return primerNombre; 23 } 24 25 // devuelve el apellido paterno 26 public String obtenerApellidoPaterno() 27 { 28 return apellidoPaterno; 29 } 30 31 // devuelve el número de seguro social 32 public String obtenerNumeroSeguroSocial() 33 { 34 return numeroSeguroSocial; 35 } 36 37 // devuelve representación String de un objeto Empleado 38 @Override 39 public String toString() 40 { 41 return String.format(“%s %s%nnumero de seguro social: %s”, 42 obtenerPrimerNombre(), obtenerApellidoPaterno(),
  • 4. obtenerNumeroSeguroSocial()); 43 } 44 45 // Nota: Aquí no implementamos el método obtenerMontoPago de PorPagar, así que 46 // esta clase debe declararse como abstract para evitar un error de compilación. 47 } // fin de la clase abstracta Empleado . 1: EmpleadoAsalariado.java 2 // La clase EmpleadoAsalariado que implementa la interfaz PorPagar. 3 // método obtenerMontoPago 4 public class EmpleadoAsalariado extends Empleado 5{ 6 private double salarioSemanal; 7 8 // constructor 9 public EmpleadoAsalariado(String primerNombre, String apellidoPaterno, 10 String numeroSeguroSocial, double salarioSemanal) 11 { 12 super(primerNombre, apellidoPaterno, numeroSeguroSocial); 13 14 if (salarioSemanal < 0.0) 15 throw new IllegalArgumentException( 16 “El salario semanal debe ser >= 0.0”); 17 18 this.salarioSemanal = salarioSemanal; 19 } 20 21 // establece el salario 22 public void establecerSalarioSemanal(double salarioSemanal) 23 { 24 if (salariosemanal < 0.0) 25 throw new IllegalArgumentException( 26 “El salario semanal debe ser >= 0.0”); La clase EmpleadoAsalariado, que implementa el método obtenerMontoPago de la interfaz PorPagar (parte 1 de 2). 10.9 Creación y uso de interfaces 429 27 28 this.salarioSemanal = salarioSemanal; 29 } 30 31 // devuelve el salario 32 public double obtenerSalarioSemanal() 33 { 34 return salarioSemanal; 35 } // fin del método obtenerSalarioSemanal 36 37 // calcula los ingresos; implementa el método de la interfaz PorPagar 38 // que era abstracto en la superclase Empleado 39 @Override 40 public double obtenerMontoPago() 41 { 42 return obtenerSalarioSemanal(); 43 } 44
  • 5. 45 // devuelve representación String de un objeto EmpleadoAsalariado 46 @Override 47 public String toString() 48 { 49 return String.format(“empleado asalariado: %s%n%s: $%,.2f”, 50 super.toString(), “salario semanal”, obtenerSalarioSemanal()); 51 } 52 } // fin de la clase EmpleadoAsalariado Fig. 10.14 Η La clase EmpleadoAsalariado, que implementa el método obtenerMontoPago de la interfaz PorPagar (parte 2 de 2). : PruebaInterfazPorPagar.java 2 // Programa de prueba de la interfaz PorPagar que procesa objetos 3 // Factura y Empleado mediante el polimorfismo. 4 public class PruebaInterfazPorPagar 5{ 6 public static void main(String[] args) 7{ 8 // crea arreglo PorPagar con cuatro elementos 9 PorPagar[] objetosPorPagar = new PorPagar[4]; 10 11 // llena el arreglo con objetos que implementan la interfaz PorPagar 12 objetosPorPagar[0] = new Factura(“01234”, “asiento”, 2, 375.00); 13 objetosPorPagar[1] = new Factura(“56789”, “llanta”, 4, 79.95); 14 objetosPorPagar[2] = 15 new EmpleadoAsalariado(“John”, “Smith”, “111-11-1111”, 800.00); 16 objetosPorPagar[3] = 17 new EmpleadoAsalariado(“Lisa”, “Barnes”, “888-88-8888”, 1200.00); 18 19 System.out.println( 20 “Facturas y Empleados procesados en forma polimorfica:”); 21 22 // procesa en forma genérica cada elemento en el arreglo objetosPorPagar 23 for (PorPagar porPagarActual : objetosPorPagar) 24 { Fig. 10.15 Η Programa de prueba de la interfaz PorPagar, que procesa objetos Factura y Empleado de manera polimórfica (parte 1 de 2). 10.9 Creación y uso de interfaces 431 25 // imprime porPagarActual y su monto de pago apropiado 26 System.out.printf(“%n%s %n%s: $%,.2f%n”, 27 porPagarActual.toString(), // se podría invocar de manera implícita 28 “pago vencido”, porPagarActual.obtenerMontoPago()); 29 } 30 } // fin de main 31 } // fin de la clase PruebaInterfazPorPagar Facturas y Empleados procesados en forma polimorfica: factura: numero de pieza: 01234 (asiento) cantidad: 2 precio por articulo: $375.00 pago vencido: $750.00
  • 6. factura: numero de pieza: 56789 (llanta) cantidad: 4 precio por articulo: $79.95 pago vencido: $319.80 empleado asalariado: John Smith numero de seguro social: 111-11-1111 salario semanal: $800.00 pago vencido: $800.00 empleado asalariado: Lisa Barnes numero de seguro social: 888-88-8888 salario semanal: $1,200.00 pago vencido: $1,200.00