Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONCEPTO DE HERENCIA:
Definición de Herencia:
Existen dos clases de herencia, simple y múltiple. La Herencia Simple determina un único padre
para todas aquellas subclases que se crean a partir de la clase padre. La Herencia Múltiple
determina uno o más padres para todas aquellas subclases que se crean.
Ventajas de la Herencia:
1. Evita que el programador reescriba o duplique el código cunado implementa una aplicación.
2. Permite la reutilización del código, en este sentido las subclases pueden utilizar como propio
todo el código implementado en la superclase.
Para la definir que una subclase o clase hija hereda de otra superclase, se utiliza la palabra clave
extends, por ejemplo:
En la definición anterior, se indica que la clase Docente heredara métodos y atributos de la clase
Persona. Igualmente la clase DocenteCatedra heredara de la clase Docente.
Superclase (Docente):
public Docente(){
super(); //La clase Docente hereda de la superclase Persona, e invoca a su constructor.
titulo = "";
correoInstitucional = "";
}
public Docente(int id, String nom, String ape, int ed, String perfil, String correo){
super(id, nom, ape, ed);
titulo = perfil;
correoInstitucional = correo;
}
Subclase (DocenteCatedra):
public DocenteCatedra(){
super(); //Docente cátedra invoca al constructor de su superclase clase Docente.
numeroHoras = 0;
categoria = "";
}
public DocenteCatedra(int id, String nom, String ape, int ed, String perfil, String correo, int nh, String cat){
//Docente cátedra invoca al constructor de su superclase clase Docente.
super(id, nom, ape, ed, perfil, correo);
numeroHoras = nh;
categoria = cat;
}
Implementación de clases y métodos abstractos (Java)
Una clase se define como abstracta cuando se declaran dentro de ella métodos abstractos. Los
métodos abstractos no tienen cuerpo y solo pueden existir dentro de las clases abstractas. En este
sentido las clases abstractas sirven para contener los métodos abstractos y a diferencia de una clase
normal, no se podrán crear objetos a partir de una clase abstracta [2].
Como se mencionó los métodos abstractos no tienen cuerpo o implementación en la clase abstracta
en donde se declaran; y deben ser sobreescritos para ser implementados en las subclases que
hereden de la clase abstracta donde se declararon. En la declaración de métodos y clases abstractas
se utiliza la palabra clave abstract, que proviene del inglés resumen. Por ejemplo:
Ejercicio propuesto:
En la universidad hay dos modalidades de contratación para los docentes; los docentes de planta o
tiempo completo y los catedráticos que trabajan por hora cátedra. El sueldo de los profesores de
planta se calcula teniendo en cuenta la cantidad de puntos salariales que se les asignan anualmente,
el valor de cada punto es de 10.000 pesos. Si el cargo del docente de planta es el de un directivo
(Jefe de departamento, Decano o Coordinador), tendrá una bonificación de 400.000 pesos sobre el
sueldo básico.
Para el caso de los docentes catedráticos el sueldo mensual estará estipulado por el número de
horas cátedra asignadas durante todo el semestre (4 meses). Si el docente catedrático tiene una
categoría de auxiliar la hora se paga a 20.000 pesos, pero si su categoría es la de asistente la hora
se paga a 25.000 pesos. Si no tiene ninguna de estas categorías la hora se paga a 15.000 pesos. A
todos los profesores de la universidad se les realiza un descuento del 6% del sueldo, por concepto
de prestaciones sociales (salud y pensión).
Diseño de clases UML de la solución
Implementación de la clase Persona en el fichero Persona.java
//Implementación de los métodos modificadores para asignar los valores a cada atributo de la
//clase Persona.
public void setIdentificacion(int id){
identificacion = id;
}
public void setNombres(String nom){
nombres = nom;
}
public void setApellidos(String ape){
apellidos = ape;
}
public void setEdad(int e){
edad = e;
}
//Implementación de los métodos selectores para obtener el valor de los atributos de la clase.
public int getIdentificacion(){
return identificacion;
}
public String getNombres(){
return nombres;
}
public String getApellidos(){
return apellidos;
}
public int getEdad(){
return edad;
}
}
Implementación de la clase abstracta Docente en el fichero Docente.java
La clase Docente será una clase abstracta hija de la clase persona, en la cual se implementara el
método abstracto calcularSueldo().
//Se declara la clase abstracta Docente, indicando que es una clase extendida que hereda de la
//clase Persona, ya implementada. Por ser una clase abstracta se supone que se podrá declarar un
//método abstracto al interior de esta.
public abstract class Docente extends Persona{
//Se declaran los atributos o características propias de la clase Docente.
private String titulo;
private String correoInstitucional;
//Implementación de los métodos selectores para obtener el valor de los atributos de la clase.
public String getTitulo(){
return titulo;
}
public String getCorreoInstitucional(){
return correoInstitucional;
}
//Declaración del método abstracto calcularSueldo(), este método no tiene cuerpo y debe ser
//sobreescrito para ser implementado en las clases hijas que se creen de la clase Docente.
public abstract double calcularSueldo();
}
Implementación de la clase hija DocentePlanta en el fichero DocentePlanta.java
A su vez la clase DocentePlanta, es una clase hija de la clase Docente. En esta tendrá
implementación el método abstracto calcularSueldo(), declarado en la clase Docente.
La clase DocenteCatedra, es una clase hija de la clase Docente. En esta tendrá implementación el
método abstracto calcularSueldo(), declarado en la clase Docente.
//Se crea el método que permite capturar la información correspondiente a cualquier docente.
//Se pasa como parámetro un objeto de la clase Docente para enviar la información capturada
//a los respectivos métodos modificadores.
public static void capturarDatos(Docente doc){
int id = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite la identificación del Docente:"));
doc.setIdentificacion(id);
String nombre = JOptionPane.showInputDialog(null, "Digite Nombre del Docente:");
doc.setNombres(nombre);
String apellido = JOptionPane.showInputDialog(null, "Digite Apellido del Docente:");
doc.setApellidos(apellido);
int edad = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite la Edad del Docente:"));
doc.setEdad(edad);
String titulo = JOptionPane.showInputDialog(null, "Digite el Titulo del Docente:");
doc.setTitulo(titulo);
String correo = JOptionPane.showInputDialog(null, "Digite el Correo Institucional del Docente:");
doc.setCorreoInstitucional(correo);
}
1. Para el ejercicio propuesto anterior, almacenar en un vector de objetos, elementos de las clases
DocenteCatedra y DocentePlanta, posteriormente listar la información.
2. Diseñe una jerarquía de clases para los datos de un estudiante de una universidad,
correspondientes a número de matrícula, programa académico, nombres, apellidos, semestre.
Tenga en cuenta que existen tres tipos de estudiantes, además de los estudiantes comunes: los
egresados, los de modalidad a distancia y los de postgrado. En el caso de los egresados se debe
guardar su año de graduación y el cargo que actualmente desempeñan. Para los estudiantes a
distancia se almacenan cuántas materias está cursando. En el caso de los de postgrados, se
guarda el nombre del postgrado cursado y la universidad de la cual proviene.
tamano=numero_de_caracteres*3
tamano=cantidad_subdirectorios*2
BIBLIOGRAFÍA
[1] Rodríguez, Alex. (s.f.). Curso Aprender programación Java desde cero - Resumen de ventajas
de la herencia en Java. Recuperado de:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=673:res
umen-de-ventajas-de-la-herencia-en-java-avanzar-en-java-swing-gestion-de-errores-y-mas-
cu00698b&catid=68&Itemid=188
[2] Rodríguez, Alex. (s.f.). Curso Aprender programación Java desde cero - Clases y métodos
abstractos en Java. Recuperado de:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=668:cla
ses-y-metodos-abstractos-en-java-abstract-class-clases-del-api-ejemplos-codigo-y-ejercicios-
cu00695b&catid=68&Itemid=188