Sunteți pe pagina 1din 3

Ejercicios

9.3 Muchos programas escritos con herencia podrían escribirse mediante la composición, y viceversa. Vuelva
a escribir las clases EmpleadoBaseMasComision4 (fi gura 9.13) de la jerarquía EmpleadoPorComision3-EmpleadoBase-
MasComision4 para usar la composición en vez de la herencia. Una vez que haga esto, valore los méritos
relativos de las dos metodologías para los problemas de EmpleadoPorComision3 y EmpleadoBaseMasComision4, así
como también para los programas orientados a objetos en general. ¿Cuál metodología es más natural? ¿Por
qué? de los programas y ayuda a prevenir errores.

Para un programa relativamente corto como este, cualquier enfoque es aceptable. Pero como
programas hacerse más grande con más y más objetos siendo instanciados, la herencia se
convierte preferible porque hace que el programa sea más fácil de modificar y promueve la
reutilización de código.

public class BasePlusCommissionEmployee4


{
private CommissionEmployee3 commissionEmployee;
private double baseSalary;

public BasePlusCommissionEmployee4( String first, String last,


String ssn, double sales, double rate, double salary )
{
commissionEmployee = new CommissionEmployee3( first, last, ssn, sales, rate );
setBaseSalary( salary );
}

public void setFirstName( String first )


{
commissionEmployee.setFirstName( first );
}

public String getFirstName()


{
return commissionEmployee.getFirstName();
}

public void setLastName( String last )


{
commissionEmployee.setLastName( last );
}

public String getLastName()


{

return commissionEmployee.getLastName();
}

public void setSocialSecurityNumber( String ssn )


{
commissionEmployee.setSocialSecurityNumber( ssn );
}

public String getSocialSecurityNumber()


{
return commissionEmployee.getSocialSecurityNumber();
}
public void setGrossSales( double sales )
{
commissionEmployee.setGrossSales( sales );
}
59
public double getGrossSales()
{
return commissionEmployee.getGrossSales();
}

public void setCommissionRate( double rate )


{
commissionEmployee.setCommissionRate( rate );
}

public double getCommissionRate()


{
return commissionEmployee.getCommissionRate();
}

public void setBaseSalary( double salary )


{
baseSalary = ( salary < 0.0 ) ? 0.0 : salary;
}

public double getBaseSalary()


{
return baseSalary;
}

public double earnings()


{
return getBaseSalary() + commissionEmployee.earnings();
}

public String toString()


{
return String.format( "%s %s\n%s: %.2f", "base-salaried", commissionEmployee.toString(), "base salary",
getBaseSalary() );
}
}

9.5 Dibuje una jerarquía de herencia para los estudiantes en una universidad, de manera similar a la jerarquía
que se muestra en la fi gura 9.2. Use a Estudiante como la superclase de la jerarquía, y después extienda
Estudiante con las clases EstudianteNoGraduado y EstudianteGraduado. Siga extendiendo la jerarquía con el mayor
número de niveles que sea posible. Por ejemplo, EstudiantePrimerAnio, EstudianteSegundoAnio, EstudianteTercerAnio y
EstudianteCuartoAnio podrían extender a EstudianteNoGraduado, y EstudianteDoctorado y EstudianteMaestria
podrían ser subclases de EstudianteGraduado. Después de dibujar la jerarquía, hable sobre las relaciones que
existen entre las clases. [Nota: no necesita escribir código para este ejercicio].

Estudiante

Estudiante de Estudiante
Pregrado Graduado

Estudiante de Estudiante de
Maestría Doctorado
primer año segundo año

Estudiante de Estudiate de
tercer año cuarto año
9.7 Algunos programadores prefieren no utilizar el acceso protected, pues piensan que quebranta el
encapsulamiento de la superclase. Hable sobre los méritos relativos de utilizar el acceso protected, en
comparación con el acceso private en las superclases. de sus clases, y que imprima el área de cada objeto
(excepto Cuadrilatero).

Las variables de instancia privadas están ocultas en la subclase y solo son accesibles a través de
los métodos públicos o protegidos de la superclase. El uso de acceso protegido habilita la subclase
para manipular los miembros protegidos sin utilizar los métodos de acceso de la superclase. Si los
miembros de la superclase son privados, los métodos de la superclase deben ser utilizado para
acceder a los datos. Esto puede provocar una disminución en el rendimiento debido a las llamadas
al método extra.

S-ar putea să vă placă și