Está en la página 1de 11

Universidad Nacional Facultad de Ingeniería

de Trujillo Escuela Profesional de Ingeniería de Sistemas

Clases abstractas e Interfaces CLASE 07

Curso: Programación Orientada a Objetos I


Docente: Ms. Zoraida Yanet Vidal Melgarejo.

Métodos abstractos -2-

• Tenemos un método f() aplicable a todos los objetos de la clase A.


• Área de un polígono.

• La implementación del método es completamente diferente en


cada subclase de A.
• Área de un triángulo.
• Área de un rectángulo.

• Para declarar un método como abstracto, se pone delante la


palabra reservada abstract y no define un cuerpo:
public abstract tipo nombreMétodo(....);

• Luego en cada subclase se define un método con la misma


cabecera y distinto cuerpo.

2
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 1 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Clases Abstractas -3-

• Si una clase contiene al menos un método abstracto, entonces es una clase


abstracta.

• Una clase abstracta es una clase de la que no se pueden crear objetos,


pero puede ser utilizada como clase padre para otras clases.

• Declaración:
public abstract class NombreClase {
..............
}

Ejemplo de clase abstracta -4-

4
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 2 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejemplo de clase abstracta -5-

public abstract class Alumno extends Persona {


private String nivelAcademico;
public Alumno (String nombre, String nivelAcademico) {
super(n, e);
curso = c; nivelAcademico = nivel;
}
public String toString() {
return super.toString() + curso + nivelAcademico;
}
public abstract double pagoMensual();
public abstract String getAsignaturas();
}

Ejemplo de clase abstracta -6-

public class Libre extends Alumno {


private String []listaDeAsignaturas;
private static float precioPorHora=10;
private int nroHorasDiarias;

private void pedirAsignaturas() {


// se inicializa listaDeAsignaturas
}

public double pagoMensual() {


return precioPorHora*nroHorasDiarias*30;
}

6
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 3 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejemplo de clase abstracta -7-

public String getAsignaturas() {


String asignaturas="";
for (int i=0; i<listaDeAsignaturas.length; i++)
asignaturas += listaDeAsignaturas[i] + ' ';
return asignaturas;
}

public Libre(String n, int e, int c, String nivel, int horas) {


super(n,e,c,nivel);
nroHorasDiarias = horas;
pedirAsignaturas();
}
}

Ejemplo de clase abstracta -8-

public class Presencial extends Alumno {


private double matriculaCurso;
private double plusPorConvocatoria;
private int noConvocatoria;

public double pagoMensual() {


return
(matriculaCurso+plusPorConvocatoria*noConvocatoria)/12;
}

public String getAsignaturas(){


return “todas las del curso “ + curso;
}

8
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 4 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejemplo de clase abstracta -9-

public Presencial(String n, int e, int c, String nivel,


double mc, double pc, int nc) {
super(n,e,c,nivel);
matriculaCurso=mc;
plusPorConvocatoria=pc;
noConvocatoria=nc;
}
}

Ejemplo de clase abstracta - 10 -

// Métodos que generan enlace dinámico


void mostrarAsignaturas(Alumno v[]) {
for (int i=0; i<v.length; i++)
System.out.println(v[i].getAsignaturas()); // enlace dinámico
}

double totalPagos(Alumno v[]) {


double t=0;
for (int i=0; i<v.length; i++)
t += v[i].pagoMensual(); // enlace dinámico
return t;
}

10
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 5 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Interfaces - 11 -

• Podría suceder que los objetos de varias clases compartan la capacidad de ejecutar un cierto
conjunto de operaciones.
• Y dependiendo de la clase de objeto, cada operación se realice de diferente manera.
• Ejemplo:
• Clases: Circulo, Elipse, Triangulo, ....
• Todas esas clases incluyen los métodos: área, perimetro, cambiarEscala, etc.
• Podríamos definir una interfaz común que agrupe todos los métodos comunes (como métodos
abstractos).
• Y luego definir varias clases de modo que implementen una misma interfaz.

11

Ejemplo de Interface - 12 -

public interface Figura {


public double area();
public double perimetro();
}

12
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 6 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejemplo de Interface - 13 -

public class Cuadrado implements Figura {


private double lado;
public Cuadrado(double lado) {
this.lado = lado;
}
public double area() {
return lado*lado;
}
public double perimetro() {
return 4*lado;
}
}

13

Ejemplo de Interface - 14 -

public class Circulo implements Figura {


private double radio;
private final double PI=3.1416;

public Circulo(double radio) {


this.radio = radio;
}
public double area() {
return PI*radio*radio;
}
public double perimetro() {
return 2*PI*radio;
}
}

14
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 7 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Interfaces - 15 -

• Se pueden declarar referencias a objetos que implementen una cierta interfaz.

double totalArea(Figura v[]) {


double t=0;
for (int i=0; i<v.length; i++)
t += v[i].area(); // enlace dinámico
return t;
}

15

Interfaces - 16 -

• Una interfaz puede incluir


también definiciones de
constantes aparte de métodos
abstractos.
• Una misma clase puede
implementar más de una
interfaz  Herencia múltiple de
interfaces

16
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 8 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Herencia entre Interfaces - 17 -

• Se pueden crear jerarquías de interfaces (con extends!!).

17

Herencia entre Interfaces - 18 -

public interface AdicionalPorEstudios {


public float POR_GRADO = 0.10f;
public float pagoAdicionalPorEstudios();
}

18
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 9 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Herencia entre Interfaces - 19 -

public interface AdicionalPorHijos {


public float POR_HIJO = 0.20f;
public float pagoAdicionalPorHijos();
}

19

Herencia entre Interfaces - 20 -

public interface Adicionales extends


AdicionalPorEstudios, AdicionalPorHijos {
public float pagoTotalAdicionales();
}

20
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 10 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejemplo de Herencia Múltiple - 21 -

La empresa XYZ requiere una aplicación informática para administrar los


datos de sus empleados. De cada empleado se conoce: número de DNI,
nombre, apellidos y fecha de ingreso.
Existen dos categorías de empleados: el empleado contratado y el
empleado a destajo. Los empleados contratados tienen un sueldo básico y
un porcentaje adicional en función al tiempo laborado: de 0 a 3 años: 5%;
de 4 a 7 años: 10%; de 8 a 15 años: 15% y más de 15 años: 20%
Los empleados a destajo tienen un número de clientes captados y un
monto por cliente captado. El empleado a destajo recibe el 20% del total
de montos captados de sus clientes.
A ambos tipos de empleados se les aplican descuentos por faltas o
tardanzas en función del valor de un sueldo básico (S/.930).
A los empleados contratados se les aplica el impuesto a los ingresos,
denominado Quinta Categoría, y equivalente al 8% de su salario bruto.

21

Ejemplo de Herencia Múltiple - 22 -

La aplicación debe proporcionar las siguientes funcionalidades:


1. Registrar a los empleados contratados.
2. Registrar a los empleados a destajo.
3. Registrar las tardanzas o faltas de ambos tipos de empleados.
4. Registrar las ventas realizadas por los empleados a destajo (consignando
fecha de la venta, nombre del cliente y el monto de ventas. Se debe
proporcionar el número de DNI del empleado para registrar al cliente).
5. Listar los datos de los empleados contratados, mostrando el monto de sueldo
neto a recibir.
6. Listar los datos de los empleados a destajo, mostrando el monto de sueldo a
recibir en función de sus ventas.
7. Mostrar los datos de los clientes de un empleado a destajo (se debe indicar el
número de DNI del empleado para mostrar la lista de sus clientes).

22
Curso: Programación Orientada a Objetos I Tema: Clases abstractas e interfaces.
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 11 -

También podría gustarte