Advertisement
Brandford

Herencia en Java Protected

Oct 6th, 2014
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.77 KB | None | 0 0
  1. // Libro Como Programar en Java de @deitel
  2. // Capitulo 9 Herencia
  3.  
  4. // Clase EmpleadoPorComision
  5. // Fig. 9.4: EmpleadoPorComision.java
  6. // La clase EmpleadoPorComision representa a un empleado por comisión que
  7. // recibe un porcentaje de las ventas brutas.
  8.  
  9. package Capitulo9; // Linea agregada para identificar esta clase y evitar problemas de duplicidad
  10.  
  11. public class EmpleadoPorComision extends Object
  12. {
  13.    protected String primerNombre;
  14.    protected String apellidoPaterno;
  15.    protected String numeroSeguroSocial;
  16.    protected double ventasBrutas; // ventas semanales totales
  17.    protected double tarifaComision; // porcentaje de comisión
  18.  
  19.    // constructor con cinco argumentos
  20.    public EmpleadoPorComision( String nombre, String apellido, String nss,
  21.       double ventas, double tarifa )
  22.    {
  23.       // la llamada implícita al constructor de Object ocurre aquí
  24.       primerNombre = nombre;
  25.       apellidoPaterno = apellido;
  26.       numeroSeguroSocial = nss;
  27.       establecerVentasBrutas( ventas ); // valida y almacena las ventas brutas
  28.       establecerTarifaComision( tarifa ); // valida y almacena la tarifa de comisión
  29.    } // fin del constructor de EmpleadoPorComision con cinco argumentos
  30.  
  31.    // establece el primer nombre
  32.    public void establecerPrimerNombre( String nombre )
  33.    {
  34.       primerNombre = nombre;  // debería validar
  35.    } // fin del método establecerPrimerNombre
  36.  
  37.    // devuelve el primer nombre
  38.    public String obtenerPrimerNombre()
  39.    {
  40.       return primerNombre;
  41.    } // fin del método obtenerPrimerNombre
  42.  
  43.    // establece el apellido paterno
  44.    public void establecerApellidoPaterno( String apellido )
  45.    {
  46.       apellidoPaterno = apellido;  // debería validar
  47.    } // fin del método establecerApellidoPaterno
  48.  
  49.    // devuelve el apellido paterno
  50.    public String obtenerApellidoPaterno()
  51.    {
  52.       return apellidoPaterno;
  53.    } // fin del método obtenerApellidoPaterno
  54.  
  55.    // establece el número de seguro social
  56.    public void establecerNumeroSeguroSocial( String nss )
  57.    {
  58.       numeroSeguroSocial = nss; // debería validar
  59.    } // fin del método establecerNumeroSeguroSocial
  60.  
  61.    // devuelve el número de seguro social
  62.    public String obtenerNumeroSeguroSocial()
  63.    {
  64.       return numeroSeguroSocial;
  65.    } // fin del método obtenerNumeroSeguroSocial
  66.  
  67.    // establece el monto de ventas brutas
  68.    public void establecerVentasBrutas( double ventas )
  69.    {
  70.       if ( ventas >= 0.0 )
  71.          ventasBrutas = ventas;
  72.       else
  73.          throw new IllegalArgumentException(
  74.             "Las ventas brutas deben ser >= 0.0" );
  75.    } // fin del método establecerVentasBrutas
  76.  
  77.    // devuelve el monto de ventas brutas
  78.    public double obtenerVentasBrutas()
  79.    {
  80.       return ventasBrutas;
  81.    } // fin del método obtenerVentasBrutas
  82.  
  83.    // establece la tarifa de comisión
  84.    public void establecerTarifaComision( double tarifa )
  85.    {
  86.       if (tarifa > 0.0 && tarifa < 1.0 )
  87.          tarifaComision = tarifa;
  88.       else
  89.          throw new IllegalArgumentException(
  90.             "La tarifa de comisión debe ser > 0.0 y < 1.0" );
  91.    } // fin del método establecerTarifaComision
  92.  
  93.    // devuelve la tarifa de comisión
  94.    public double obtenerTarifaComision()
  95.    {
  96.       return tarifaComision;
  97.    } // fin del método obtenerTarifaComision
  98.  
  99.    // calcula los ingresos
  100.    public double ingresos()
  101.    {
  102.       return tarifaComision * ventasBrutas;
  103.    } // fin del método ingresos
  104.  
  105.    // devuelve representación String del objeto EmpleadoPorComision
  106.    @Override // indica que este método sobrescribe el método de una superclase
  107.    public String toString()
  108.    {
  109.       return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f",
  110.          "empleado por comision", primerNombre, apellidoPaterno,
  111.          "numero de seguro social", numeroSeguroSocial,
  112.          "ventas brutas", ventasBrutas,
  113.          "tarifa de comision", tarifaComision );
  114.    } // fin del método toString
  115. } // fin de la clase EmpleadoPorComision
  116.  
  117.  
  118. // Clase EmpleadoBaseMasComision
  119. // Fig. 9.9: EmpleadoBaseMasComision.java
  120. // EmpleadoBaseMasComision hereda las variables de instancia
  121. // protected de EmpleadoPorComision.
  122.  
  123. package Capitulo9; // Linea agregada para identificar esta clase y evitar problemas de duplicidad
  124.  
  125. public class EmpleadoBaseMasComision extends EmpleadoPorComision
  126. {
  127.    private double salarioBase; // salario base por semana
  128.  
  129.    // constructor con seis argumentos
  130.    public EmpleadoBaseMasComision( String nombre, String apellido,
  131.       String nss, double ventas, double tarifa, double salario )
  132.    {
  133.       super( nombre, apellido, nss, ventas, tarifa );
  134.       establecerSalarioBase( salario ); // valida y almacena el salario base
  135.    } // fin del constructor de EmpleadoBaseMasComision con seis argumentos
  136.    
  137.    // establece el salario base
  138.    public void establecerSalarioBase( double salario )
  139.    {  
  140.        if ( salario >= 0.0 )
  141.           salarioBase = salario;
  142.        else
  143.           throw new IllegalArgumentException(
  144.              "El salario base debe ser >= 0.0" );
  145.    } // fin del método establecerSalarioBase
  146.  
  147.    // devuelve el salario base
  148.    public double obtenerSalarioBase()
  149.    {
  150.       return salarioBase;
  151.    } // fin del método obtenerSalarioBase
  152.  
  153.    // calcula los ingresos
  154.    @Override  // indica que este método sobrescribe al método de la superclase  
  155.    public double ingresos()
  156.    {
  157.       return salarioBase + ( tarifaComision * ventasBrutas );
  158.    } // fin del método ingresos
  159.  
  160.    // devuelve representación String de EmpleadoBaseMasComision
  161.    @Override  // indica que este método sobrescribe al método de la superclase  
  162.    public String toString()
  163.    {
  164.       return String.format(
  165.          "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f\n%s: %.2f",
  166.          "empleado por comision con salario base", primerNombre, apellidoPaterno,
  167.          "numero de seguro social", numeroSeguroSocial,
  168.          "ventas brutas", ventasBrutas, "tarifa comision", tarifaComision,
  169.          "salario base", salarioBase );
  170.    } // fin del método toString
  171. } // fin de la clase EmpleadoBaseMasComision
  172.  
  173.  
  174. // Clase PruebaEmpleadoBaseMasComision
  175. // PruebaEmpleadoBaseMasComision.java
  176. // Programa de prueba de EmpleadoBaseMasComision.
  177.  
  178. package Capitulo9; // Linea agregada para identificar esta clase y evitar problemas de duplicidad
  179.  
  180. public class PruebaEmpleadoBaseMasComision
  181. {
  182.    public static void main( String[] args )
  183.    {
  184.       // crea instancia de objeto EmpleadoBaseMasComision
  185.       EmpleadoBaseMasComision empleado =
  186.          new EmpleadoBaseMasComision(
  187.          "Bob", "Lewis", "333-33-3333", 5000, .04, 300 );
  188.      
  189.       // obtiene datos del empleado por comisión con sueldo base
  190.       System.out.println(
  191.          "Informacion del empleado obtenida por metodos establecer: \n" );
  192.       System.out.printf( "%s %s\n", "El primer nombre es",
  193.          empleado.obtenerPrimerNombre() );
  194.       System.out.printf( "%s %s\n", "El apellido es",
  195.          empleado.obtenerApellidoPaterno() );
  196.       System.out.printf( "%s %s\n", "El numero de seguro social es",
  197.          empleado.obtenerNumeroSeguroSocial() );
  198.       System.out.printf( "%s %.2f\n", "Las ventas brutas son",
  199.          empleado.obtenerVentasBrutas() );
  200.       System.out.printf( "%s %.2f\n", "La tarifa de comision es",
  201.          empleado.obtenerTarifaComision() );
  202.       System.out.printf( "%s %.2f\n", "El salario base es",
  203.          empleado.obtenerSalarioBase() );
  204.  
  205.       empleado.establecerSalarioBase( 1000 ); // establece el salario base
  206.      
  207.       System.out.printf( "\n%s:\n\n%s\n",
  208.          "Informacion actualizada del empleado, obtenida por toString",
  209.          empleado.toString() );
  210.    } // fin de main
  211. } // fin de la clase PruebaEmpleadoBaseMasComision
  212.  
  213.  
  214. /**************************************************************************
  215.  * (C) Copyright 1992-2012 por Deitel & Associates, Inc. y                *
  216.  * Pearson Education, Inc. Todos los derechos reservados.                 *
  217.  *                                                                        *
  218.  * RENUNCIA: Los autores y el editor de este libro han realizado su mejor *
  219.  * esfuerzo para preparar este libro. Esto incluye el desarrollo, la      *
  220.  * investigación y prueba de las teorías y programas para determinar su   *
  221.  * efectividad. Los autores y el editor no hacen ninguna garantía de      *
  222.  * ningún tipo, expresa o implícita, en relación con estos programas o    *
  223.  * con la documentación contenida en estos libros. Los autores y el       *
  224.  * editor no serán responsables en ningún caso por los daños consecuentes *
  225.  * en conexión con, o que surjan de, el suministro, desempeño o uso de    *
  226.  * estos programas.                                                       *
  227.  *************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement