Hola Te saludo nuevamente.
Ubaldo Acosta bienvenidos y bienvenidos espero que estén listos para comenzar con esta lección.
A continuación vamos a estudiar el tema de encapsulamiento en Java están listos.
Vamos
encapsulamiento en Java.
Una de las características más importantes de la programación orientada a objetos es el encapsulamiento.
Esta característica nos permite aislar los datos de nuestros objetos del acceso de otros objetos externos
y de esta manera restringir el acceso directo a los atributos o métodos que no deseamos permitir ya
que el Estado de un objeto está generalmente oculto.
Podemos entender por estado de un objeto los valores actuales de cada uno de los atributos del objeto
y cualquier cambio en estos valores entonces cambia el estado interno del objeto
así que en Java el estado de un objeto está generalmente oculto.
A este concepto se le conoce como encapsulamiento y es parte de los conceptos de la programación orientada
a objetos Java.
Utiliza modificadores de acceso para definir esta característica.
Son cuatro en total pero estudiaremos en esta elección sólo dos modificadores de acceso para simplificar
el estudio de estos conceptos y posteriormente veremos más detalle cada uno de ellos.
En este caso vamos a estudiar únicamente los tipos Playboy y pública.
Al ser uno de los principios más importantes el encapsulamiento se logra aplicar a través de los llamados
modificadores de acceso.
Como hemos comentado existen cuatro modificadores de acceso los cuales son Playboy Bacas o default protected
y públic.
Sin embargo en esta elección únicamente estudiaremos los modificadores Playboy y públic debido a que
en este momento del curso es suficiente para aplicar el concepto de encapsulamiento y en cursos posteriores
veremos a detalle cómo implementar cada uno de estos modificadores de acceso.
Modificadores de acceso básico como hemos comentado comenzaremos con el estudio de los modificadores
Prévert y públic estos modificadores aplican en varias partes de una clase.
Sin embargo en esta elección estudiaremos cómo aplican en dos lugares en los atributos de una clase
así como en los métodos de una clase por ejemplo podemos observar que cuando estamos creando la firma
de un método estamos especificando en primer lugar el modificador de acceso.
Posteriormente podemos agregar otros modificadores como hemos visto por ejemplo la palabra static.
Posteriormente veremos la palabra final entre otras.
Posteriormente asignamos el nombre del método y la lista de argumentos pero básicamente en esta elección
lo que estaremos estudiando son los modificadores de acceso y en este momento es que podemos utilizar
por ejemplo los modificadores públic que ya hemos utilizado anteriormente pero ahora también podemos
empezar a utilizar el modificador de acceso Playboy los modificadores de acceso que estudiaremos en
esta elección son Playboy y Public Playboy.
Permite acceder solo desde la misma clase al método o atributo marcado con este modificador.
Por ello su nombre de privado ya que únicamente la misma clase es la que puede acceder a los atributos
o métodos marcados con este modificador de acceso.
Por otro lado públic permite acceder desde cualquier otra clase a cualquier método o atributo definido
con este modificador así que en resumen el modificador prohíbe al agregarlo a un atributo o método de
una clase.
Básicamente lo que estamos indicando es que sólo será posible acceder al atributo o método marcado con
este modificador desde la misma clase y no desde ninguna otra.
Por ello el nombre de privado en cambio el modificador Public lo que indica es que es posible acceder
a este atributo o método desde cualquier otra clase.
Por ello el nombre de público a continuación veremos un ejemplo de cómo aplicar estos modificadores
de acceso a un atributo o método de una clase en Java con el objetivo de aplicar el concepto de encapsulamiento
ejemplo de los modificadores públic y priv.
Podemos observar en el código mostrado el uso de las palabras Prévert y públic.
Veamos algunos cambios en la clase persona
por ejemplo en la línea 15 hemos agregado el atributo de nombre y a este mismo atributo se le ha agregado
el modificador de acceso Playboy de tal manera que cuando creemos un objeto de tipo persona por ejemplo
en la línea 4 ya no podremos acceder directamente a modificar el valor del atributo nombre.
Esto nos marcaría un error de compilación en la línea 7 así que nuestro modificador de acceso privado
básicamente nos está indicando que desde otra clase ya no podemos acceder directamente a los atributos
definidos en nuestra clase de tipo persona ya que este atributo lo hemos definido como privado y recordemos
que esta es una clase distinta a la clase persona aunque estén dentro del mismo archivo.
Son clases distintas y así es como comienza a tomar forma el concepto de encapsulamiento ya que únicamente
esta misma clase de persona es la que podrá modificar esta variable.
Ahora la pregunta podría ser cómo es que lo va a modificar y recordemos que para ello podemos tener
los constructores o los métodos para modificar este atributo ya que internamente el constructor sí puede
acceder al atributo respectivo.
De esta manera es que a través de los métodos de la clase es que podremos acceder a los atributos privados
así que si queremos leer el valor del atributo en este caso del atributo nombre que es privado creamos
un método para ello y agregamos el modificador de acceso públic a este método con el objetivo de que
cualquier otra clase pueda acceder a este valor.
Por lo tanto creamos el método obtener nombre en la línea 21.
Agregamos el modificador de acceso públic a este método para posteriormente en la clase de prueba acceder
a este método por medio de la variable de tipo persona llamada P1 es decir en la línea 9 así que esta
línea de código ya nos marcaría error de compilación y posteriormente esta línea sí funcionaría y podríamos
obtener el nombre de la persona que se ha creado pero podemos observar que ya no accedemos directamente
a los atributos de la clase sino que ahora empezaremos a acceder a esta información del objeto.
A partir de los métodos de la clase.
De esta manera lo que estamos haciendo es modificar nuestra clase de persona para que ahora el atributo
no sea accesible ni para lectura ni para escritura de manera directa y tengamos la necesidad de acceder
por medio de métodos públicos que creemos para cada atributo de nuestra clase.
Sin embargo esta es una manera informal de aplicar el encapsulamiento en Java.
Veamos cómo aplicarlo de manera más formal en la siguiente lámina
ejemplo de encapsulamiento en la lámina podemos observar un código más formal para el concepto de encapsulamiento
es decir hemos convertido nuestros atributos a privados.
Esto lo podemos observar en la línea 15 y por cada atributo hemos agregado dos métodos uno para acceder
al atributo es decir el método JEET en la línea 17 y otro para modificar el atributo es decir un método
Zet en la línea 21 para encapsular el atributo de nombre.
Vamos a crear dos métodos los conocidos Guédez y cederse G.T Es para leer información como su nombre
en inglés lo indica G.T obtener Iced es para modificar información también como su nombre lo indica
en inglés es Zet o poner un valor y posteriormente del prefijo Jet Set vamos a indicar el nombre del
atributo pero modificando la primera letra en mayúsculas y si tuviéramos más palabras en nuestro nombre
del atributo debemos de respetar la notación de camello que hemos comentado anteriormente.
Por ejemplo si tuviéramos un atributo que fuera P paterno su método GET respectivo sería Get
Ape paterno así que podemos observar que nuestra primera letra de nuestro método GET se convierte en
mayúscula y el método set respectivo sería ZET.
Paterno y así por cada uno de los atributos que tengamos podemos encapsular los de esta manera creando
sus métodos G.T para obtener información y C.T para modificar la información del atributo o variable
que estamos encapsulados.
Así que en este código mostrado podemos observar un ejemplo de estos teitos o accesorios también así
se les conoce o métodos guerreros y cederse.
Como hemos comentado el objetivo es generar una interfase a través de métodos que permiten encapsular
el estado del objeto IAVA y que no sea posible acceder directamente al estado del objeto y modificarlo
es decir que los motitos modifican el estado del objeto y los accesos permiten leer el estado del objeto.
Sin embargo es lo mismo motitos igual a C.T y accesos igual Aguete.
En este ejemplo debemos entender que la clase de prueba es la clase pública llamada prueba encapsulamiento
y que la clase en la que se aplicó el concepto de encapsulamiento fue sobre la clase de persona es decir
que son dos clases distintas y por ello el código que tenemos en el método main en las líneas 4 a 9
es código que está fuera de la clase de persona.
Y allí radica el concepto de encapsulamiento es decir que para evitar que clases externas a la clase
persona puedan acceder a los atributos de la clase persona directamente sin importar que sea una clase
declarada en el mismo archivo son clases distintas.
A continuación veremos otra forma de conceptualizar el concepto de encapsulamiento
notación de donã de un objeto en Java
como podemos observar en la lámina.
La idea del encapsulamiento de la programación orientada a objetos es evitar el acceso y la manipulación
directa de otras clases a los datos de un objeto así que la idea es no acceder directamente a los datos
no poder modificarlos únicamente los debemos poder modificar o leer a través de los métodos que creemos
para modificar o leer cada uno de los atributos de nuestra clase así que para evitar el acceso directo
de otras clases a los datos de la clase que deseamos encapsular lo primero que debemos hacer.
Según hemos comentado es agregar el modificador de acceso Privat a nuestros atributos de la clase.
De esta manera únicamente los métodos de la misma clase son los que podrán acceder y manipular los datos
de la clase que estamos creando.
Por otro lado cómo podrán acceder una clase externa a los datos de nuestros objetos encapsulados.
La respuesta es creando métodos públicos por cada atributo privado los cuales pueden tanto modificar
como recuperar el valor de nuestros datos o atributos de la clase.
A esto se le conoce como la interfase del objeto debido a que es a través de estos métodos que nos estaremos
comunicando con el objeto y así poder leer el estado de cada dato y o modificar también sus datos.
Normalmente se crean dos métodos públicos por cada atributo privado es decir un método set para modificar
el valor del atributo y otro método GET para recuperar el valor del atributo.
Los métodos que modifican los datos se conocen como teitos y llevan el prefijo Zet seguido del nombre
de la variable en notación de mayúscula minúscula.
Por otro lado los métodos que leen la información de los datos se conoce como accesos y llevan el prefijo
de Goeth seguido del nombre de la variable excepto en los casos en que la variable sea de tipo bullían
entonces el prefijo en lugar de G.T será iz ahora por qué evitar la modificación directa del Estado
de un objeto en Java y en general en la programación orientada a objetos.
Lo que buscamos es que tengamos un control sobre la información y estados de nuestros objetos de tal
manera que si queremos por ejemplo modificar el dato 1 podamos aplicar una validación sobre la información
que queremos colocar en el dato 1 y este sea un valor adecuado como puede ser la restricción de recibir
sólo números entonces antes de hacer la actualización del valor del dato 1 podamos verificar que efectivamente
el valor que se va a colocar sea un valor numérico.
Esto solo por poner un ejemplo sencillo pero la idea es que otros objetos no puedan directamente modificar
el estado de nuestros objetos si no lo deseamos y de esta manera el concepto de encapsulamiento en Java
nos permite lograr esto ocultando cualquier validación pero aplicándola en todo momento respetando en
todo momento las reglas que se aplican al estado del objeto en esta lámina podemos observar que los
atributos tienen un símbolo de menos y que los métodos tienen un símbolo demàs.
Esto es parte de la notación de este diagrama de donã o de objetos y lo que nos está indicando este
signo de menos es que tiene un modificador de acceso privado y el signo de más nos indica que tiene
un modificador de acceso público.
De esta manera es que podemos observar gráficamente los elementos privados y públicos en nuestros objetos
Java esto es solo un resumen de lo que hemos visto anteriormente pero es otra forma en que podemos entender
el concepto de encapsulamiento.
A continuación pondremos en práctica este concepto en los siguientes ejercicios.