Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Polimorfismo: Sobreescribiendo el método toString

22/38
Recursos

Aportes 53

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

me llama la atención que no hay muchos comentarios en estos capitulos. estoy a 3 dias de que se termine mi suscripción anual y este es uno de los cursos ques eleccion para terminar y he visto muy pocos comentarios en el hilo.

Me gustaron muchos todos tus otros cursos Anahí (y)

<h1>Polimorfismo</h1>

Cabe aclarar que en POO tenemos 3 clases de polimorfismo de las cuales ya hemos revisado 2 tipos:

  • Sobrecarga: Podemos escribir un método con el mismo nombre varias veces cambiando los parámetros que recibe ya sea en cantidad o en tipos, ademas podemos retornar otro tipo de dato.
public int suma (int num1, int num2) {
    return num1 + num2;
}
public String suma (String text1, String text2) {
    return num1 + " " + num2;
}

  • Sobreescritura: Podemos escribir un método de la clase padre y cambiar su contenido y asi realizar comportamiento mas especifico:
<!-- Clase Padre User -->
public String toString () {
    return name + " " + email;
}

<!-- Clase Hija Patient -->
public String toString () {
    return super.toString() + " " + blood + " " + weight;
}
  • Ligadura Dinámica: Podemos ejemplificar a las clases hijas pero tratarlas como su clase padre, puede ser util por ejemplo si queremos un arreglo que contenga objetos tipo User pero que implícitamente también va a contener doctores y pacientes:
User doctor = new Doctor ("Cristian", "[email protected]");
User paciente = new Patient ("Carlos", "[email protected]");

Me pareció fácil, el toString digamos que es un método implícito que nos muestra información por defecto sobre la clase, método, objeto, lo que hicimos fue modificar esta función y con este obtener información seleccionada por nosotros y no la de por defecto.

que bien explicas anahi, deberias dictar mas y mas cursos

Aca les dejo un video de un canal de programacion que explica el polimorfismo y mas temas de POO de manera entretenida y con juegos conocidos para que sea mas facil entender:
https://www.youtube.com/watch?v=bblFTvuk4pY

Cada vez es más complicado y confuso jaja

El avaiableAppointment.toString traerá el ArrayList (colección) con la estructura del método toString que se encuentra en la clase estática anidada(la clase AvaiableAppointment).

He llegado hasta acá y el curso me ha parecido buenisimo, he aprendido mas que en 3 meses de clases en mi universidad, la única recomendación para los maestros sería explicar estos conceptos con programas individuales y no estar borrando código de otras clases anteriores ya que se pierde ese conocimiento.

no dejaste nada en la descripcion

despues de todo POO no es tan complicado pero si implica practicar

Les comparto este repositorio que sirve de guía para el examen final, pues contiene las preguntas que se encuentran en el examen, la justificación y el video del curso donde se habla sobre eso. Espero y les sea de utilidad 😄.
Platzi-Test

Tengo entendido que el polimorfismo es la capacidad que tiene una entidad (objeto) dentro de un sistema, para responder a mensajes morfológicamente identidos. Eso lo podemos ver en el método toString de java, sin importar que tipo de objeto sea, cuando se le da un mensaje a la entidad (objeto) de que responda al mensaje toString, este responderá sin importar que.

Anncode nos dice que es la capacidad de sobreescribir comportamientos, más bien es la capacidad de las entidades del sistema, para interpretar y responder mensajes sin importar que contexto se tenga …

Poli si es de múltiple, pero Morfo no es forma, Morfo es de Morfología que es (no la forma) si no la composición de los organismos. No es muchas formas, si no muchas composiciones…

📌 El polimorfismo nos permite sobrescribir un método, otorgándole comportamientos diferentes.

Además de conocer cómo funciona el polimorfismo, también aprendemos a como establecer la estructura de texto por medio de los saltos de línea. Muchas gracias por la clase instructora Anahí.

Me encanta, cada vez me queda más claro muchos conceptos

Excelente explicación del ToString()

\ = alt +92

Este es uno de los conceptos que mas se me complicaba poder explicar de manera simple pero la explicación del final 10/10

Les comparto mis apuntes de esta clase.


Polimorfismo = muchas formas

Se entiende super bien lo que es el polimorfismo, muy buenos ejemplos explicativos.

está genial el polimorfismo

Buen detalle dar la explicacion de polimorfismo al final de la clase, de entrada la palabra asusta y no es el concepto mas facil de entender

Buena clases (y). A seguir con la ruta

No nos dejaste las diferentes expresiones que dices en el minuto 2:10 Anahí 😦
Nos has fallado a muchos jaja
Saludos, excelente didáctica

Yo sigo viendo el curso, es una maravilla la explicación de POO voy en el video No. 22 jajaja no voy a desertar “i promisse”

Me costó, pero en estas tres clases dedicadas al polimorfismo por fin entendí en esencia y en teoría todo lo que implica

Infinitas posibilidades al utilizar el polimorfismo.

Se que no es un aporte, pero Anahí el en video menciona que en la descripción va a dejar todos los anti-diagonales, pero no los deja. lol

Polimorfismo:
Posibilidad de sobrescribir un método y asignarles comportamientos diferentes.

Super 😃

Buenisimo el curso, me sirvio muchisimo para reforzar mis bases.

Super!!!

Genial

Excelente clase:)

Polimorfismo: Posibilidad de sobrescribir un método con comportamientos diferentes. ```

muy buena la clase

Intellij Idea no me deja tener dos métodos toString en la clase Doctor.java; pero veo que a Ann si!

El método toString() en Java, como su propio nombre indica, se utiliza para convertir a String (es decir, a una cadena de texto) cualquier objeto Java

Todo gran poder, conlleva una gran responsabilidad. El polimorfismo nos ayuda a ahorrarnos mucho código y adaptar cada método a la necesidad de un objeto, pero debemos ser sabios y saber cuándo es útil y cuando es solo agregar capas de abstracción a nuestro código.

Muchas gracias Anahí por ser tan buena explicando :’)!

En java cuando se ejecuta un

System.out.println()

él método toString se llama implícitamente.
Lo que me lleva a deducir que todo en Java hereda de la clase Object.

toString Poderoso

  • sobrescribe el comportamiento de la clase padre añadiendo nuevo comportamiento y trayendo codigo de la clase papu reutilizándolo (DRY)
    además de utilizar toString() para convertir un objeto (implicito) a una cadena

[User.java]

public class User {
    @Override
    public String toString() {
        return "User: "+name+ ", Email: "+email+
                "\nAddress: "+address+". Phone: "+phoneNumber;
    }
}

[Doctor.java]

//toString Poderoso
public class Doctor extends User {
    @Override
    public String toString() {
        return super.toString() + "\nDoctor" +
                "speciality= '" + speciality + '\'' +
                ", available= \n" + availableAppointments.toString() ;
    }

    public static class  AvailableAppointment{
        @Override
        public String toString() {
            return "AvailableAppointments Date: " +date+" Time: "+getTime()+"\n";
        }
    }
}

[Output]

Clase 22 - Polimorfismo: Sobre-escribiendo el método toString

Para los que les apetezca tomar la clase en Eclipse iré subiendo mi código; hay pequeñas diferencias con Intellij, por no decir ninguna, pero con Eclipse se puede trabajar igual de bien. NOTA: Solo subiré la jerarquía y lo que haya sido modificado, tendrán los archivos no modificados en las clases anteriores.

Project Hierarchy


File: Doctor.java; Method: toString()

@Override
	public String toString() {
		return super.toString() + "Specialty: " + specialty + "\nAvailable: " + availableAppointment.toString();
	}


File: Doctor.java; Nested Class: AvailableAppointment; Method: toString()

@Override
	public String toString() {
		return "Available Appointments: \nDate: " + date + "\nTime: " + time;
	}


File: Main.java; Method: main

public static void main(String[] args) {
		
		Doctor myDoctor = new Doctor("Anahí Salgado", "[email protected]", "Pediatría");
		myDoctor.addAvailableAppointment(new Date(), "4pm");
		myDoctor.addAvailableAppointment(new Date(), "6pm");
		myDoctor.addAvailableAppointment(new Date(), "8pm");
		
		System.out.println(myDoctor);
		
		Patient patient = new Patient("Alejandra", "[email protected]");
		
		System.out.println(patient);
	}

Poli=muchas - Morfimos=formas
Polimorfimos: Dar muchas formas de comportamiento a un mismo método.

User.java

package com.germanfica;

public class User {
    private static int lastId = 0;
    private int id;
    private String name;
    private String email;
    private String address;
    private String phoneNumber;

    User(String name, String email) {
        lastId++;
        this.id = lastId;
        this.name = name;
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    public String getAddress() {
        return address;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {

        if(phoneNumber.length() > 8) {
            System.err.println("The phone number must be a maximum of 8 digits.");
        }else if(phoneNumber.length() == 8) {
            this.phoneNumber = phoneNumber;
        }
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", address='" + address + '\'' +
                ", phoneNumber='" + phoneNumber + '\'' +
                '}';
    }
}

Doctor.java

package com.germanfica;

import java.util.ArrayList;
import java.util.Date;

public class Doctor extends User {
    private String speciality;

    Doctor(String name, String email, String speciality) {
        super(name, email);
        this.speciality = speciality;
    }

    ArrayList<AvailableAppointment> availableAppointments = new ArrayList<AvailableAppointment>();
    public void addAvailableAppointment(Date date, String time) {
        availableAppointments.add(new AvailableAppointment(date, time));
    }

    public ArrayList<AvailableAppointment> getAvailableAppointments() {
        return availableAppointments;
    }

    public static class AvailableAppointment{
        private int id;
        private Date date;
        private String time;

        // Available Appointment
        public AvailableAppointment(Date date, String time) {
            this.date = date;
            this.time = time;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public Date getDate() {
            return date;
        }

        public void setDate(Date date) {
            this.date = date;
        }

        public String getTime() {
            return time;
        }

        public void setTime(String time) {
            this.time = time;
        }

        @Override
        public String toString() {
            return "{" +
                    "id=" + id +
                    ", date='" + date + '\'' +
                    ", time='" + time + '\'' +
                    '}';
        }
    }

    @Override
    public String toString() {
        return super.toString().substring(0, super.toString().length()-1) +
                ", speciality='" + speciality + '\'' +
                ", availableAppointments=" + availableAppointments +
                '}';
    }
}

Patient.java

package com.germanfica;

public class Patient extends User {
    private String birthday;
    private double weight;
    private double height;
    private String blood;

    Patient(String name, String email) {
        super(name,email);
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public String getWeight() {
        return weight + " Kg";
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public String getHeight() {
        return height + " m";
    }

    @Override
    public String toString() {
        return super.toString().substring(0, super.toString().length()-1) +
                ", birthday='" + birthday + '\'' +
                ", weight='" + getWeight() + '\'' +
                ", height='" + getHeight() + '\'' +
                ", blood='" + blood + '\'' +
                '}';
    }
}
<h4>Polimorfismo</h4>

Posibilidad de sobreescribir un método con comportamientos diferentes.

Gracias al polimorfismo podemos sobreescribir los métodos de las clases padre para personalizarlo según la clase que use el método.

Genial