Sei sulla pagina 1di 24

UNIVERSIDAD DEL CAUCA – FIET

Universidad del Cauca DEPARTAMENTO DE SISTEMAS

INFORMATICA III
PROGRAMA
DE INGENIERIA ELECTRONICA
ING. DANIEL EDUARDO PAZ PERAFÁN
ING. WILSON LIBARDO PANTOJA
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Generalización/Especialización
Relación entre un elemento general (superclase o padre) y otro más específico (subclase o
hijo).

• Sirve para hacer clasificaciones detalladas.

En función de cómo se interprete la relación:

Especialización
Va desde los elementos más generales hacia los más específicos.

Generalización
Va desde los elementos más específicos hacia los más generales.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Herencia
• Mediante la herencia podemos definir una clase a partir de otra ya existente.
• La clase nueva se llama clase derivada o subclase y la clase existente se llama clase base o
superclase.
• En UML la herencia se representa con una flecha apuntando desde la clase derivada a la clase
base.

La clase derivada hereda los


atributos y métodos de la clase
base.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Herencia
Ejemplo de herencia:
A partir de una clase Persona que tiene como atributos el id y el nombre, podemos
obtener una clase derivada Alumno. Un Alumno es una Persona que tendrá como
atributos id, nombre y curso.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Jerarquía de clases
• Una clase derivada a su vez puede ser clase base en un nuevo proceso de derivación,
formando de esta manera una Jerarquía de Clases.
• Las clases más generales se sitúan en lo más alto de la jerarquía. Cuánto más arriba en la
jerarquía, menor nivel de detalle.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Herencia
Ejemplos:
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

¿Como encontrar relaciones de herencia?


UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

¿Como encontrar relaciones de herencia?

La herencia (generalización/especialización) representa la relación “es un” o “es una”


entre clases, por ejemplo:

• Un profesor es un empleado, Un obrero es un empleado

• Un carro es un vehículo, Una bicicleta es un vehículo

• Un mamífero es un animal, Un ave es un animal

• Un triangulo es una figura geométrica. Un cuadrado es una figura geométrica.


UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Tipos de herencia
Herencia simple: Una clase base puede serlo de tantas clases derivadas como se desee: Un
solo padre, varios hijos.

Una sola clase base

Varias clases derivadas


UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Tipos de herencia
Herencia múltiple: Una clase derivada puede heredar de varias clases.

Varias clases base

Java no soporta la herencia múltiple. Una


clase derivada solo puede tener una
clase base.
Una clase derivada
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Objetivo de la herencia

• Extender la funcionalidad de la clase base: en la clase derivada se añaden


automáticamente los atributos y métodos nuevos.
• Todas las clases derivadas pueden utilizar el código de la clase base sin
tener que volver a definirlo en cada una de ellas.

• Especializar el comportamiento de la clase base: en la clase derivada se


pueden modificar (sobrescribir, override) los métodos heredados para
adaptarlos a sus necesidades.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio herencia
El ejemplo que proponemos es un caso en el que vamos a simular el comportamiento que
tendrían los diferentes integrantes de la selección española de futbol; tanto los Futbolistas
como el cuerpo técnico (Entrenadores, Masajistas, etc…)

Ejemplo consultado de: https://jarroba.com/herencia-en-la-programacion-orientada-a-objetos-


ejemplo-en-java/
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio herencia
Como se puede observar, vemos que en las tres clases tenemos atributos y métodos que
son iguales ya que los tres tienen los atributos id, Nombre, Apellidos y Edad; y los tres
tienen los métodos de Viajar y Concentrarse:
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio herencia
Creamos una nueva clase con los atributos y métodos comunes
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Clase abstracta

 Son clases abstractas aquellas clases base (superclases) de las que no se


permite la creación de objetos.

 En una clase abstracta es posible definir métodos abstractos, los cuales


se caracterizan por el hecho de que no pueden ser implementados en
la clase base.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Clase abstracta

Invocando al
constructor de la
clase padre

Implementando el método abstracto


UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Clase abstracta
public class Triangulo extends Figura
{
private double base;
private double altura;

public Triangulo(String color, double base, double altura)


{
super(color); Invocando al
constructor de la
this.base = base;
clase padre
this.altura = altura;
}
public double calcularArea() { Implementando el método abstracto
return (base * altura) / 2; }
}
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio
Atributo protegido
La clase abstracta se coloca en cursiva

El método abstracto se coloca en cursiva


UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Recordemos los modificadores de


acceso

•Public: podemos acceder a las propiedades y métodos desde cualquier


lugar, desde la clase actual, clases que heredan de la clase actual y desde
otras clases.

•Protected: se puede acceder al atributo o método desde la clase que lo


define y desde cualquier otra que herede de esta clase.

•Private: los atributos o métodos solo son accesibles desde la clase que
los define.
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio

Invocando al constructor de la clase padre

Implementando el método abstracto

Es posible acceder al atributo nombres


directamente porque tiene el modificador de acceso
protected
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio

¿Que sucede si intentamos crear un objeto de la clase


persona?

¿Que sucede si en la clase Estudiante no implementamos el


método mostrarDatos()?

¿Fue necesario en la clase estudiante implementar el método


calcularEdad()?
UNIVERSIDAD DEL CAUCA – FIET
Universidad del Cauca DEPARTAMENTO DE SISTEMAS

Ejercicio

 Implemente las clases Docente y Administrativo

 Implemente el método mostrarDatos() deacuerdo a los datos del docente y administrativo

 Cree un objeto de la clase Docente y pruebe los métodos calcularEdad() y mostrarDatos()

 Cree un objeto de la clase Administrativo y pruebe los métodos calcularEdad() y mostrarDatos()

Potrebbero piacerti anche