Súper clases y subclases

Anuncio
Súper clases y subclases
En muchos casos, un objeto de una clase es un objeto de otra clase también.
Un rectángulo ciertamente es un cuadrilátero (Un cuadrilátero es un polígono
de cuatro lados). Así pues, podemos decir que la clase rectángulo hereda de la
clase cuadrilátero. En este contexto, la clase cuadrilátero es una súper clase y
la clase rectángulo es una subclase. Un rectángulo es un tipo específico de
cuadrilátero, pero no es correcto asegurar que un cuadrilátero es un rectángulo.
A continuación, se muestran algunos ejemplos sencillos de herencia.
Superclase
Estudiante
Figura
Préstamo
Empleado
Cuenta
Subclases
EstudianteGraduado
EstudianteDeLicenciatura
Círculo
Triágulo
Rectángulo
PréstamoParaAutomóvil
PréstamoParaMejorarCasa
PréstamoHipotecario
Profesor
Asistente
CuentaDeAhorros
CuentaCorriente
Dado que la herencia produce subclases con mas características que sus
superclases, los términos superclase y subclase pueden dar pie a confusiones.
Sin embargo, hay otra forma de considerar estos términos que es muy lógica.
Como cada objeto de una subclase es un objeto de una superclase, y dado que
la que una superclase puede tener muchas subclases, el conjunto de objetos
representado por una superclase normalmente es más grande que el conjunto
de objetos representado por cualquiera de las subclases de esa superclase.
Las relaciones de herencia forman estructuras jerárquicas similares a un árbol.
Una superclase existe en una relación jerárquica con sus subclases. Sin duda,
una clase puede existir sola, pero es cuando se emplea con el mecanismo de
herencia que se convierte ya sea en una superclase que proporciona atributos
y comportamientos a otras clases, o en una subclase que hereda dichos
atributos y comportamientos.
Desarrollemos una jerarquía de herencia sencilla. Una comunidad universitaria
típica comprende miles de personas que son miembros de la comunidad. Estas
personas consisten en empleados, estudiantes y exalumnos. Los empleados
son docentes o bien personar auxiliar. Los miembros docentes pueden ser
administradores (como el rector y los directores de departamentos) o
profesores. Esto produce la siguiente jerarquía de herencia.
Programación Orientada a Objetos I I
Profesor: Julio Cesar Meza Ramírez
Observe que la jerarquía de herencia podría contener muchas otras clases. Por
ejemplo pueden ser de postgrado o de licenciatura. Hay abundantes ejemplos
de jerarquías en el mundo real, pero nosotros no estamos acostumbrados a
categorizar el mundo real de esta forma, por lo que necesitamos ajustar
nuestra forma de pensar. De hecho, las personas dedicadas al campo de la
biología ya tienen cierta práctica con las jerarquías. Todo lo que estudiamos en
biología se agrupo en una jerarquía encabezada por los seres vivos, los cuales
pueden ser plantas o animales, y así sucesivamente.
Si queremos especificar que la clase Empleado se deriva ó hereda de la clase
MiembroDeLaComunidad, la clase Empleado podría definirse en Java como
sigue:
class Empleado extends MiembroDeLaComunidad { … }
Ejemplo:
A continuación se muestra la forma de programar una herencia entre
superclases y subclases.
Desarrollando las clases del árbol jerárquico:
Programación Orientada a Objetos I I
Profesor: Julio Cesar Meza Ramírez
Programamos la superclase: (CMiembro)
public class CMiembro {
String nombre;
int cedula;
int telefono;
public CMiembro() {
}
void crearMiembro(String nom, int ced, int tel){
nombre=nom;
cedula=ced;
telefono=tel;
}
}
Programación Orientada a Objetos I I
Profesor: Julio Cesar Meza Ramírez
Ahora programamos la subclase CDocente que hereda de la superclase
CMiembro.
public class CDocente extends CMiembro {
int escalafon;
int cod_docente;
public CDocente() {
}
void crearDocente(int esc, int cod){
escalafon=esc;
cod_docente=cod;
}
}
Seguimos con la subclase CProfesores que hereda de la subclase CDocente
que a su vez hereda de la superclase CMiembro.
public class CProfesores extends CDocente {
String materia;
int grupo;
String jornada;
public CProfesores() {
}
void crearProfesor(String mat, int grup, String jor){
materia=mat;
grupo=grup;
jornada=jor;
}
}
Programación Orientada a Objetos I I
Profesor: Julio Cesar Meza Ramírez
Después de crear todas las clases, procedemos a crear los objetos desde la
clase “main”.
public class Main {
public Main() {
}
public static void main(String[] args) {
//crear miembro
CMiembro objMiembro=new CMiembro();
objMiembro.crearMiembro("Maria", 4564, 4588);
System.out.println(""+objMiembro.nombre);
// crear docente
CDocente objDocente=new CDocente();
objDocente.crearMiembro("Carlos", 30298675, 3014567);
objDocente.crearDocente(10,567);
System.out.println(""+objDocente.nombre);
//crear profesor
CProfesores objProfesor=new CProfesores();
objProfesor.crearMiembro("Andres", 34556, 311603);
objProfesor.crearDocente(12, 568);
objProfesor.crearProfesor("Programación", 2, "Diurna");
System.out.print(""+objProfesor.nombre);
}
}
Taller en clase:
Según el árbol jerárquico descrito anteriormente, diseñar las clases restantes y
realizar su codificación.
Programación Orientada a Objetos I I
Profesor: Julio Cesar Meza Ramírez
Descargar