Está en la página 1de 9

INGENIERIA EN DESARROLLO DE SOFTWARE.

MATERIA: PROGRAMACION ORIENTADA A OBJETOS


II.

ALUMNO: JORGE ALBERTO HERNANDEZ TERÁN.

PROFESOR: UZZIEL QUIROZ CASTAÑEDA.

TEMA: TAREA 3.
Ejercicios capítulo 3. Herencia
De acuerdo al primer libro de la bibliografía, realizar los siguientes ejercicios.

1) Ejercicio 9.3
(Uso de la composición en vez de la herencia) Muchos programas escritos con herencia
podrían escribirse mediante la composición, y viceversa. Vuelva a escribir la clase
EmpleadoBaseMasComision (figura 9.11) de la jerarquía EmpleadoPorComision-
EmpleadoBaseMasComision para usar la composición en vez de la herencia.
CODIGO
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() );
}
}

2) Ejercicio 9.8
(Jerarquía de herencia Cuadrilatero) Escriba una jerarquía de herencia para las clases
Cuadrilatero, Trapezoide, Paralelogramo, Rectangulo y Cuadrado. Use Cuadrilatero como
la superclase de la jerarquía. Cree y use una clase Punto para representar los puntos en
cada figura. Agregue todos los niveles que sea posible a la jerarquía. Especifique las
variables de instancia y los métodos para cada clase. Las variables de instancia private de
Cuadrilatero deben ser los pares de coordenadas x-y para los cuatro puntos finales del
Cuadrilatero. Escriba un programa que cree instancias de objetos de sus clases, y que
imprima el área de cada objeto (excepto Cuadrilatero)

CODIGO
PROFESOR POR CUESTION DE TIEMPO Y POR QUE SE ME DIFICULTO REALIZARLOS CON
CUADRILATEROS LO REALICE CON FIGURAS GEOMETRICAS, PERO REALICE EL PROGRAMA
TAL COMO LO PLANTEA EL EJERCICIO.

package tarea3;

public abstract class FiguraGeometrica {

protected double valor1;

public FiguraGeometrica(double valor1) {

super();

this.valor1 = valor1;

public double getValor1() {

return valor1;

public void setValor1(double valor1) {

this.valor1 = valor1;

public abstract double getArea();

public abstract double getPerimetro();

public class Circulo extends FiguraGeometrica {

public Circulo(double valor1) {

super(valor1);

}
@Override

public double getArea() {

return Math.PI*Math.pow(this.valor1, 2);

@Override

public double getPerimetro() {

return Math.PI*this.valor1;

}
public class Cuadrado extends FiguraGeometrica {

public Cuadrado(double valor1) {


super(valor1);
}

@Override

public double getArea() {

return Math.pow(this.valor1, 2);


}

@Override

public double getPerimetro() {

return this.valor1*4;

public class Rectangulo extends FiguraGeometrica {

protected double valor2;

public Rectangulo(double valor1, double valor2) {

super(valor1);

this.valor2 = valor2;
}

public double getValor2() {

return valor2;

public void setValor2(double valor2) {

this.valor2 = valor2;

@Override

public double getArea() {

return this.valor1*this.valor2;

@Override

public double getPerimetro() {

return 2*this.valor1 + 2*this.valor2;

public class Triangulo extends FiguraGeometrica {

private double valor2;

public Triangulo(double valor1, double valor2) {

super(valor1);

this.valor2 = valor2;

public double getValor2() {

return valor2;

}
public void setValor2(double valor2) {

this.valor2 = valor2;

}
@Override

public double getArea() {

return (this.valor1*this.valor2)/2;

@Override

public double getPerimetro() {

return this.valor1 + (2 * Math.sqrt((Math.pow(this.valor1,


2)+Math.pow(this.valor2, 2))));

public class Cubo extends Cuadrado {

public Cubo(double valor1) {

super(valor1);

public double getArea() {

return Math.pow(this.valor1, 3);

public class Principal {

public static void main(String[] args) {

FiguraGeometrica figura;

figura = new Circulo(5);

System.out.println(figura.getClass());

System.out.println("Area: "+figura.getArea());

System.out.println("Perimetro: "+figura.getPerimetro());

figura = new Cuadrado(5);

System.out.println(figura.getClass());
System.out.println("Area: "+figura.getArea());

System.out.println("Perimetro: "+figura.getPerimetro());

figura = new Rectangulo(5,2);


System.out.println(figura.getClass());

System.out.println("Area: "+figura.getArea());

System.out.println("Perimetro: "+figura.getPerimetro());

figura = new Triangulo(5,2);

System.out.println(figura.getClass());

System.out.println("Area: "+figura.getArea());

System.out.println("Perimetro: "+figura.getPerimetro());

figura = new Cubo(5);

System.out.println(figura.getClass());

System.out.println("Area: "+figura.getArea());

System.out.println("Perimetro: "+figura.getPerimetro());

}
EJECUCION
3) Ejercicio 9.14

(Jerarquía Empleado) En este capítulo estudió una jerarquía de herencia en donde la clase
EmpleadoBaseMasComision heredó de la clase EmpleadoPorComision. Sin embargo, no todos
los tipos de empleados son EmpleadoPorComision. En este ejercicio, creará una superclase
Empleado más general que extraiga los atributos y comportamientos de la clase
EmpleadoPorComision que son comunes para todos los objetos Empleado. Los atributos y
comportamientos comunes de todos los objetos Empleado son: primerNombre,
apellidoPaterno, numeroSeguroSocial, obtenerPrimerNombre, obtenerApellidoPaterno,
obtenerNumeroSeguroSocial y una parte del método toString. Cree una nueva superclase
Empleado que contenga estas variables y métodos de instancia, además de un constructor. A
continuación, vuelva a escribir la clase EmpleadoPorComision de la sección 9.4.5 como una
subclase de Empleado. La clase EmpleadoPorComision debe contener sólo las variables y
métodos de instancia que no se declaren en la superclase Empleado. El constructor de la clase
EmpleadoPorComision debe invocar al constructor de la clase Empleado y el método toString
de EmpleadoPorComision debe invocar al método toString de Empleado. Una vez que
complete estas modificaciones, ejecute las aplicaciones PruebaEmpleadoPorComision y
PruebaEmpleado-BaseMasComision usando estas nuevas clases para asegurar que las
aplicaciones sigan mostrando los mismos resultados para un objeto EmpleadoPorComision y
un objeto EmpleadoBaseMasComision, respectivamente.

CODIGO

También podría gustarte