Transcript for:
Encapsulamiento y Programación en Java

qué tal Pues continuamos aquí en el curso de programación orientada a objetos utilizando el lenguaje de Java y en esta ocasión vamos a ver un tema muy interesante que cada vez nos vamos adentrando más y más a esos terrenos inhóspitos de la programación orientada a objetos Vamos a repasar también temas que ya habíamos visto en el curso pasado y que se aplican similar en lo que es Java eh pero s va a tener algunos algunos cambios no entonces en en esta ocasión vamos a ver encapsulamiento en Java Así que vamos a ello bien antes de comenzar en este ejemplo quisiera Ah corregir un error que he venido cometiendo a lo largo de este curso y es el hecho de que bueno ya viendo yo los videos siento que en parte he estado como limitándolo un poquito a la manera en la que yo programo y realmente eso no debe de ser creo que yo en mi papel de de profesora de docente debo de enseñarles eh lo más común que hay en este lenguaje y bueno sí quisiera aclarar que nada más son como consejillos que yo doy que yo sigo pero sí es importante ver otras maneras de programar para que cuando lo vean no se les haga Eh pues desconocido no de que eso realmente no lo vieron no Entonces a qué me refiero con esto Bueno no sé si recordarán pero yo antes les dije que los atributos debían o sea debían de ser privados y realmente no deben de ser privados e Eso depende mucho del programa sí del programa en Java que vayamos a realizar y precisamente para eso eh hice un programa que bueno Yo sé que a ustedes les gustan mucho los juegos es un programa de adivinanzas de adivinanzas de palabras y Bueno pues Se los voy a explicar En qué consiste y obviamente Aquí también vamos a aplicar este nuevo tema que es encapsulamiento y básicamente es el nivel de privacidad que van a tener tanto nuestros atributos como nuestros métodos A qué nos referimos con privacidad les puse un ejemplo en un video sí e se refiere a Qué métodos o qué atributos voy a poder yo visualizar fuera de de la clase no en este caso eh tengo un un jueguito que les digo que es de adivinanzas y que precisamente juega con lo que es el nivel de privacidad en nuestros datos Entonces vamos a analizar antes la clase eh Y bueno en esta clase yo la yo la nombré nivel uno en qué va a consistir el juego Bueno este nivel nos va a inicializar dos palabritas o dos animalitos Sí y nos va a hacer preguntas muy burdas realmente con este ejemplo no quiero complicarlo realmente vamos a hacer unas preguntas bastante sencillas y la idea es que el usuario adivine la palabra si Adivina qué animal es le damos 10 puntos y si no adivina eh le vamos a restar un punto sí Y al final vamos a imprimir el puntaje que se obtuvo en el nivel que en este caso el nivel está representado por una clase el encapsulamiento inicia desde la primera línea de nuestro código que es package adivinanzas que yo ya les había comentado que esto le indica al programa que esta clase se encuentra dentro del paquete o la carpeta adivinanzas y que por lo tanto va a poder ser vista por todas las clases que se encuentren dentro de ese paquete Entonces desde ahí inicia el concepto de encapsulamiento aquí le estamos diciendo que esta clase va a tener un nivel de visualización dentro del paquete posteriormente vamos a a ver aquí declaré la la el paquete de escáner porque aquí dentro de esta clase del nivel voy a pedir datos ya en este caso no lo voy a no lo voy a hacer desde la clase principal lo voy a hacer desde la clase del nivel entonces por eso importé lo que es el paquete donde se encuentra la clase Scanner Bueno vamos a analizar eh los atributos en este caso voy a declarar un atributo público que va a ser el puntaje porque este puntaje lo voy a imprimir en el en la clase principal y debo de tener acceso a él Entonces ahora voy a declarar como público este atributo eh aquí me parece que si ustedes omiten esta parte eh No importa sigue siendo público Sí pero bueno Vamos a ponerle el public para seguir la nomenclatura después voy a declarar como privado Ahora sí privado estos atributos que solamente van a ser visibles dentro del nivel y cuáles van a ser visibles dentro del nivel bueno va a ser la respuesta que nos va a dar el usuario que la voy a pedir aquí mismo eh voy voy a declarar en este caso chequen esto es un arreglo en Java así se declara con corchetes de este estilo y el nombre del arreglo que en este caso sería un atributo arreglo y aquí va a ser muy diferente eh este tipo de arreglos como que yo siento que va a ser más fácil ahorita Les explico esa parte y voy a declarar como final también el objeto que va a fungir como datos de entrada hacia nuestro hacia nuestra clase no entonces va a ser el del teclado el escáner bueno en este caso el constructor no va a recibir datos de afuera sí como en el en los videos pasados en el del constructor no en este caso el constructor sí va a inicializar datos pero los voy a inicializar con valores dentro de mi clase Como por ejemplo el puntaje lo voy a inicializar con cero Sí el objeto de teclado eh voy a inicializar iz arlo con New Scanner para poderlo usar Y en este caso voy a inicializar también el atributo de cadena que en este caso es una es un vector Perdón o un arreglo con dos espacios no sé si recuerdan en el video de los arreglos cada palabra Más bien cada letra de de una palabra se posicionaba en un índice bueno en este caso toda la palabra completa se va a posicionar en el índice de hecho por eso Aquí les pongo esta imagen para que lo vean es una comparativa no de como era en C y ahora como es en Java Entonces ahora cada índice va a poder tener una palabra y yo siento que así va a ser más fácil porque ahora con el índice voy a acceder a toda la palabra y precisamente para poderlo usar necesito inicializar porque estoy declarándolo como un arreglo que va a tener dos palabras y aquí Precisamente lo estoy inicializando en su índice cero va a tener la palabra perro y en el índice uno va a tener la palabra gato Entonces en este caso el constructor me va a servir para inicializar los atributos de esta manera y así como tengo atributos públicos también puedo tener métodos privados que van a ser métodos que se van a ejecutar dentro de esta misma clase es decir no los voy a mandar Llamar afuera estos se van a ejecutar en otro método que ahorita lo vemos sí eh que que va a ser público no pero ahorita vemos esa parte vamos a ver primero el método privado qué va va a sacar precisamente el puntaje de eh la primera palabra que es la de perro aquí lo que estoy haciendo es con un fels muy similar a sea y sí no cambia mucho voy a comparar la respuesta del usuario que me haya dado que este es un atributo que ya declaré previamente eh punto Sí porque esto es un atributo String o cadena si yo le pongo punto me va a salir un método de igualación de cadenas Entonces si básicamente lo que estoy diciendo es que si la respuesta del usuario es igual a lo que haya en el arreglo en el espacio cero y Recuerden que en el espacio cero tenemos la cadena perro Entonces le vamos a imprimir que es correcto que sí es perro y le vamos a hacer una suma acumulativa de 10 puntos este puntaje Recuerden que es el atributo público aquí por eso le estoy poniendo más = 10 si no le vamos a imprimir que es incorrecto y le vamos a imprimir cuál es la respuesta que aquí en este caso va a ser perro y le vamos a decir que tiene un punto menos y vamos a hacer una resta acumulativa sí que va a ser puntaje menos ig 1 de la misma manera voy a codificar el método del puntaje para el gato pero aquí le voy a poner en el índice uno sí lo mismo pero aquí en el índice uno hasta aquí nada más he como construido los métodos pero no los estoy mandando Llamar todavía y es por eso que eh preparé este método público que se llama imprime preguntas que este método sí lo voy a mandar llamar en la clase principal por eso le puse público y básicamente lo que va a hacer es imprimir las preguntas y mandar Llamar los métodos privados que son los que sacan el puntaje Cómo se va a hacer vamos a ver el código aquí básicamente lo que estoy pidiendo es Eh bueno estoy aquí imprimiendo la pregunta y lo estoy eh guardando en el atributo con el objeto teclado recuerden nextline para cadena y una vez que ya lo guarde este atributo ya va a tener un valor y por lo tanto ya voy a poder llamar a lo que es el método de puntaje perro y en el de puntaje perro Recuerden que aquí vamos a comparar la respuesta que pedimos y la siguiente línea es lo mismo pero para el gato aquí Bueno le cambié la pregunta adaptada a lo que es el gato lo mismo pero mandamos Llamar aquí a lo que es el método privado y obviamente Aquí nada más se llama con el puro nombre no hay que declarar ningún tipo de objeto porque es un método privado y está dentro de mi misma clase Entonces vamos a ver la clase principal y como podemos darnos cuenta en la clase principal ya no tengo declarado ni atributos ni nada solamente dentro del public static boid Main estoy mandando llamar un eh objeto más bien Estoy declarando un objeto y al momento de inicializar lo recuerden se va a ir al constructor donde me va a inicial izar lo que es el puntaje y lo que son las palabras y el objeto de teclado no entonces una vez que ya hago esto ahora mando llamar pero mando a llamar al de imprime preguntas Sí y precisamente Aquí vamos a ver miren si yo quisiera intentar Llamar el el los métodos del puntaje aquí no me los va a marcar porque es algo que está dentro de imprime preguntas y de hecho Aquí también puedo ver el puntaje no y precisamente es la siguiente parte de código ya al final cuando imprime las preguntas y obtenga el puntaje Aquí vamos a imprimirlo Y cómo Se imprime es puntaje final tu puntaje final es con el objeto nib 1 voy a imprimir este puntaje que es público que ya debe de tener algún valor Entonces vamos a ejecutarlo Para que vean qué es lo que hace aquí tenemos la ejecución vamos a poner los valores correctos por ejemplo perro aquí me dice correcto tienes 10 puntos más gato correcto tienes 10 puntos más y el puntaje final es 20 ojo aquí recuerden que no es lo mismo una cadena en minúsculas que en mayúsculas Bueno hay que adaptar esa parte hay que trabajarla para que no importa cómo lo escribamos eh que nos tome de la misma forma pero bueno eso quizá lo veamos más adelante eh Y bueno aquí ya me me imprime el puntaje final de esto ahora vamos a a fallar por ejemplo en en en una no sé Aquí le voy a poner este loro Eh gato y me imprime el puntaje final que es nueve y bien aquí tenemos el diagrama del nivel aquí Lo hice al revés primero hice lo que fue el código para pasar ahorita al diseño nada más para que ustedes aprecien los modificadores de acceso públicos y privados en nuestra clase tanto para atributos como para métodos ahorita no vamos a ver el protegido el protegido lo vamos a ver en otro tema así que bueno este fue lo que es encapsulamiento y ya para finalizar voy a crear un nuevo nivel el nivel dos pero ya no lo voy a hacer con Star uml lo voy a hacer directamente aquí con net vins y para crear una nueva clase nos vamos al paquete donde la queremos crear click con el botón derecho del mouse New y Java Class Vamos a ponerle el nombre que va a ser el nivel dos y así se crea una clase en nbns pero como podrán darse cuenta no está codificada en lo que es el cascado carón ahí sí tendrían ustedes que teclear todo lo que va en esa clase Porque sí efectivamente Este es otro reto que les voy a poner para que practiquen lo que es encapsulamiento el primer reto va a ser que completen este nivel dos pero aquí van a aumentar van a ser cuatro palabras las que ustedes quieran animales cosas comida Lo que ustedes quieran pero si están correctas las palabras van a sumar 20 puntos ya no van a ser 10 va a ser 20 Y si está incorrecto van a restar dos puntos Ajá Ese es el primer reto segundo reto van a crear un nivel tres pero van a tener seis palabras igual las que ustedes quieran si están correctas van a sumar 30 puntos y si están incorrectas van a restar tres puntos Ajá es el segundo reto y el tercer reto ese va a estar en la clase principal van a sumar los puntajes del nivel uno del nivel dos y del nivel tres sí los puntajes que hayan obtenido en cada nivel y van a imprimir el puntaje final en pantalla de los tres niveles Entonces estos retos ya están como que más tal chud y más complicadito pero les va a ayudar a que quede claro lo que es el concepto de encapsulamiento Bueno pues eso ha sido todo por este video Muchas gracias por estar aquí ya saben si les gustó el video denle like suscríbanse y compártanlo con todos sus amigos nos vemos en el siguiente video Bye