domingo, 5 de marzo de 2017

Objetos




    Al momento de crear objetos en Java, debemos tener claras dos cosas indispensables, la primera es el nombre de la clase para la cual vamos a crear el objeto y segundo el constructor que dicha clase posee, es decir, si el constructor recibe o no parámetros.

    Para crear objetos en Java, el lenguaje nos proporciona el comando new, con este comando le decimos a Java que vamos a crear un nuevo objeto de una clase en especifico y le enviamos los parámetros (en caso de ser necesario) según el constructor, veamos un ejemplo.

Ejemplo de objetos en java


    Vamos a crear un objeto o instancia en Java para la clase que hemos creado al comienzo llamada MiClase. Esta clase tiene un constructor que no recibe parámetros, por lo cual no es necesario enviar algún tipo de valor al momento de crear el objeto, veamos entonces la sintaxis para crear un objeto del tipo MiClase en java.
 
MiClase miObjeto; //Declaramos una variable del tipo de la clase
miObjeto = new MiClase(); //Aquí ya hemos creado un objeto de MiClase
 

Otra forma de hacer y que también es válida es la siguiente:
 
MiClase miObjeto = new MiClase(); //Declaramos y creamos el objeto en una línea
 

Ejemplo 2 de objetos en Java


     Vamos ahora a crear un objeto o instancia para la clase Animal (la del ejemplo dos), en esta ocasión tenemos un constructor que recibe un parámetro (el nombre del animal) y que posee tres métodos de los cuales haremos uso para este ejemplo.
 
import misClases.Animal; //Importamos la clase Animal para poder usarla

public class Ejemplo
{
 public static void main(String[] args)
 {
  //Creamos un animal cuyo nombré será Falco
  Animal miAnimal = new Animal("Falco");
  //Le establecemos 3 años de edad a Falco.
  miAnimal.setEdad(3);
  //Mostraremos el nombre del animal por pantalla
  System.out.println("El nombre es: " + miAnimal.getNombre());
  //Mostramos la edad del animal por pantalla
  System.out.println(" y tiene " + miAnimal.getEdad() + " años");
  //Este código deberia imprimir "El nombre es: Falco y tiene 3 años"
 }
}
 

      Nota: Es importante notar que es similar hacer uso de método set para establecer atributos y usar el constructor enviándole parámetros, es decir, el resultado es el mismo al usar un constructor vacío y luego establecer los valores de los atributos por medio de una función set o usar un constructor que reciba una serie de parámetros que usará para establecer valores a los atributos. La diferencia radica esencialmente en la agilidad y número de líneas, al usar el constructor y enviar los parámetros, el constructor hace todas las asignaciones por nosotros y usamos una sola línea de código (normalmente) mientras que al usar métodos set debemos usar un método set por cada atributo y si tenemos cinco o más atributos ya se vuelve un poco molesto hacerlo además de tener que usar un constructor de todas formas. Veamos un corto ejemplo para estar más claros.

Constructor vs mutador (set)

En programación se conoce como método set al método encargado de establecerle un valor a un atributo según un parámetro recibido (ver setEdad(...) en el ejemplo de clases en Java).
Una pregunta que nos puede surgir es si debemos usar un constructor con parámetros o los métodos set de los atributos para establecer los valores de los atributos del objeto. En realidad es lo mismo en cuanto a resultados u términos generales veamos:

Ejemplo 1: Usando constructor

 
public class Aclaracion
{
 private int atributo1;
 private int atributo2;
 private String atributo3;

 //Declaramos un constructor
 public Aclaracion(int attr1, int attr2, String attr3)
 {
  atributo1 = attr1;
  atributo2 = attr2;
  atributo3 = attr3;
 }

 public static void main(String[] args)
 {
  Aclaracion ac = new Aclaracion(5, 10, "x");//Creamos un objeto enviando parámetros al constructor

  System.out.println(ac.atributo1 + ", " + ac.atributo2 + ", " +ac.atributo3);//Mostramos el valor de los atributos
        //Imprime '5, 10, x'
 }
}
 

    En este ejemplo hemos hecho uso del constructor para establecerle los valores a los atributos del objeto. Ahora hagamos lo mismo usando métodos set o accediendo directamente a cada atributo.

Ejemplo 2: Usando métodos set

 
public class Aclaracion
{
    private int atributo1;
    private int atributo2;
    private String atributo3;


    public void setAtributo1(int attr1)
    {
        atributo1 = attr1;
    }

    public void setAtributo2(int attr2)
    {
        atributo2 = attr2;
    }

    public void setAtributo3(String attr3)
    {
        atributo3 = attr3;
    }


    public static void main(String[] args)
    {
            Aclaracion ac1 = new Aclaracion();//Creamos un objeto con constructor vacío
            Aclaracion ac2 = new Aclaracion();//Creamos otro objeto con constructor vacío

            //Establecemos los valores de los atributos usando métodos set de cada uno
            ac1.setAtributo1(5);
            ac1.setAtributo2(10);
            ac1.setAtributo3("x");

            //Establecemos los valores de los atributos accediendo directamente a cada uno
            ac2.atributo1 = 5;
            ac2.atributo2 = 10;
            ac2.atributo3 = "x";

            System.out.println(ac1.atributo1 + ", " + ac1.atributo2 + ", " +ac1.atributo3);//Mostramos el valor de los atributos de ac1
   //Imprime '5, 10, x'

            System.out.println(ac2.atributo1 + ", " + ac2.atributo2 + ", " +ac2.atributo3);//Mostramos el valor de los atributos de ac2
            //Imprime '5, 10, x'
    }
}
 
     Como podrás evidenciar hacer ambas cosas nos permiten llegar al mismo resultado, sin emabrgo en el ejemplo 2, podemos ver como el número de líneas aumentó considerablemente y fue más engorroso programarlo. En todo caso siempre es buena práctica declarar los métodos set y get para cada atributo, pues si debemos modificar el valor de un atributo cualquiera, debemos hacerlo por medio de un método get y no creando un objeto nuevo.

https://www.programarya.com/Cursos/Java/Objetos-Y-Clases

No hay comentarios:

Publicar un comentario