Primera Intervención
Encapsulación y visibilidad en Java
El software tiene dos aspectos muy importantes: interfaz e
implementación.
La interfaz nos dice cómo acceder y utilizar nuestro
software. En Java, una interfaz consta de elementos de una
clase que serán visibles fuera de la clase.
Por otro lado, tenemos implementaciones que consisten en el
código exacto utilizado para desarrollar los distintos
algoritmos. En Java, consta de propiedades y métodos.
El concepto de encapsulación en Java implica ocultar las
propiedades de un objeto para que solo puedan cambiarse
mediante operaciones definidas en ese objeto. Está
estrechamente relacionado con la visibilidad.
Puede usar palabras reservadas para definir la visibilidad en
Java:
public: significa que se puede acceder desde cualquier clase
[interfaz].
private: solo disponible desde el curso actual.
protected: Disponible de la clase actual, sus descendientes o
el paquete al que pertenece.
No se requiere texto: disponible en cualquier clase en un
paquete.
Las propiedades de Java deben tener visibilidad privada.
Entonces, ¿cómo accedemos a las propiedades? La respuesta
está en los métodos Getters y Setters. Echemos un vistazo al
ejemplo de código para estos métodos.
class Punto {
private double puntox, puntoy;
public double getPuntox() {
return puntox;
}
public void setPuntox (double puntox) {
this.puntox = puntox;
}
...
Importancia
La encapsulación le permite definir la visibilidad para los
miembros de la clase. Estos niveles de visibilidad definen el
acceso a los datos, dependiendo de si se accede a los datos a
través del método propio de la clase, la clase derivada o
cualquier otra clase.
Polimorfismo en Java
El término "polimorfismo" es una palabra griega que significa
"muchas formas". El término se usa en OOP para "denotar una
propiedad que se puede usar para enviar mensajes
sintácticamente idénticos a objetos de diferentes tipos".
Como esta definición puede ser un poco confusa, la
explicaremos con un ejemplo que incluimos en la sección de
sucesiones donde queríamos modelar el comportamiento de
diferentes miembros de la selección de fútbol de España;
tanto los jugadores como el cuerpo técnico (entrenadores,
masajistas, etc.). En este ejemplo, utilizaremos el siguiente
diagrama de clases:
Importancia
El polimorfismo le permite reconocer y explotar similitudes
entre diferentes clases de características. Cuando se dé
cuenta de que los objetos de diferentes tipos pueden
responder al mismo mensaje, se dará cuenta de la diferencia
entre los nombres de notificación y de método.
Métodos Getters y Setters
Existen métodos inútiles para obtener o almacenar algunos
valores de propiedad de clase, generalmente se denominan
getters y setters.
Getters (del inglés get - get) indican que podemos obtener un
valor de una propiedad, y setters (del inglés set-put/fix) -
podemos escribir un valor para la propiedad. Son importantes
al crear una clase de entidad porque definen qué valores
pueden tomar las propiedades o cambiar una propiedad sin
tener que cambiar ninguna otra propiedad.
public String getNombre() {
return nombre;
}
public String getApellidoPaterno() {
return apellidoPaterno;
}
public String getApellidoMaterno() {
return apellidoMaterno;
}
public char getSexo() {
return sexo;
}
public int getEdad() {
return edad;
}
public String getDireccion() {
return direccion;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}
public void setApellidoMaterno(String apellidoMaterno) {
this.apellidoMaterno = apellidoMaterno;
}
public void setSexo(char sexo) {
this.sexo = sexo;
}
public void setEdad(int edad) {
this.edad = edad;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
Importancia
Getters y setters brindan un control centralizado sobre cómo
se inicializa un campo en particular y se pone a disposición
del cliente, lo que facilita mucho las pruebas y la
depuración.
Bibliografía
Palacios, D. (s/f). Encapsulamiento, getters y setters en
PHP. Styde.net. Recuperado el 30 de noviembre de 2022, de
https://styde.net/encapsulamiento-y-uso-de-getters-y-setters-
en-php/
Métodos Getters y Setters. (s/f). Página Jimdo de tutospoo.
Recuperado el 30 de noviembre de 2022, de
https://tutospoo.jimdofree.com/tutoriales-java/clases-y-
objetos/m%C3%A9todos-getters-y-setters/
Polimorfismo en Java (Parte I), con ejemplos. (2014, abril
18). Jarroba. https://jarroba.com/polimorfismo-en-java-parte-
i-con-ejemplos/
Polimorfismo en Programación Orientada a Objetos. (2014, mayo
20). Desarrolloweb.com.
https://desarrolloweb.com/articulos/polimorfismo-
programacion-orientada-objetos-concepto.html
Polimorfismo en Java: Programación orientada a objetos.
(2020, febrero 3). IfgeekthenNTTdata.
https://ifgeekthen.nttdata.com/es/polimorfismo-en-java-
programaci%C3%B3n-orientada-objetos
Fonseca, F. J. B. (2018, julio 5). El encapsulamiento y la
visibilidad en Java. Juntadeandalucia.es; Apuntes de
programación.
https://blogsaverroes.juntadeandalucia.es/apuntesprogramacion
/2018/07/05/el-encapsulamiento-y-la-visibilidad-en-java/
Lara, D. (s/f). Encapsulamiento en la programación orientada
a objetos. Styde.net. Recuperado el 30 de noviembre de 2022,
de https://styde.net/encapsulamiento-en-la-programacion-
orientada-a-objetos/
Caules, C. Á. (2019, noviembre 15). Java Encapsulamiento y
reutilización. Arquitectura Java.
https://www.arquitecturajava.com/java-encapsulamiento-y-
reutilizacion/