jueves, 19 de septiembre de 2024

■ Java ► Clase Persona

Para este ejercicio tomaré como ejemplo la clase "Persona", que consiste en crear una clase con los atributos básicos que tiene una persona, para no hacer tanto código solo usaré tres atributos: nombre, teléfono y dirección, en caso de requerir más la forma es la misma.


■ Estructura de la clase de nuestro objeto

public <nombre_de_la_clase {
    // Se declaran los atributos
    <tipo> <nombreVariable>;

    // Se crea el método constructor con las variables que recibe como parámetro
    public <nombre_de_la_clase>(<tipo> <nombreVariable>) {
        // Se asigna cada parámetro a su respectiva variable
        this.<variable_del_objeto> = <variable_parámetro>;
    }

    // Se declaran los setters, uno por cada variable y con su parámetro
    public void set<nombre>(<tipo> <nombreVariable>) {
        this.<variable_del_objeto> = <variable_parámetro>;
    }

    // Se declaran los getters del mismo tipo que la variable
    public <tipo> get<nombre>() {
        return this.<variable_del_objeto>;
    }
}

En el caso de los métodos set y get no es necesario que sus nombres inicien con "set" o "get", eso solo es por conveniencia.

Una vez creada la clase del objeto ya se puede usar en la clase principal, ejemplo:

public Persona {
    // código de la clase
}

public class Main {
    public static void main (String[] args) {
        // Se crea un objeto del tipo "Persona" y se le pasan sus parámetros
        Persona persona1 = new Persona(<parámetros>);

        // Llamada de sus métodos
        persona1.<nombre_método>(<parámetros si es que lleva>);
    }
}

La explicación a detalle de la creación de la clase, sus atributos y métodos se puede consultar aquí: Clase, objeto y métodos.



■ Ejemplo clase Persona

import java.util.Scanner;

class Persona {
    String nombre;
    String telefono;
    String direccion;
    public Persona(String _nombre, String _telefono, String _direccion) {
        this.nombre = _nombre;
        this.telefono = _telefono;
        this.direccion = _direccion;
    }
    // Setters
    public void setNombre(String _nombre) {
        this.nombre = _nombre;
    }
    public void setTelefono(String _telefono) {
        this.telefono = _telefono;
    }
    public void setDireccion(String _direccion) {
        this.direccion = _direccion;
    }
    // Getters
    public String getNombre(){
        return this.nombre;
    }
    public String getTelefono() {
        return this.telefono;
    }
    public String getDireccion() {
        return this.direccion;
    }
}

public class Main {
    public static void main (String args[]) {
        Scanner sc = new Scanner(System.in);
        String nuevoNombre, nuevoTelefono, nuevaDireccion;
        // Se crea el objeto con sus valores
        Persona persona = new Persona(
            "John Smith",
            "(555) 123 456 7890",
            "Main Street"
        );
        // Se muestran los datos del objeto usando sus GETTERS
        System.out.println(); // Se hace un salto de línea
        System.out.println("Datos de la persona");
        System.out.println("Nombre: \t" + persona.getNombre());
        System.out.println("Teléfono: \t" + persona.getTelefono());
        System.out.println("Dirección: \t" + persona.getDireccion());
        System.out.println(); // Se hace un salto de línea
        // Se solicitan nuevos valores para el objeto
        System.out.println("Editar datos de la persona");
        System.out.println("Ingresa el nuevo nombre");
        nuevoNombre = sc.nextLine();
        System.out.println("Ingresa el nuevo teléfono");
        nuevoTelefono = sc.nextLine();
        System.out.println("Ingresa la nueva dirección");
        nuevaDireccion = sc.nextLine();
        System.out.println(); // Se hace un salto de línea
        // Se asignan los nuevos valores mediante los SETTERS
        persona.setNombre(nuevoNombre);
        persona.setTelefono(nuevoTelefono);
        persona.setDireccion(nuevaDireccion);
        // Se vuelven a mostrar los datos mediante los GETTERS
        System.out.println("Datos de la persona actualizados");
        System.out.println("Nombre: " + persona.getNombre());
        System.out.println("Teléfono: " + persona.getTelefono());
        System.out.println("Dirección: " + persona.getDireccion());
        System.out.println(); // Se hace un salto de línea
    }
}

Explicación ¿Qué hace el código anterior?

Se crea un objeto "persona" de la clase "Persona", aunque se llamen igual Java es sencible a mayúsculas y minúsculas, por lo que para Java "persona" con minúscula es distinto que "Persona" con mayúscula, en este caso "Persona" es la clase y "persona" es el objeto creado de dicha clase.

Al crearse el objeto recibe como parámetros valores para cada uno de sus atributos, estos son: nombre, teléfono y dirección.

Usando los métodos getters se accede a cada atributo del objeto y se muestran en pantalla los valores asignados al objeto en su creación.

Luego se piden nuevos valores para esos atributos y se asignan mediante el uso de los métodos setters.

Al final se vuelven a mostrar en pantalla los valores del objeto mediante los getters y ahora se muestran los nuevos valores que fueron previamente asignados.


■ Clase base y herencia

La clase Persona sirve como base cuando necesitamos manejar en un programa diferentes tipos de personas, por ejemplo si manejamos empleados y clientes, estos además de tener atributos en común como nombre, teléfono y dirección, pero también pueden tener otros atibutos no comunes entre sí.

Por ejemplo el Empleado podría tener atributos como "departamento" y "turno" mismos que un Cliente no tiene, pero éste último podría tener "idCliente" o "limiteCrédito". Los atributos particulares de cada una de estas entidades (empleado, cliente), es decir, para las subclases, se declararían en sus propias clases y los atributos en común  se heredarían de la clase Persona. Esto en un diagrama se vería como se muestra en la siguiente imagen.



No hay comentarios:

Publicar un comentario