Ejercicios: public class private private double public double double double new

Ejercicios 9.3 Muchos programas escritos con herencia podrían escribirse mediante la composición, y viceversa. Vuelva a

Views 288 Downloads 0 File size 562KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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-EmpleadoBaseMasComision4 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 Pregrado Estudiante de primer año

Estudiante de segundo año

Estudiante de tercer año

Estudiate de cuarto año

Estudiante Graduado

Maestría

Doctorado

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.