Clases de objetos 1: Persona

Para ir avanzando y entendiendo más los conceptos sobre la programación orientada a objetos, esta vez crearemos una clase llamada “Persona”, ésta clase deberá contener los siguientes atributos:

  • nombre
  • apellido paterno
  • apellido materno
  • sexo
  • edad
  • dirección

 

Se deberá crear con un constructor por defecto, un común y uno con copia, además de crear un método que muestre los datos de la persona y otro que diga si la persona es mayor o menor de edad.

 

Crear otra clase que se llame “Principal” que contenga el método main y crear 3 objetos de tipo “Personas”, mostrar sus datos y decir si es mayor o menor de edad.

Creando la clase "Persona"

Para crear la clase (link a crear clases) Persona primeramente se debe crear un paquete (link a crear oaquetes), es mi caso lo llamaré pqtObjetos.

package pqtObjetos;

public class Persona {

}

Nota: Es importante mencionar que las clases de objetos no llevan el método main.

 

Una vez creado el paquete y la clase Persona, iniciaremos declarando sus atributos, es muy común que los atributos se declaren como privados, ya que se utilizan para las operaciones de los métodos dentro de la misma clase, así que en este caso los atributos serán privados.

//Atributos
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private char sexo;
private int edad;
private String direccion;

 

Ahora creamos los diferentes constructores.

       //Constructor por defecto
        public Persona(){
                
        }
        //Constructor de copia
        public Persona(Persona persona){
                this.nombre=persona.nombre;
                this.apellidoPaterno=persona.apellidoPaterno;
                this.apellidoMaterno=persona.apellidoMaterno;
                this.sexo=persona.sexo;
                this.edad=persona.edad;
                this.direccion=persona.direccion;
        }
        
        //Constructor común
        public Persona(String nom, String app, String apm, char sexo, int edad, String dir){
                this.nombre=nom;
                this.apellidoPaterno=app;
                this.apellidoMaterno=apm;
                this.sexo=sexo;
                this.edad=edad;
                this.direccion=dir;
        }

 

Una vez creado los constructores, procedemos a crear los métodos, los métodos se deben crear como públicos o protegidos ya que deben ser accedidos desde la clase “Principal”.

       public void mayorEdad(int edad){
                if(edad>18)
                        System.out.println("Es mayor de edad");
                else
                        System.out.println("Es menor de edad");
        }
        
        public String mostrarDatos(Persona persona){
                String datos="Los datos son: \n";
                datos+=persona.nombre+"\n";
                datos+=persona.apellidoPaterno+"\n";
                datos+=persona.apellidoMaterno+"\n";
                datos+=persona.sexo+"\n";
                datos+=persona.edad+"\n";
                datos+=persona.direccion+"\n";
                return datos;
        }

 

El primer método se hizo sin retorno pasando como parámetro la edad, el segundo se hizo con retorno de un tipo String mandando todos los datos de la persona, terminamos de crear esta clase.

Creando la clase Principal

La clase principal sólo contendrá el método main.

package pqtObjetos;

public class Principal {

        public static void main(String[] args) {

        }
}

Si se observa está dentro del mismo paquete.

 

 

Llego la hora de crear nuestros objetos, como ya se ha mencionado se escribe el nombre de la clase, después el nombre del objeto, la palabra reservada new y al final el constructor por el cual se creará el objeto.

Persona persona1=new Persona("José Roberto", "Jiménez", "Hernández", 'H', 20, "Av. El aguacate #41");
Persona persona2=new Persona("Mayra", "Espinosa", "Sánchez", 'M', 17, "Fracc. La noche es larga #221");
Persona persona3=new Persona("Armando", "Ruiz", "López", 'H', 33, "Calle patitos feos #87");

Ya tenemos creados los tres objetos con sus respectivos datos, procedemos a ver sus datos con el método mostrarDatos(), y verificar si es mayor o menor de edad.

System.out.println(persona1.mostrarDatos(persona1));
persona1.mayorEdad(20);
System.out.println(persona2.mostrarDatos(persona2));
persona2.mayorEdad(17);
System.out.println(persona3.mostrarDatos(persona3));
persona3.mayorEdad(33);

Como se puede observar la llamada a un método se hace mediante un objeto, seguido de un punto y el nombre del método. En caso de llevar argumentos se deben de agregar, caso contrario marcará error de compilación.

 

Otra cosa importante de observar es que, el método mostrarDatos() que nos retorna un String lo podemos llamar directamente dentro de un System.out.println(); y este imprime el resultado que nos retorna el método.

 

En el caso del método mayorEdad se ha tenido que escribir directamente la edad de la persona puesto que no podemos sacar directamente la edad de la persona ya que sus atributos son privados y no tenemos acceso desde la clase principal. Para ello utilizamos los métodos getters y setter que se verán en el próximo tutorial.

 

Nota: Se puede practicar creando personas con los diferentes constructores, imprimiendo sus datos e ir analizando los resultados, trata de resolver las siguientes preguntas.

 

¿Qué pasaría si crea un objeto persona con un constructor por defecto y se imprimen sus datos?

¿Que pasaría si se crea un objeto persona con un constructor de copia sobre el objeto persona1?

¿Que resultado obtendríamos con la siguiente sentencia y porque da ese resultado?

 

 

System.out.println(persona1.mostrarDatos(persona3));

Código Completo

Clase Persona

package pqtObjetos;

public class Persona {

        //Atributos
        private String nombre;
        private String apellidoPaterno;
        private String apellidoMaterno;
        private char sexo;
        private int edad;
        private String direccion;
        
        //Constructor por defecto
        public Persona(){
                
        }
        //Constructor de copia
        public Persona(Persona persona){
                this.nombre=persona.nombre;
                this.apellidoPaterno=persona.apellidoPaterno;
                this.apellidoMaterno=persona.apellidoMaterno;
                this.sexo=persona.sexo;
                this.edad=persona.edad;
                this.direccion=persona.direccion;
        }
        
        //Constructor común
        public Persona(String nom, String app, String apm, char sexo, int edad, String dir){
                this.nombre=nom;
                this.apellidoPaterno=app;
                this.apellidoMaterno=apm;
                this.sexo=sexo;
                this.edad=edad;
                this.direccion=dir;
        }
        
        public void mayorEdad(int edad){
                if(edad>18)
                        System.out.println("Es mayor de edad");
                else
                        System.out.println("Es menor de edad");
        }
        
        public String mostrarDatos(Persona persona){
                String datos="Los datos son: \n";
                datos+=persona.nombre+"\n";
                datos+=persona.apellidoPaterno+"\n";
                datos+=persona.apellidoMaterno+"\n";
                datos+=persona.sexo+"\n";
                datos+=persona.edad+"\n";
                datos+=persona.direccion+"\n";
                return datos;
        }
        
}

Clase Principal

package pqtObjetos;

public class Principal {

        public static void main(String[] args) {
                Persona persona1=new Persona("José Roberto", "Jiménez", "Hernández", 'H', 20, "Av. El aguacate #41");
                Persona persona2=new Persona("Mayra", "Espinosa", "Sánchez", 'M', 17, "Fracc. La noche es larga #221");
                Persona persona3=new Persona("Armando", "Ruiz", "López", 'H', 33, "Calle patitos feos #87");
                
                System.out.println(persona1.mostrarDatos(persona1));
                persona1.mayorEdad(20);
                
                System.out.println(persona2.mostrarDatos(persona2));
                persona2.mayorEdad(17);
                
                System.out.println(persona3.mostrarDatos(persona3));
                persona3.mayorEdad(33);
                
                /*******************************************************/
                //Sentencias para las preguntas
                Persona persona4=new Persona();
                System.out.println(persona4.mostrarDatos(persona4));
                
                Persona persona5=new Persona(persona1);
                System.out.println(persona5.mostrarDatos(persona5));
                
                System.out.println(persona1.mostrarDatos(persona3));
        }

}

Resultados