Academia.eduAcademia.edu

GUIA HERENCIA

La herencia es uno de los conceptos más importantes en la programación orientada a objetos junto con la encapsulación y polimorfismo. Básicamente permite reutilizar el código porque una sub-clase (clase hija o derivada) puede usar fácilmente las propiedades y métodos definidos en la super clase (clase padre).

GUIA DE TRABAJO CURSO: LENGUAJE DE PROGRAMACION I TEMA: HERENCIA La herencia es uno de los conceptos más importantes en la programación orientada a objetos junto con la encapsulación y polimorfismo. Básicamente permite reutilizar el código porque una sub-clase (clase hija o derivada) puede usar fácilmente las propiedades y métodos definidos en la super clase (clase padre). El objetivo de esta práctica es exponer el concepto de herencia en Java. Se mostrará cómo crear una clase Java extendiendo otra clase. Ejercicio 1: Compilar y ejecutar un programa Java que usa clases que están relacionadas a través de la herencia En este ejercicio se va a escribir un programa en el que varias clases, que están relacionadas mediante la herencia se crean y usan. Primero se crea una clase Person. Después se crean subclases de la clase Person, clase Student y clase Teacher. También se crea una subclase de la clase Student, que se llama clase InternationalStudent class. (1.1) Compilar y ejecutar un programa Java que usa clases relacionadas 1. Crear un nuevo proyecto NetBeans    Seleccionar File->New Project (Ctrl+Shift+N). El diálogo New Project aparece. En la sección Choose Project seleccionar Java en la sección Categories y Java Application en la sección Projects. Pulsar en Next.    En la sección Name and Location, del campo Project Name, escribir MyPeopleExample; y en Createl Main Class reemplazar por Main después del punto el segundo nombre del proyecto MyPeopleExample.(Figura-1.10 ) Click Finish. Figura-1.10: Create a new project  Observar que aparece el nodo del proyecto MyPeopleExample se crea en la sección Projects del IDE NetBeans y que se muestra Main.java en la ventana del editor del IDE. 2. Escribir Person.java.     Hacer click con el botón derecho en el proyecto MyPeopleExample y seleccionar New->Java Class. Observar que aparece el cuadro de diálogo New Java Class con la sección Name and Location. En el campo Class Name escribir Person. o En el campo Package, escribir mypeopleexample o seleccionar mypeopleexample a partir del menú desplegable . (Figura-1.11 ) Click en Finish. Figura-1.11: Creación de Person.java   Observar que se genera y muestra en la ventana del editor Person.java. Modificar Person.java como se muestra en Código-1.12. Notar que la clase Person tiene dos campos, name y address, y los métodos getter y setter para ellos. package mypeopleexample; public class Person { private String name; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } Código-1.12: Person.java 3. Escribir Student.java. Notar que la clase Student es una subclase de la clase Person.        Hacer click con el botón derecho en el proyecto MyPeopleExample y seleccionar New->Java Class. Observar que aparece el cuadro de diálogo New Java Class con la sección Name and Location. En el campo Class Name escribir Student. En el campo Package, escribir mypeopleexample o seleccionar mypeopleexample a partir del menú desplegable . (Figura-1.11 ) Click en Finish. Observar que se genera y muestra en la ventana del editor Student.java. Modificar Student.java como se muestra en Código-1.13. Notar que la clase Student tiene dos campos, school y grade, y métodos getter y setter para ellos. package mypeopleexample; public class Student extends Person { private String school; private double grade; public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public double getGrade() { return grade; } public void setGrade(double grade) { this.grade = grade; } } Código-1.13: Student.java 4. Escribir InternationalStudent.java. Notar que la clase InternationalStudent es una subclase de la clase Student.      Hacer click con el botón derecho en el proyecto MyPeopleExample y seleccionar New->Java Class. Observar que aparece el cuadro de diálogo New Java Class con la sección Name and Location. En el campo Class Name escribir InternationalStudent. En el campo Package, escribir mypeopleexample o seleccionar mypeopleexample a partir del menú desplegable . Click en Finish.   Observar que se genera y muestra en la ventana del editor InternationalStudent.java. Modificar InternationalStudent.java como se muestra en Código1.14. Notar que la clase InternationalStudent tiene un campo, country, y métodos getter y setter. package mypeopleexample; public class InternationalStudent extends Student { private String country; public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } } Código-1.14: InternationalStudent.java 5. Escribir Teacher.java. Notar que la clase Teacher es una subclase de la clase Person.        Hacer click con el botón derecho en el proyecto MyPeopleExample y seleccionar New->Java Class. Observar que aparece el cuadro de diálogo New Java Class con la sección Name and Location. En el campo Class Name escribir Teacher. En el campo Package, escribir mypeopleexample o seleccionar mypeopleexample a partir del menú desplegable . Click Finish. Observar que se genera y muestra en la ventana del editor Teacher.java. Modificar Teacher.java como se muestra en Código-1.16. Notar que la clase Teacher tiene un campo, subject, y métodos getter y setter para su gestión. package mypeopleexample; public class Teacher extends Person { private String subject; public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } } Código-1.16: Teacher.java 6. Modificar Main.java.  Modificar the Main.java como se muestra en Código-1.17. El cambio es para crear objetos de las clases Person, Student, InternationalStudent, y Teacher. package mypeopleexample; public class Main { public static void main(String[] args) { // Crear instancias de objetos e invocar métodos. // Nota que puedes usar métodos definidos en una clase parent // padre para instancias de objetos de la clase hija. Person person1 = new Person(); person1.setName("Tom Jones"); Student student1 = new Student(); student1.setName("CCR"); student1.setSchool("Lexington High"); InternationalStudent internationalStudent1 = new InternationalStudent(); internationalStudent1.setName("Bill Clinton"); internationalStudent1.setSchool("Lexington High"); internationalStudent1.setCountry("Korea"); Teacher teacher1 = new Teacher(); teacher1.setName("Beatles"); teacher1.setSubject("History"); // Mostrar nombres de instancias de objetos usando el metodo getName() // definido en la clase Person. System.out.println("Mostrar nombres de instancias de objetos..."); System.out.println(" person1.getName() = " + person1.getName()); System.out.println(" student1.getName() = " + student1.getName()); System.out.println(" internationalStudent1.getName() = " + internationalStudent1.getName()); System.out.println(" teacher1.getName() = " + teacher1.getName()); } } Código-1.17: Main.java 7. Compilar y ejecutar el programa.   Hacer click con el botón derecho en el proyecto MyPeopleExample y seleccionar Run. Observar el resultado en la ventana Output de NetBeans. (Figura-1.18 ) Mostrar nombres de instancias de objetos... person1.getName() = Tom Jones student1.getName() = CCR internationalStudent1.getName() = Bill Clinton teacher1.getName() = Beatles Figura-1.18: Resultado de la ejecución de la aplicación (1.3) Ver la jerarquía de la herencia a través del método getSuperclass() de la clase Class En este paso, se va a mostrar la jerarquía de clases a través del uso de un método de la API - getSuperclass() de una clase Class class - en el programa. 1. Modificar Main.java como se muestra en Código-1.30. El fragmento de código a añadir está en azul. package mypeopleexample; public class Main { public static void main(String[] args) { // Crear instancias de objetos e invocar métodos. // Nota que puedes usar métodos definido en una clase padre // para instancias de objetos de la clase hija. Person person1 = new Person(); person1.setName("Tom Jones"); Student student1 = new Student(); student1.setName("CCR"); student1.setSchool("Lexington High"); InternationalStudent internationalStudent1 = new InternationalStudent(); internationalStudent1.setName("Bill Clinton"); internationalStudent1.setSchool("Lexington High"); internationalStudent1.setCountry("Korea"); Teacher teacher1 = new Teacher(); teacher1.setName("Beatles"); teacher1.setSubject("History"); // Mostrar nombres de instancias de objetos usando el metodo the getName() // definido en la clase Person. System.out.println("Mostrar nombres de instancias de objetos..."); System.out.println(" person1.getName() = " + person1.getName()); System.out.println(" student1.getName() = " + student1.getName()); System.out.println(" internationalStudent1.getName() = " + internationalStudent1.getName()); System.out.println(" teacher1.getName() = " + teacher1.getName()); // Mostrar jerarquía de clases de la clase InternationalStudent // a través del metodo getSuperclass() of Class class. Class class1 = internationalStudent1.getClass(); System.out.println("Mostrar la clase jerarquica de la clase InternationalStudent..."); while (class1.getSuperclass() != null){ String child = class1.getName(); String parent = class1.getSuperclass().getName(); System.out.println("clase " + child + " es una clase hija de " + parent); class1 = class1.getSuperclass(); } } } Código-1.30: Main.java modificado 2. Compilar y ejecutar el programa.   Hacer click con el botón derecho en el proyecto MyPeopleExample y seleccionar Run. Observar el resultado en la ventana Output de NetBeans. (Figura-1.31 ) Mostrar nombre de todas las instancias de objetos... person1.getName() = Tom Jones student1.getName() = CCR internationalStudent1.getName() = Bill Clinton teacher1.getName() = Beatles Mostrar jerarquía de clases de la clase InternationalStudent... mypeopleexample.InternationalStudent class is a child class of mypeopleexample.Student mypeopleexample.Student class is a child class of mypeopleexample.Person mypeopleexample.Person class is a child class of java.lang.Object Figura-1.31: Resultado de la ejecución de la aplicación Resumen En este ejercicio se ha visto la creación de objetos que están relacionados a través de la herencia.