Accesores – Fundamentos de Programación Orientada a Objetos

Veremos temas de referencias, constructores, detallaremos la creación e inicialización de objetos y que es método de encapsulamiento.

Accesores

En esta segunda sesión se verán temas como asignación de referencias, constructores, detallaremos la creación e inicialización de objetos y que es método de encapsulamiento. Todas los conceptos vienen con ejemplos para que se te haga más fácil el entendimiento de los conceptos.

Asignación entre referencias

recibe la dirección de memoria almacenada en a
luego de lo cual, tanto x como a observan o controlan al mismo objeto.

Constructor

Es un mecanismo que posee el mismo nombre de la clase pero no tiene tipo de retorno. Si una clase no define un constructor, Java define un constructor conocido como «constructor por defecto» que es un constructor sin parámetros que no hace nada. El «constructor por defecto» definido por el lenguaje no es visible en el código fuente.

//constructor por defecto
public Alumno (){

}

El «constructor por defecto» puede ser definido explícitamente en el código fuente.

public class Alumno {
    //  Atributos públicos
    public int codigo, nota1, nota2;
    public String nombre;

    //  Operaciones públicas
    public double promedio() {
        return(nota1 + nota2) / 2.0;
    }
}

Constructor por defecto invisible en el código fuente. Si se requiere que el constructor por defecto haga algo, debe definirse en el código de manera explícita. Ejemplo: Alumno a= newAlumno(); 

Un constructor se usa para inicializar los atributos de un objeto al momento de crearlo.  

public class Alumno {
    //  Atributos públicos
    public int codigo, nota1, nota2;
    public String nombre;
    //  Constructor personalizado
    publicAlumno(int cod,Stringnom, int n1, int n2) {
        codigo=cod;
        nombre=nom;
        nota1=n1;
        nota2=n2;
    }
    //  Operaciones públicas
    public double promedio() {
        return(nota1 + nota2) / 2.0;
    }
}

Creación e inicialización de objetos

Forma 1:

//  Declarar una variable referencia
NombreClase nombreObjeto;
//  Crear e inicializar el objeto
nombreObjeto = new NombreClase(valor1, valor2, ...);

Ejemplo:

Forma 2:

//  Declarar una variable referencia, crear e inicializar el objeto
NombreClasenombreObjeto= new NombreClase(valor1, valor2, ...);

Ejemplo:

Encapsulamiento

Es el mecanismo que consiste en ocultar los detalles internos de una clase y exponer o dar a conocer sólo los detalles que sean necesarios para el resto de clases. 
Esto permite restringir y controlar el uso de la clase para lo cual se usan los especificadores de acceso private y protected (explicado más adelante).

Especificador de acceso private

Prohíbe el acceso externo a los miembros (variables y métodos) declarados de esta forma.

public class Alumno {
    //  Atributos privados
    private int codigo, nota1, nota2;
    private String nombre;
    //  Constructor
    publicAlumno(int cod, Stringnom, intn1, intn2) {
        codigo= cod;
        nombre= nom;
        nota1= n1;
        nota2= n2;
    }
    //  Operaciones públicas
    public double promedio() {
        return (nota1 + nota2) / 2.0;
    }
}

Ahora código, nota1, nota2 y nombre son inaccesibles:

Ahora codigo, nota1, nota2 y nombre son inaccesibles:
Alumno a = newAlumno(12345, “Juan”, 13, 15);
//  Intento de modificar nota1
//  ¡Error! nota1 es inaccesible
a.nota1= 20;
//  Intento de obtener el valor de nota1
//  ¡Error! nota1 es inaccesible
imprimir("Nota 1 : " + a.nota1);

Métodos de acceso público: set/get

Modificación del valor de un atributo privado – Método set

Para modificar el valor de un atributo privado, la clase debe tener un método public de tipo void que a través de un parámetro reciba un valor para ser impuesto al atributo.

public void setCodigo(intcod) {
    codigo= cod;
}

Obtención del valor de un atributo privado – Método get

Para obtener el valor de un atributo privado, la clase debe tener un método public sin parámetros y con tipo de retorno igual al del atributo, que retorne el valor del atributo.

public intgetCodigo() {
    returncodigo;
}

Veamos:

public class Alumno {
    //  Atributos privados
    private int codigo, nota1, nota2;
    private String nombre;
    //  Constructor
    publicAlumno(int cod, Stringnom, intn1, intn2) {
        codigo = cod;
        nombre= nom;
        nota1= n1;
        nota2= n2;
    }
    //  Métodos de acceso público: set/get
    public void setCodigo(int cod) {
        codigo = cod;
    }
    public void setNombre(String nom) {
        nombre = nom;
    }
    public void setNota1(int n1) {
        nota1 = n1;
    }
public void setNota2(int n2) {
        nota2 = n2;
    }
    public int getCodigo() {
        return codigo;
    }
    publicString getNombre() {
        return nombre;
    }
    public int getNota1() {
        return nota1;
    }
    public int getNota2() {
        return nota2;
    }
    //  Operaciones públicas
    public double promedio() {
        return (nota1 + nota2) / 2.0;
    }
}

El acceso a los atributos es indirecto mediante los métodos set/get

Alumno a = newAlumno(12345, “Juan”, 13, 15);

//  Modificación de nota1
a.setNota1(20); // Cambia el valor 13 por 20

//  Obtención del valor de nota1
imprimir("Nota 1 :  " + a.getNota1());  // Imprime 2

Contenido relacionado:

Te puede interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada.