You are on page 1of 20

Universidad De Panamá

Centro Regional Universitario De Veraguas


Licenciatura En Informática Para La Gestión Educativa Y
Empresarial

Programación IV

Laboratorio #3
Jerarquía y Herencia

PROFESOR
Diego Santimateo

Estudiante

Mendoza, Maritza
6-708-600
Fecha de entrega
30/11/2006

1
Índice

Introducción.......................................................................................................................3
Webgrafía.......................................................................................................................4
Ejemplificación de los conceptos..................................................................................7
1- Herencia:...............................................................................................................7
2- Sobrecarga:............................................................................................................8
3- Polimorfismo:........................................................................................................9
4- Clase abstracta:....................................................................................................10
Aplicación ejecutable enfocada a la realidad..............................................................11
Código.........................................................................................................................12
Glosario...........................................................................................................................18
Conclusión.......................................................................................................................20

2
Introducción

El tema que se presenta en este trabajo, Jerarquía y Herencia, es lo suficientemente


interesante y considero que temas de esta calidad se deben investigar muy bien para
aclarar bien las dudas que se tengan. En esta investigación se presentan una serie de
fuentes de información con su comentario, es relevante mencionar que hay muchos
sitios en los que se puede encontrar este tipo de información, pero las que se presentan
aquí, fueron a mi concepto las mejores o mejor dicho las que cumplieron con mis
expectativas.
Cualquiera de estas referencias que visite, dejan notar la sencillez para definir los
conceptos, de manera que, para mi fue más sencillo comprenderlos, ya que no se usa un
lenguaje muy técnico.
Luego de esta previa investigación se presentan unos ejemplos sobre herencia, clase
abstracta, polimorfismo y sobrecarga, seguido de una breve explicación.
Para terminar se presenta también una aplicación enfocada a la realidad donde se
utilizan todos los conceptos antes mencionados.

3
Webgrafía

1)- Antonio Bel Puchol. Apuntes lenguaje java. Ultima actualización - 17-Junio-2001.
abelp@arrakis.es. Fecha de acceso[7/11/2006]. Disponible en Internet desde:
http://www.arrakis.es/~abelp/ApuntesJava/Herencia.htm.
Comentario: En esta pagina se presenta un contenido muy elemental para iniciarse en
java, en esta página se puede comprender el contenido fácilmente, de manera en que
captes lo más importante, si la visitas podrás observar como tienes un índice bien
elaborado, en que te inician diciéndote que es java, luego te explican un poco sobre
tipos de variables, métodos, clases, constructores etc, y lo más importante también se
habla sobre la herencia y las clases abstractas tema de mi preferencia ahora mismo, es
relevante mencionar que en esta página se dice que una herencia es una extensión de
otra, esto quiere decir que es igual que otra clase pero además tiene una característica
especial que la define o la hace ser un tanto diferente. También se definió que un
método abstracto es un método declarado en una clase para el cual esa clase no
proporciona la implementación (el código) y que una clase abstracta es una clase que
tiene al menos un método abstracto.

2)- M. Carmen Fernández Panadero, Julio Villena Román Jose María Rubio Manso
Jorge Ruiz Magaña. Herencia en Java. E-mail: secre@it.uc3m.es. Fecha de
acceso[7/11/2006].
Disponible en Internet desde:
http://www.it.uc3m.es/tsirda/practicas/P13/enunciado.html
Comentario: Esta es una página de la universidad Carlos III de Madrid, se encuentran
varios temas entre los que pude leer la herencia en Java, ellos muestran muy buenos
ejemplos con figuras que dejan ver como se hace la herencia, estos ejemplos son
bastante matemáticos pero se pueden entender, ellos muestran primero la figura y luego
un código.

3)- Agustín Froufe. Web sip. Tutorial de Java. 1996-1999. Ultima Actualización: lunes,
17 de Mayo de 1999. E-mail: froufe@arrakis.es. Fecha de acceso[8/11/2006].
Disponible en Internet desde:
http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/introduccion/indice.html.
Comentario: Cuenta con un buen índice donde encuentras desde que es java, una
introducción a este lenguaje, hablan también del JDK, mencionan aquí también que es
la OOP, presentan ejemplos sobre clases, objetos, subclases, superclases, this, subclases,
además de dar a conocer su concepto.

4)- Angel Franco García.Programación en lenguaje Java. Última actualización - Enero


de 2000. -Procedimientos Numéricos en Lenguaje Java: Diciembre de 2001.
Fecha de acceso[8/11/2006]:
Disponible en Internet:
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/herencia.htm
Comentario: Esta página es lo bastante completa, se puede leer en ella algo sobre
clases y objeto, la herencia y polimorfismo, aquí definen que herencia es la propiedad
que permite la creación de nuevas clases a partir de clases ya existentes, y que el
polimorfismo se implementa por medio de las funciones abstractas, en las clases
derivadas se declara y se define una función que tiene el mismo nombre, el mismo

4
número de parámetros y del mismo tipo que en la clase base, pero que da lugar a un
comportamiento distinto, específico de los objetos de la clase derivada.

5-) AgustÃn Froufe. Tutorial de Java. Ultima Actualización: 1 de Enero de 1997.


Fecha de acceso[10/11/2006]:
Disponible en Internet desde: http://www.cica.es/formacion/JavaTut/

Comentario: Esta página es muy buena, considero que es muy completa, tiene un
índice bastante extenso, en que tienes para escoger sobre que quieres leer, se da una
introducción al lenguaje java, hay aplicaciones, hablan desde los orígenes de java, crear
clases objetos, este autor escribió también conceptos sobre herencia, polimorfismo.
Escribe que la palabra clave extends se usa para generar una subclase de un objeto. Hay
muchas cosas muy interesantes que mencionar, este autor después de un concepto
coloca un código para así asegurarse de que halla una comprensión bastante completa.

6)- Daniel Rodríguez Herrera. Java en Castellano. 1999-2006.Fecha de


acceso[10/11/2006]. Disponible en Internet desde:
http://www.programacion.com/java/tutorial/intjava/9/#polimorfismo

Comentario: Esta página me gusto por los ejemplos que se presentan, son muy buenos,
esta página es muy completa hay definiciones sobre los conceptos, de herencia,
polimorfismo, etc, además de una breve explicación para cada ejemplo.

7)- Ing. Carlos Alberto Román Zamitiz. Facultad de Ingeniería, UNAM. Temas
especiales de computación. carlos@fi-b.unam.mx. Fecha de acceso[ 10/11/2006].
Disponible en Internet desde:
http://www.fi-b.unam.mx/pp/profesores/carlos/toc.html

Comentario: Esta página me pareció muy completa y considero que una de las mejores
en las que investigue, cuenta con dos índices generales, uno trata sobre el análisis y
diseño orientado a objetos con UML( tema muy interesante sobre el cual ya
investigamos en trabajos anteriores, pero considero que esta página es muy completa en
lo que se refiere a este tema ), también cuenta con otro índice donde trata sobre
programación orientada a objetos con java en cual se explican desde la definición de
muchos términos y algunos ejemplos.

8)- Miguel Ángel Manzanedo del Campo. Guía Rápida de aprendizaje del lenguaje
Java. Francisco José García Peñalvo. Versión 1.0, octubre 1998. Publicado por: Ignacio
Cruzado Nuño. icruzado@solaria.emp.ubu.es. Fecha de acceso[13/11/2006]. Disponible
desde:
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto.Oct98/2_Lengua/4_Herenc.htm

Comentario: Esta página fue elaborada en la universidad de Burgos por los estudiantes,
aquí en esta página se definen muchos conceptos, y también fueron colocados algunos
ejemplos para la mejor comprensión, de los temas que realmente me interesan, solo
trataron uno a fondo y este es la herencia, de los demás es decir polimorfismo,
sobrecarga etc, no encontré nada relevante.

5
9)- Manuel Abellanas. Caíptilo 2, El lenguaje Java. mabellanas@fi.upm.es. Fecha de
acceso[13/11/2006].
Disponible desde:http://www.dma.fi.upm.es/mabellanas/voronoi/java/java.htm#2.7

Comentario: Esta es una página se puede decir bastante buena, cuenta con definiciones
bastantes completas sobre los principios básicos de la programación orientada a objetos
es decir, encapsulado, herencia y polimorfismo, lo que no podrás encontrar en esta
página son ejemplos referentes a estos temas, pero tengo que mencionar que esta página
además de tratar sobre los temas antes mencionados, también este autor escribe sobre la
historia de java, sus inicios, las características de java, java y la orientación a objetos,
son temas son muy útiles.

10)- M.C. Bernabé Ortiz y Herbert . Paradigma de la orientación a objetos, Lenguaje


Java. Acosta Corona Jorge, Núñez Geraldo José Luis, Sández Bareño Sandra
Yadira.Diseño de la página web: Laura González Partida . 20 de Junio del 2001.
Fecha de acceso[13/11/2006]. Disponible desde:
http://www.itlp.edu.mx/posgrado/lengprog/java.html

Comentario: Esta es una página muy sencilla, pero a la vez muestra cierto contenido
bastante interesante, habla sobre herencia, polimorfismo, sobre encapsulamiento, hay
cierto ejemplos que tratan de explicar dichos conceptos.

6
Ejemplificación de los conceptos
Mam 凬 ero
-Especie
1- Herencia:
- Color

public class Herencia {


Gato
public static void main(String[] args) { - N 伹 ero_patas

Gato gat = new Gato(); Clase herencia, donde se crea


un objeto llamado gat de la
gat.mover(); clase Gato, y se llamado al m
} 騁 odo mover de la clase
} Gato.

import java.text.*;
import javax.swing.*; Clase Mam 凬 ero que contiene
dos atributos especie, que en este
class Mamifero { caso le asigne un valor, y color a
String especie= 波 ato� color="negro"; la que tambi 駭 se le asigno el
valor 渡 egro� esta clase tambi
public void mover() { 駭 contiene un m 騁 odo
System.out.println("Soy el mam 凬 ero jejeje"); llamado mover() el mismo se
} encarga de imprimir un mensaje.
}

class Gato extends Mamifero {


int numero_patas=4;
public void mover() {
System.out.println("jajaja soy el gato
jajajajaj");
System.out.println(""+especie); Como pueden observar la clase Gato
System.out.println(""+color); se deriva de Mam 凬 ero, es decir que
System.out.println(""+numero_patas); ella recibe los atributos con los que
} cuenta la clase mam 凬 ero, es decir
} que esta clase gato adem 疽 de su
atributo n 伹 ero _ patas tambi 駭 va
ha tener especie y color, y esta clase
cuenta con un m 騁 odo llamado
mover que se encargar�de imprimir
en pantalla las tres variables.

7
2- Sobrecarga:

import java.text.*;

public class Sumar {


Esta clase Sumar cuenta
con dos m 騁 odos p 炻
public static void main(String[] args) { licos llamados suma, en
float x = 1, y = 2; el main lo que se hace es
int v = 3,w = 5; llamar uno por uno a cada
System.out.println(suma(x,y)); m 騁 odo.
System.out.println(suma(v,w));

}
M 騁 odo llamado suma, el cual
public static float suma(float a, float b) { recibir�como par 疥 etros dos
System.out.println("sumar�dos n 伹 eros valores flotantes, indicar�un
flotantes"); mensaje que indica la operaci
return (a+b); que se est�realizando y luego
} retorna estos valores al main.

public static int suma(int a, int b) { Igualmente que anterior se


System.out.println("sumar�dos n 伹 eros enteros"); llama suma, pero su diferencia
return (a+b); radica en que los par 疥 etros
} que se reciben son diferentes en
este caso enteros.

8
La clase Profesi contiene el m 騁 odo main(), y
3- Polimorfismo: es aqu�es donde se crean los objetos de las clases
que existen, estas son Profesionales, arquitecto, m
import javax.swing.*; 馘 ico, tengo que mencionar que las clases
import java.text.*; arquitecto y m 馘 ico se derivan de la clase
Profesionales, es decir que esta le pasa o le hereda
public class Profesion { sus atributos, en este caso nombre. Aqu�en esta
clase tambi 駭 se llama al m 騁 odo trabajo que m
public static void main(String args[]) 疽 adelante lo ver 疣 en todas clases, como se
{ podr 疣 percatar aqu�se hace una asignaci de
Profesionales Profess = new Profesionales(); objetos, si bien pueden observar Profess es un
Arquitecto Arquic = new Arquitecto(); objeto de la clase Profesionales, lo mismo pasa
Medico Medic = new Medico(); con Arquic es un objeto de la clase Arquitecto y
as�mismo Medic es un objeto de la clase medico,
Profess.trabajo(); // trabaja una persona y luego por medio de el objeto Profess se llama al
Profess = Arquic; m 騁 odo trabajo ubicado en la clase profesionales,
Profess.trabajo(); // trabaja un arquitecto luego el objeto Arquic se asigna a el objeto
Profess = Medic; Profess y este vuelve a llamar al m 騁 odo trabajo,
Profess.trabajo(); // trabaja un medico pero este ya esta en la clase Arquitecto, y para
} terminar el objeto Medic es asignado a Profess y
} nuevamente Profess llama al m 騁 odo trabajo
pero en este momento este m 騁 odo esta en la
clase M 馘 ico, cada m 騁 odo imprime un
import javax.swing.*; mensaje.
import java.text.*;
Clase Profesionales, contiene un
class Profesionales{
atributo que es nombre, esta clase
private String nombre="empleado";
tambi 駭 cuenta con el m 騁 odo
public void trabajo(){
llamado trabajo. Esta es la clase base
System.out.println("yo trabajo");
o super, ella heredar�su atributo
}
ahora alas siguientes clases.
}
class Arquitecto extends Profesionales{ Clase Arquitecto se deriva
public void trabajo(){ de la clase Profesionales y
System.out.println("Yo trabajo de 8:00 a 4:00"); tambi 駭 cuenta con el m
} 騁 odo igualmente llamado
} trabajo, esto es importante
observar
class Medico extends Profesionales {
public void trabajo() { Clase M 馘 ico derivada
System.out.println("yo trabajo las 24 horas"); tambi 駭 de la clase
} profesionales, cuenta
} as�mismo con su m 騁
odo trabajo.

Es muy importante mencionar que en el polimorfismo, se da la utilizaci de los m 騁 odos con


nombres iguales y tambi 駭 se da a la vez la herencia o bien si deseas puedes llamarla jerarqu
僘 , despu 駸 de leer sobre estos conceptos puedo decir al igual que otros autores que jerarqu 僘
es lo mismo que la herencia.

9
4- Clase abstracta:

import javax.swing.*;
import java.text.*;

class Princi{
Clase Principal en la cual creo un objeto de la
public static void main(String args[]) clase Medico, y luego mediante este objeto se
{ llama al m 騁 odo imprimir.

Medico obj = new Medico();


obj.imprimir();

}
}

import javax.swing.*;
import java.text.*;
Esta es la clase abstracta llamada
abstract class Profesionales { Profesionales que contiene dentro de si un
m 騁 odo abstracto llamado imprimir.
String nombre;

public abstract void imprimir();

import javax.swing.*;
import java.text.*;

class Medico extends Profesionales { Clase Medico que se extiende


de profesionales y que
public void imprimir(){ contiene dentro de si un m 騁
odo llamado imprimir y que
System.out.println("Soy un medico muy profesional"); manda un mensaje.
}
}

10
Aplicación ejecutable enfocada a la realidad

11
Código

12
13
14
15
16
17
Glosario

1- Herencia: Es el mecanismo por el cual, se puede crear nuevas clases a partir de otra
ya existente, a la clase de la cual se crean las nuevas clases se le llama clase base y a las
que heredan se les llaman derivadas, las derivadas heredan los datos y funciones de la
clase base. La palabra clave extends se usa para generar una subclase. La herencia
permite compartir automáticamente métodos y datos entre clases, subclases y objetos.
En la herencia se puede reutilizar el código.
Existen dos tipos de herencia la simple y la múltiple, la simple indica que se pueden
definir varias clases de una clase base o inicial y la múltiple que se pueden definir varias
clases de dos o más clases iniciales.
En resumen la herencia es partir de las situaciones más generales e ir derivando hacia
las más particulares, creando categorías, de la misma forma en que nosotros pensamos y
actuamos.

2- Clase abstracta: Cuando una clase contiene un método abstracto tiene que
declararse abstracta. No obstante, no todos los métodos de una clase abstracta tienen
que ser abstractos. Las clases abstractas no pueden tener métodos privados, ni estáticos
(no se podrían implementar). Una clase abstracta tiene que derivarse obligatoriamente,
no se pueden crear objetos de una clase abstracta. Las clases abstractas solamente se
pueden usar como clases base para otras clases. Hay que mencionar que para crear una
clase o método abstracto se utiliza la palabra reservada abstract.

3- Sobrecarga: Esta se refiere a que pueden existir varios métodos dentro de una clase
que se llamen igual, siempre y cuando su lista de parámetros sea distinta. Java puede
detectar cual es el método que debe ejecutar mediante el número y tipo de argumentos.

4- Polimorfismo: La combinación de herencia y enlace dinámico se denomina


polimorfismo. El polimorfismo es, por tanto, la técnica que permite pasar un objeto de
una clase derivada a funciones que conocen el objeto solamente por su clase base.
El polimorfismo (una interfaz múltiples métodos) es uno de los pilares básicos
de la programación orientada a objetos. Java implementa el polimorfismo por medio de
la sobrecarga de métodos.
El polimorfismo es otra de las grandes característica de la POO. La palabra
polimorfismo deriva de poli (múltiples) y del término griego morfos (forma). Es decir,
múltiples formas.

5- Jerarquía: En esta estructura jerárquica, cada clase tiene sólo una clase padre. La
clase padre de cualquier clase es conocida como su superclase. La clase hija de una
superclase es llamada una subclase.

6- Interfaces: Una interface es una variante de una clase abstracta con la condición de
que todos sus métodos deben ser asbtractos. Si la interface va a tener atributos, éstos
deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan
como constantes por lo que, por convención, su nombre va en mayúsculas.

18
7- Método Abstracto: Un método abstracto es un método declarado en una clase para
el cual esa clase no proporciona el código. Un método abstracto debe estar en una clase
abstracta.

8- This: Esta palabra clave nos proporciona el poder acceder a variables de instancia de
una clase, es decir hace referencia a los miembros de la propia clase en el objeto actual.

9- Sub clases: Se puede decir que cuando se puede crear nuevas clases por herencia de
clases ya existentes, hay que recordar pues que para crear subclases se debe utilizar la
palabra reservada extends.

10- Super Clases: La super clase es aquella de la cual se puede heredar otras clases. Si
yo necesitará llamar al método padre dentro de una clase se puede hacer referencia al
método padre con la palabra reservada super.

11- Extends: Esta es una palabra reservada que se utiliza para crear una subclase, es
decir se deriva de la super clase mediante esta palabra reservada.

12- Encapsulamiento: Se dice que una clase esta totalmente encapsulada cuando todas
sus propiedades son privadas y solamente pueden ser cambiadas mediante métodos, es
decir es el empaquetamiento de las variables de un objeto con la protección de sus
métodos.

19
Conclusión

Este trabajo ha sido muy importante ya que esta investigación me enseño a investigar, a
buscar la información necesaria para así llegar a obtener los suficientes conocimientos y
así poder crear los diferentes ejemplos necesarios para comprender que clase abstracta,
polimorfismo, herencia y sobrecarga, considero que el elaborar estos ejemplos de cada
concepto afianza más mis conocimientos ya que sabes primero el concepto y luego
logras ver lo que en realidad hace el mismo, trabajos de esta calidad vale la pena
realizarlos, por que se obtienen muchos conocimientos.
Es importante mencionar que el uso del polimorfismo y de la herencia, sobrecarga son
muy eficientes, ya que al realizar estos ejemplos me sorprendía como una clase
heredaba a otra sub-clase sus atributos, y como esta podía utilizarlos sin dificultad, me
gusto ver como podía utilizar métodos llamados iguales en diferentes clases, la clase
abstracta me llamo la atención por que cuando leí su concepto, pensé que era asurdo
tener una clase abstracta, ya que ella posee solamente métodos abstractos, pero después
este mismo método lo utilice en otra clase que era una subclase y así este método
mandaba su respectivo mensaje.

20