Académique Documents
Professionnel Documents
Culture Documents
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
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
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.
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.
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.
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
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.
}
7
2- Sobrecarga:
import java.text.*;
}
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.
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.
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.
}
}
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;
import javax.swing.*;
import java.text.*;
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.
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