Saltar al contenido principal

Envío de mensajes

El envío de mensajes que provoca la llamada a métodos en Java es un concepto central en la programación orientada a objetos. Este mecanismo es fundamental para la interacción entre objetos y para la implementación de comportamientos.

El envío de mensajes consiste en llamar a un método de un objeto, lo que significa que se le está pidiendo al objeto que realice una acción o que devuelva información.

En este ejemplo, la clase Coche enviará un mensaje al objeto Motor para que realice acciones como encenderse o apagarse. Este ejemplo ilustrará cómo los objetos pueden interactuar entre sí a través del envío de mensajes.

  1. Definir la clase Motor:

    Motor.java
    class Motor {
    private boolean encendido;

    public Motor() {
    this.encendido = false; // El motor comienza apagado
    }

    public void encender() {
    if (!encendido) {
    encendido = true;
    System.out.println("El motor está ahora encendido.");
    } else {
    System.out.println("El motor ya está encendido.");
    }
    }

    public void apagar() {
    if (encendido) {
    encendido = false;
    System.out.println("El motor está ahora apagado.");
    } else {
    System.out.println("El motor ya está apagado.");
    }
    }

    public boolean isEncendido() {
    return encendido;
    }
    }
  2. Definir la Clase Coche:

    Coche.java
    class Coche {
    private String marca;
    private String modelo;
    private Motor motor; // Composición: Coche tiene un Motor

    public Coche(String marca, String modelo) {
    this.marca = marca;
    this.modelo = modelo;
    this.motor = new Motor(); // Inicializa un nuevo motor
    }

    public void encenderMotor() {
    System.out.println("Intentando encender el motor del coche " + marca + " " + modelo);
    motor.encender(); // Envío de mensaje al motor para encender
    }

    public void apagarMotor() {
    System.out.println("Intentando apagar el motor del coche " + marca + " " + modelo);
    motor.apagar(); // Envío de mensaje al motor para apagar
    }

    public void estadoMotor() {
    if (motor.isEncendido()) {
    System.out.println("El motor del coche " + marca + " " + modelo + " está encendido.");
    } else {
    System.out.println("El motor del coche " + marca + " " + modelo + " está apagado.");
    }
    }
    }
  3. Usar las clases en el método main:

    EjemploCocheMotor.java
    public class EjemploCocheMotor {
    public static void main(String[] args) {
    Coche coche = new Coche("Ford", "Mustang");

    // Comprobar el estado del motor
    coche.estadoMotor();

    // Encender el motor
    coche.encenderMotor();

    // Comprobar de nuevo el estado del motor
    coche.estadoMotor();

    // Apagar el motor
    coche.apagarMotor();

    // Comprobar de nuevo el estado del motor
    coche.estadoMotor();
    }
    }
  • Definición de clases:
    • La clase Motor tiene métodos para encender y apagar el motor. Mantiene un atributo booleano (encendido) que indica si el motor está activo.
    • La clase Coche contiene un objeto Motor. Tiene métodos para encender y apagar el motor, así como para comprobar su estado.
  • Envío de mensajes:
    • La clase Coche llama al método encender() del objeto Motor cuando se invoca encenderMotor(). Esto representa el envío de mensajes donde Coche solicita que Motor realice la acción de encenderse.
    • De la misma manera, llama al método apagar() del motor cuando se invoca apagarMotor().
  • Interacción entre objetos:
    • El objeto Coche controla el comportamiento del objeto Motor a través de métodos, mostrando así cómo se puede establecer la interacción entre diferentes clases usando el envío de mensajes.