SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
HERENCIA CON LA CLASE OBJECT
La herencia es una forma de reutilización de software en la que se crea una nueva clase al absorber los
miembros de una existente, y se mejoran con nuevas capacidades, o con modificaciones en las capacidades
ya existentes. Con la herencia, los programadores ahorran tiempo durante el desarrollo, al basar las nuevas
clases en el software existente, probado y depurado, además de alta calidad. Esto también aumenta la
probabilidad de que un sistema se implemente y mantenga con efectividad.
Al crear una clase, en vez de declarar miembros completamente nuevos, el programador puede designar que
la nueva clase herede los miembros de una existente. La cual se conoce como superclase, y la clase nueva
como subclase. Cada subclase puede convertirse en la superclase de futuras subclases.
Una subclase puede agregar sus propios campos y métodos. Por lo tanto, una subclase es más específica
que su superclase y representa a un grupo más especializado de objetos. La subclase exhibe los
comportamientos de su superclase y puede modificarlos, de modo que operen en forma apropiada para la
subclase. Es por ello que a la herencia se le conoce algunas veces como especialización.
La superclase directa es la superclase a partir de la cual la subclase hereda en forma explícita. Una
superclase indirecta es cualquier clase arriba de la superclase directa en la jerarquía de clases, que define las
relaciones de herencia entre las clases. En Java, la jerarquía de clases empieza con la clase Object a partir de
la cual se extienden (o “heredan”) todas las clases en Java, ya sea en forma directa o indirecta. Es importante
aclarar que Java solo soporta la herencia simple. A continuación, se muestran los métodos de la clase Object:
	
Método Descripción
clone Este método protected, que no recibe argumentos y devuelve una
referencia Object, realiza una copia del objeto en el que se llama. La
implementación predeterminada de este método realiza algo que se
conoce como copia superficial: los valores de las variables de instancia
en un objeto se copian a otro objeto del mismo tipo. Para los tipos por
referencia, sólo se copian las referencias.
equals Este método compara la igualdad entre dos objetos; devuelve trué si
son iguales y false en caso contrario. El método recibe cualquier objeto
Object como argumento. Cuando debe compararse la igualdad entre
objetos de una clase en particular, la clase debe sobrescribir el método
equals para comparar el contenido de los dos objetos.
finalize El recolector de basura llama a este método protected para realizar las
tareas de preparación para la terminación en un objeto, justo antes de
que el recolector de basura reclame la memoria de esté.
getClass Todo objeto en Java conoce su tipo en tiempo de ejecución. El método
getClass devuelve un objeto de la clase Class, el cual contiene
información acerca del tipo del objeto, como el nombre de su clase
(devuelto por el método getName de Class).
hashCode Los códigos de hash son valores int útiles para almacenar y obtener
información en alta velocidad y en una estructura que se conoce como
tabla de hash.
wait, notify, notifyAll Los métodos notify, notifyAll y las tres versiones sobrecargadas de wait
están relacionados con la tecnología multihilo.
toString Este método devuelve una representación String de un objeto. La
implementación predeterminada de este método devuelve el nombre
del paquete y el nombre de la clase del objeto, seguidos por una
Lenguaje de
programación
Técnica profesional en desarrollo de software
Profesor: Andrés Herrera R.
Laboratorio
Herencia
Nombre:_________________________________________________________________________
2
representación hexadecimal del valor devuelto por el método
hashCode del objeto.
	
	
PRÁCTICA 1
En la practica 1 intente recrear el ejemplo visto en clase para ello deberá crear un proyecto nuevo y crear una
clase de java llamada ejemploHerencia, deberá crear una clase Persona con los atributos: Nombre, apellido,
teléfono, identificaion y como método caminar y hablar. Una clase Profesor con los atributos: Salarios y notas
y como método Enseniar y calificar, este ultimo método debe recibir como parámetro una nota enviada desde
el main y retornar la nota. la clase Estudiante deberá contener los atributos materias de tipo arreglo y un
método aprender. Todos los métodos deberán imprimir por consola o mostrar un mensaje con su respectiva
funcionalidad del método.
una vez creadas las clases, deberá realizar una instancia nueva de Profesor y Estudiante, recuerde que para
poder hacer uso de los atributos de dichas clase debe heredar de la clase persona con extends y tener en
cuenta los modificadores de acceso (private, public, protected, default).
	
	
	
PRÁCTICA 2
Desarrolle el proyecto Practica-Object siguiendo los siguientes pasos. Recuerde que debe documentar cada
@todo el código programado.
1- Cree un proyecto Java de nombre <<Practica-Object>>.
2- Cree un paquete con el nombre <<com.EAM.>>
3- Cree un paquete con el nombre <<com.EAM.vo>>. En los paquetes vo se deben agregar todos los objetos simples.
4- Cree en el paquete vo un objeto de nombre Persona que tenga como atributos de clase: (int) id, (String) nombre, (int) edad
y (String) profesión. Además programe el método constructor de objeto usando todos sus atributos.
Se declara el atributo id con tipo int por objetivos del ejemplo.
5- Programe el los métodos getter y setter de todos los atributos de persona.
6- Cree en el paquete <<com.EAM>> una clase de nombre Aplicación e implemente el método <<main>> en ella.
7- Agregue en el <<main>> el siguiente código (recuerde tomar en cuenta el orden de los parámetros del métodos constructor
programado en el punto cuatro):
Persona persona1 = new Persona(12, "Roger", 22, "Futbolista");
Persona persona2 = persona1;
System.out.println(persona1.equals(persona2));
¿Qué resultado debería mostrarse? Ejecute la aplicación y verifique su funcionamiento.
¿Tuvo el resultado esperado? ¿Cuál es la causa del resultado obtenido?
8- Ahora agregue el siguiente código al final del del <<main>> programado en el punto siete:
3
//Se modifica el id de la persona dos
persona2.setId(23);
//Se muestra por consola el id de la persona 1
System.out.println(persona1.getId());
¿Qué resultado debería mostrarse? Ejecute la aplicación y verifique su funcionamiento.
¿Tuvo el resultado esperado? ¿Cuál es la causa del resultado obtenido?
9- Como se ha podido notar en los dos puntos anteriores, en dos variables diferentes se puede almacenar una misma
instancia, por lo cual, si se modifica uno de los atributos de una de las variables, la otra tendrá la misma modificación. En
ocasiones puede ser beneficioso este comportamiento, pero en otros casos no. Para hacer una copia de los valores de los
atributos sin mantener la misma instancia se debe sobrescribir en el objeto Persona el método clone de la siguiente forma:
@Override
protected Object clone() {
return new Persona(id, nombre, edad, profesion);
}
	
Sobre escriba el método <<clone>> en la clase persona.
10- Remplace el código agregado al final del método <<main>> por el siguiente:
Persona persona1 = new Persona(12, "Roger", 22, "Futbolista");
Persona persona2 = persona1.clone();
//Se modifica el id de la persona dos
persona2.setId(23);
//Se muestra por consola el id de la persona 1
System.out.println(persona1.getId());
¿Qué resultado debería mostrarse? Ejecute la aplicación y verifique su funcionamiento. ¿Tuvo el resultado
esperado? ¿Qué causa el resultado obtenido?
11- Cuando se hace uso del método clone se realiza una copia superficial del objeto, por lo cual no se copia la instancia.
Ahora realice una reflexión respecto al siguiente código. Si se tienen dos variables tipo Personas con los mismo datos y los
desea agregar a una lista, ¿Debe ser considerado como la misma persona?
Agregue el siguiente código en el método <<main>>:
Persona persona1 = new Persona(12, "Roger", 22, "Futbolista");
Persona persona2 = new Persona(12, "Roger", 22, "Futbolista");
System.out.println(persona1.equals(persona2));
Si son la misma persona, ¿qué debería mostrar la impresión por consola?
Ejecute la aplicación y verifique su funcionamiento.
4
12- Cuando se usa el método <<equals>> por defecto de la clase Object se realiza una comparación de espacios de memoria,
sin importar si tienen o no la misma información. Para usar de forma correcta el método <<equals>> se debe sobrescribir
de la siguiente forma:
@Override
public boolean equals(Object obj) {
if( obj instanceof Persona && ((Persona) obj).getId() == id){
return true;
}
return false;
}
Ejecute la aplicación y verifique su funcionamiento.
13- Cuando se sobrescribe el método equals es importante también hacerlo con el <<hashCode>> (en el caso que se deseen
usar los objetos con colecciones de tipo Hash). Las colecciones de tipo Hash buscan los objetos contenido por su valor
<<hashCode>> y luego comparan con el método equals. Complemente el código agregado anteriormente en el main con lo
siguiente:
System.out.println(persona1.hashCode());
System.out.println(persona2.hashCode());
Ejecute la aplicación y verifique su funcionamiento.
14- Como se pudo notar en el punto anterior las dos instancias tienen hashCode diferente, y no debería ser así, ya que
manejan la misma información (por lo cual se considera que es la misma persona). Sobrescriba el método hashCode de la
siguiente forma:
@Override
public int hashCode() {
return 97*id;
}
Ejecute la aplicación y verifique su funcionamiento.
15- Por ultimo programe el método toString de la clase Persona.
BIBLIOGRAFÍA
Deitel, P. J. & Deitel, H. M. (2012). Como Programar en java. Novena edición. México: Prentice Hall.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadas
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Definición de clases en POO
Definición de clases en POODefinición de clases en POO
Definición de clases en POO
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Guia1 pii
Guia1 piiGuia1 pii
Guia1 pii
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Comandos Java
Comandos JavaComandos Java
Comandos Java
 
Programación en java
Programación en javaProgramación en java
Programación en java
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 java
 
Semana 2 Clases y Objetos en Java
Semana 2   Clases y Objetos en JavaSemana 2   Clases y Objetos en Java
Semana 2 Clases y Objetos en Java
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Cesar adrian barrios alarcon unidad 2
Cesar adrian barrios alarcon      unidad 2       Cesar adrian barrios alarcon      unidad 2
Cesar adrian barrios alarcon unidad 2
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.
 
Documento Margarita
Documento MargaritaDocumento Margarita
Documento Margarita
 
Comandos de Java
Comandos de JavaComandos de Java
Comandos de Java
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 

Similar a Lab herencia

PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1Rokr02
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Programación ii presentación tema 5
Programación ii presentación tema 5Programación ii presentación tema 5
Programación ii presentación tema 5Joel Mieses
 
Php orientado a_objetos
Php orientado a_objetosPhp orientado a_objetos
Php orientado a_objetosJose Ney Quil
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Javasantosisidrorivera
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetosAlejandro Canosa
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxssuser2e6b96
 
Poo Java
Poo JavaPoo Java
Poo Javaeccutpl
 
Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC lissette_torrealba
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfSantiagoValenzuela24
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con phpFer Nando
 

Similar a Lab herencia (20)

Guia poo php
Guia poo phpGuia poo php
Guia poo php
 
Guia poo
Guia pooGuia poo
Guia poo
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Lp2docclases
Lp2docclasesLp2docclases
Lp2docclases
 
Guia poo
Guia pooGuia poo
Guia poo
 
Programación ii presentación tema 5
Programación ii presentación tema 5Programación ii presentación tema 5
Programación ii presentación tema 5
 
Php orientado a_objetos
Php orientado a_objetosPhp orientado a_objetos
Php orientado a_objetos
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Java
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetos
 
Datos previos
Datos previosDatos previos
Datos previos
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
 
Poo Java
Poo JavaPoo Java
Poo Java
 
Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC
 
Unidad II_1.pptx
Unidad II_1.pptxUnidad II_1.pptx
Unidad II_1.pptx
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
03 Oop
03   Oop03   Oop
03 Oop
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 

Más de Andres Herrera Rodriguez (19)

Lab archivos
Lab archivosLab archivos
Lab archivos
 
Lab excepciones propias
Lab excepciones propiasLab excepciones propias
Lab excepciones propias
 
unidad 5 excepciones propias
unidad 5 excepciones propiasunidad 5 excepciones propias
unidad 5 excepciones propias
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Laboratorio clase abstract
Laboratorio clase abstractLaboratorio clase abstract
Laboratorio clase abstract
 
3. unidad 4 polimorfismo
3. unidad 4 polimorfismo3. unidad 4 polimorfismo
3. unidad 4 polimorfismo
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Laboratorio de polimorfismo
Laboratorio de  polimorfismoLaboratorio de  polimorfismo
Laboratorio de polimorfismo
 
GuiaFTP
GuiaFTPGuiaFTP
GuiaFTP
 
Guia mysql
Guia mysqlGuia mysql
Guia mysql
 
Lenguaje de programacion unidad 3 arreglos de objetos
Lenguaje de programacion unidad 3 arreglos de objetosLenguaje de programacion unidad 3 arreglos de objetos
Lenguaje de programacion unidad 3 arreglos de objetos
 
Lenguaje de programacion laboratorio arreglos
Lenguaje de programacion laboratorio arreglosLenguaje de programacion laboratorio arreglos
Lenguaje de programacion laboratorio arreglos
 
Formularios HTML
Formularios HTMLFormularios HTML
Formularios HTML
 
Botones HTML
Botones HTMLBotones HTML
Botones HTML
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetos
 
Lenguaje de programacion unidad 1 UML
Lenguaje de programacion unidad 1 UMLLenguaje de programacion unidad 1 UML
Lenguaje de programacion unidad 1 UML
 
programación WEB Unidad 1 html
programación WEB Unidad 1 htmlprogramación WEB Unidad 1 html
programación WEB Unidad 1 html
 
Lectura y ejemplos clases y objetos
Lectura y ejemplos clases y objetosLectura y ejemplos clases y objetos
Lectura y ejemplos clases y objetos
 

Último

Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
Cuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdfCuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdfBrandonsanchezdoming
 

Último (20)

Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
Cuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdfCuadernillo de las sílabas trabadas.pdf
Cuadernillo de las sílabas trabadas.pdf
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 

Lab herencia

  • 1. HERENCIA CON LA CLASE OBJECT La herencia es una forma de reutilización de software en la que se crea una nueva clase al absorber los miembros de una existente, y se mejoran con nuevas capacidades, o con modificaciones en las capacidades ya existentes. Con la herencia, los programadores ahorran tiempo durante el desarrollo, al basar las nuevas clases en el software existente, probado y depurado, además de alta calidad. Esto también aumenta la probabilidad de que un sistema se implemente y mantenga con efectividad. Al crear una clase, en vez de declarar miembros completamente nuevos, el programador puede designar que la nueva clase herede los miembros de una existente. La cual se conoce como superclase, y la clase nueva como subclase. Cada subclase puede convertirse en la superclase de futuras subclases. Una subclase puede agregar sus propios campos y métodos. Por lo tanto, una subclase es más específica que su superclase y representa a un grupo más especializado de objetos. La subclase exhibe los comportamientos de su superclase y puede modificarlos, de modo que operen en forma apropiada para la subclase. Es por ello que a la herencia se le conoce algunas veces como especialización. La superclase directa es la superclase a partir de la cual la subclase hereda en forma explícita. Una superclase indirecta es cualquier clase arriba de la superclase directa en la jerarquía de clases, que define las relaciones de herencia entre las clases. En Java, la jerarquía de clases empieza con la clase Object a partir de la cual se extienden (o “heredan”) todas las clases en Java, ya sea en forma directa o indirecta. Es importante aclarar que Java solo soporta la herencia simple. A continuación, se muestran los métodos de la clase Object: Método Descripción clone Este método protected, que no recibe argumentos y devuelve una referencia Object, realiza una copia del objeto en el que se llama. La implementación predeterminada de este método realiza algo que se conoce como copia superficial: los valores de las variables de instancia en un objeto se copian a otro objeto del mismo tipo. Para los tipos por referencia, sólo se copian las referencias. equals Este método compara la igualdad entre dos objetos; devuelve trué si son iguales y false en caso contrario. El método recibe cualquier objeto Object como argumento. Cuando debe compararse la igualdad entre objetos de una clase en particular, la clase debe sobrescribir el método equals para comparar el contenido de los dos objetos. finalize El recolector de basura llama a este método protected para realizar las tareas de preparación para la terminación en un objeto, justo antes de que el recolector de basura reclame la memoria de esté. getClass Todo objeto en Java conoce su tipo en tiempo de ejecución. El método getClass devuelve un objeto de la clase Class, el cual contiene información acerca del tipo del objeto, como el nombre de su clase (devuelto por el método getName de Class). hashCode Los códigos de hash son valores int útiles para almacenar y obtener información en alta velocidad y en una estructura que se conoce como tabla de hash. wait, notify, notifyAll Los métodos notify, notifyAll y las tres versiones sobrecargadas de wait están relacionados con la tecnología multihilo. toString Este método devuelve una representación String de un objeto. La implementación predeterminada de este método devuelve el nombre del paquete y el nombre de la clase del objeto, seguidos por una Lenguaje de programación Técnica profesional en desarrollo de software Profesor: Andrés Herrera R. Laboratorio Herencia Nombre:_________________________________________________________________________
  • 2. 2 representación hexadecimal del valor devuelto por el método hashCode del objeto. PRÁCTICA 1 En la practica 1 intente recrear el ejemplo visto en clase para ello deberá crear un proyecto nuevo y crear una clase de java llamada ejemploHerencia, deberá crear una clase Persona con los atributos: Nombre, apellido, teléfono, identificaion y como método caminar y hablar. Una clase Profesor con los atributos: Salarios y notas y como método Enseniar y calificar, este ultimo método debe recibir como parámetro una nota enviada desde el main y retornar la nota. la clase Estudiante deberá contener los atributos materias de tipo arreglo y un método aprender. Todos los métodos deberán imprimir por consola o mostrar un mensaje con su respectiva funcionalidad del método. una vez creadas las clases, deberá realizar una instancia nueva de Profesor y Estudiante, recuerde que para poder hacer uso de los atributos de dichas clase debe heredar de la clase persona con extends y tener en cuenta los modificadores de acceso (private, public, protected, default). PRÁCTICA 2 Desarrolle el proyecto Practica-Object siguiendo los siguientes pasos. Recuerde que debe documentar cada @todo el código programado. 1- Cree un proyecto Java de nombre <<Practica-Object>>. 2- Cree un paquete con el nombre <<com.EAM.>> 3- Cree un paquete con el nombre <<com.EAM.vo>>. En los paquetes vo se deben agregar todos los objetos simples. 4- Cree en el paquete vo un objeto de nombre Persona que tenga como atributos de clase: (int) id, (String) nombre, (int) edad y (String) profesión. Además programe el método constructor de objeto usando todos sus atributos. Se declara el atributo id con tipo int por objetivos del ejemplo. 5- Programe el los métodos getter y setter de todos los atributos de persona. 6- Cree en el paquete <<com.EAM>> una clase de nombre Aplicación e implemente el método <<main>> en ella. 7- Agregue en el <<main>> el siguiente código (recuerde tomar en cuenta el orden de los parámetros del métodos constructor programado en el punto cuatro): Persona persona1 = new Persona(12, "Roger", 22, "Futbolista"); Persona persona2 = persona1; System.out.println(persona1.equals(persona2)); ¿Qué resultado debería mostrarse? Ejecute la aplicación y verifique su funcionamiento. ¿Tuvo el resultado esperado? ¿Cuál es la causa del resultado obtenido? 8- Ahora agregue el siguiente código al final del del <<main>> programado en el punto siete:
  • 3. 3 //Se modifica el id de la persona dos persona2.setId(23); //Se muestra por consola el id de la persona 1 System.out.println(persona1.getId()); ¿Qué resultado debería mostrarse? Ejecute la aplicación y verifique su funcionamiento. ¿Tuvo el resultado esperado? ¿Cuál es la causa del resultado obtenido? 9- Como se ha podido notar en los dos puntos anteriores, en dos variables diferentes se puede almacenar una misma instancia, por lo cual, si se modifica uno de los atributos de una de las variables, la otra tendrá la misma modificación. En ocasiones puede ser beneficioso este comportamiento, pero en otros casos no. Para hacer una copia de los valores de los atributos sin mantener la misma instancia se debe sobrescribir en el objeto Persona el método clone de la siguiente forma: @Override protected Object clone() { return new Persona(id, nombre, edad, profesion); } Sobre escriba el método <<clone>> en la clase persona. 10- Remplace el código agregado al final del método <<main>> por el siguiente: Persona persona1 = new Persona(12, "Roger", 22, "Futbolista"); Persona persona2 = persona1.clone(); //Se modifica el id de la persona dos persona2.setId(23); //Se muestra por consola el id de la persona 1 System.out.println(persona1.getId()); ¿Qué resultado debería mostrarse? Ejecute la aplicación y verifique su funcionamiento. ¿Tuvo el resultado esperado? ¿Qué causa el resultado obtenido? 11- Cuando se hace uso del método clone se realiza una copia superficial del objeto, por lo cual no se copia la instancia. Ahora realice una reflexión respecto al siguiente código. Si se tienen dos variables tipo Personas con los mismo datos y los desea agregar a una lista, ¿Debe ser considerado como la misma persona? Agregue el siguiente código en el método <<main>>: Persona persona1 = new Persona(12, "Roger", 22, "Futbolista"); Persona persona2 = new Persona(12, "Roger", 22, "Futbolista"); System.out.println(persona1.equals(persona2)); Si son la misma persona, ¿qué debería mostrar la impresión por consola? Ejecute la aplicación y verifique su funcionamiento.
  • 4. 4 12- Cuando se usa el método <<equals>> por defecto de la clase Object se realiza una comparación de espacios de memoria, sin importar si tienen o no la misma información. Para usar de forma correcta el método <<equals>> se debe sobrescribir de la siguiente forma: @Override public boolean equals(Object obj) { if( obj instanceof Persona && ((Persona) obj).getId() == id){ return true; } return false; } Ejecute la aplicación y verifique su funcionamiento. 13- Cuando se sobrescribe el método equals es importante también hacerlo con el <<hashCode>> (en el caso que se deseen usar los objetos con colecciones de tipo Hash). Las colecciones de tipo Hash buscan los objetos contenido por su valor <<hashCode>> y luego comparan con el método equals. Complemente el código agregado anteriormente en el main con lo siguiente: System.out.println(persona1.hashCode()); System.out.println(persona2.hashCode()); Ejecute la aplicación y verifique su funcionamiento. 14- Como se pudo notar en el punto anterior las dos instancias tienen hashCode diferente, y no debería ser así, ya que manejan la misma información (por lo cual se considera que es la misma persona). Sobrescriba el método hashCode de la siguiente forma: @Override public int hashCode() { return 97*id; } Ejecute la aplicación y verifique su funcionamiento. 15- Por ultimo programe el método toString de la clase Persona. BIBLIOGRAFÍA Deitel, P. J. & Deitel, H. M. (2012). Como Programar en java. Novena edición. México: Prentice Hall.