Mecanismo de encapsulamiento protegiendo atributos privados con métodos públicos
← RECURSOS

Encapsulamiento, Modificadores de Acceso y Estructuras de Control

Ocultamiento de información mediante encapsulamiento, getters y setters, delegación de eventos y estructuras de control en Java.

📌 En síntesis: Ocultamiento de información mediante encapsulamiento, getters y setters, delegación de eventos y estructuras de control en Java.

Guía técnica desarrollada por el equipo de Proyecto Luna para formación profesional y consulta técnica abierta.


📌 Aprendizajes esperados


📌

Construir soluciones simples utilizando interfaz gráfica. Aplicar estructuras de control en programas y scripts simples, según requerimientos.


📌

Durante esta semana, profundizarás en el modelo de delegación de eventos, un mecanismo esencial en la interfaz gráfica de usuario (GUI) que permite gestionar la interacción entre los componentes y las acciones del usuario. Comprenderás cómo las clases receptoras y adaptadoras funcionan como intermediarias que procesan eventos, asegurando que cada elemento responda de manera coherente y eficiente ejecutando las acciones definidas por el usuario (Schildt, 2021; Hunt, 2002). Asimismo, analizarás las estructuras de decisión e iteración, fundamentos del control de flujo en la programación. Estas estructuras, como los bloques if/else, for y while, determinan la lógica de ejecución y permiten crear soluciones dinámicas y adaptables a distintos escenarios, en particular aplicando las reglas de negocio del cliente. Dominar su uso es clave para implementar programas que respondan correctamente a los requerimientos del cliente y optimicen los recursos del sistema (Gaddis, 2022; Saini, 2023; Goodrich et al., 2014). En conjunto, estos contenidos fortalecerán tu capacidad para diseñar aplicaciones interactivas, eficientes y estructuradas, aplicando los principios de la Programación Orientada a Objetos en contextos prácticos de desarrollo de software.


🚀 Introducción

En la Programación Orientada a Objetos (POO), el modelo de delegación de eventos es un mecanismo esencial que permite manejar la interacción del usuario con los componentes gráficos de una interfaz. Cada acción —como hacer clic en un botón o escribir en una caja de texto— genera un evento que puede ser detectado y procesado por clases específicas llamadas receptoras o escuchadoras (listeners). Este modelo separa la lógica de control de la interfaz visual, promoviendo la modularidad y el mantenimiento del código (Hunt, 2002; Schildt, 2021).

🔹 Concepto y funcionamiento general

El modelo de delegación de eventos se basa en tres elementos: ● el objeto fuente (el componente que genera el evento, perteneciente a cualquier clase existente), ● el objeto evento (que contiene los datos del evento, perteneciente a la clase Event) ● y el objeto oyente (que responde a la acción, perteneciente a cualquier objeto que implemente una interfaz Listener). Cuando ocurre una interacción, el componente genera una instancia de evento que es enviada a la clase oyente para ejecutar una acción específica. Este proceso se denomina delegación, ya que el control del evento se transfiere a otro objeto (Saini, 2023).

🔹 Clase Event

En Java, los eventos se representan mediante clases derivadas de java.awt.event. Estas clases encapsulan información como la fuente del evento, la posición del cursor o el tipo de interacción. Por ejemplo, la clase ActionEvent se utiliza para manejar acciones de usuario como presionar un botón.


📐 Modelo de delegación de eventos

A continuación, se resumen algunas clases de eventos comunes empleadas en la construcción de interfaces gráficas:

🔹 Clases receptoras de eventos

Las clases receptoras son aquellas que implementan las interfaces de escucha, como ActionListener, KeyListener o MouseListener. Estas interfaces definen métodos abstractos que deben ser sobrescritos para especificar la acción que se ejecutará ante un evento determinado. Ejemplo: Clase de evento Descripción Ejemplo de uso ActionEvent Representa una acción, como hacer clic en un botón. KeyEvent Captura la pulsación de teclas del teclado. MouseEvent Registra movimientos o clics del ratón. boton.addActionListener(this); addKeyListener(this); addMouseListener(this); Tabla 1. Clases de eventos comunes en Java Fuente: adaptado de Schildt (2021) y Gaddis (2022)

Imagen 1. Ejemplo de la clase BotonConProposito Imagen 1. Ejemplo de la clase BotonConProposito

En este ejemplo, la clase BotonConProposito actúa como receptor del evento, ya que implementa ActionListener y define la acción a ejecutar mediante el método actionPerformed.

🔹 Clases adaptadoras

Las clases adaptadoras simplifican el manejo de eventos cuando no se requiere implementar todos los métodos de una interfaz. En lugar de sobrescribir cada uno, se puede heredar de una clase adaptadora y redefinir solo los métodos necesarios. Por ejemplo, MouseAdapter permite responder únicamente a un evento de ratón específico (Goodrich et al., 2014). Ejemplo: Aquí, el programa utiliza una clase anónima (es decir una clase que se instancia en el momento de la ejecución, construyendo un objeto a través del operador new) basada en MouseAdapter para detectar el clic del ratón, evitando la implementación de todos los métodos de MouseListener.

🔹 Flujo del manejo de eventos

El flujo de un evento sigue una secuencia lógica:

🔹 Ejemplo práctico: creación de un botón con respuesta visual

A continuación, se presenta un ejemplo completo de aplicación que combina los elementos explicados: 1. La clase EscucharRaton es un contendor que hereda de la clase JFrame 2. Implementa un listener a través del método addMouseListener, recibiendo como parámetro un MouseEvent 3. La clase BotonEvento es un contendor que hereda de la clase JFrame 4. Define una etiquet (JLabel) y un botón (JButton) como atributos de la clase 5. En la metodología Constructor de esta clase, se agrega un evento al botón, que es el encargado de ejecutar algo, boton.addActionLitener(….) 6. En este programa, el evento es delegado a un objeto lambda (e -> mensaje.setText(…)), lo que simplifica el código y mejora su legibilidad, reemplazando la creación de clase anónima. Cada interacción actualiza el texto del componente gráfico, evidenciando el principio de retroalimentación visual (Schildt, 2021).

Imagen 2. Ejemplo de creación de un botón con respuesta visual Imagen 2. Ejemplo de creación de un botón con respuesta visual

El modelo de delegación de eventos es un pilar en la construcción de interfaces gráficas interactivas, ya que establece una comunicación efectiva entre los componentes y la lógica del programa. Su correcta aplicación no solo favorece la claridad del código, sino también la modularidad, mantenibilidad y escalabilidad de las aplicaciones orientadas a objetos, aspectos clave en el desarrollo de software moderno (Hunt, 2002; Goodrich et al., 2014). Para más información sobre los componentes de la interfaz gráfica en java y su API AWT, puedes revisar los documentos que están en Contenidos y recursos en el entorno de estudio:


⚙️ Estructuras de decisión

Las estructuras de decisión permiten controlar el flujo de ejecución de un programa según el cumplimiento o no de ciertas condiciones o reglas de negocio del cliente. En la POO, estas estructuras son esenciales para que las clases y los métodos puedan reaccionar ante distintos escenarios, resolviendo problemas de manera lógica, flexible y eficiente (Gaddis, 2022). Su aplicación asegura que el comportamiento del programa se adapte dinámicamente a los requerimientos del cliente o del entorno de ejecución (Saini, 2023). 1. GUI Componentes Interfa Gráfixa - AWT 2. Contenedores de AWT - Frame - PAnel -Dialog - FileDialog - Applet 3. AWT Componentes - Label - Button - Choice - Checkbox - List - TextComponent 4. AWT - Menu 5. De AWT a Swing 6. Gestores de Diseño (LayoutManger) en Java 7. Manejo de Eventos en Java

🔹 Concepto y sintaxis de if y else

La sentencia if evalúa una condición booleana; si esta es verdadera, ejecuta el bloque de código asociado. De lo contrario, puede continuar con una alternativa usando else o una estructura else if, para ejecutar otro bloque de código.

🔹 Sintaxis:

En este caso, la ejecución depende del valor de la variable edad. Si la edad es mayor o igual a 18 va a imprimir “Acceso permitido”, en caso contrario va a imprimir “Acceso denegado”. Este tipo de decisión condicional es el núcleo de la lógica de control en Java (Schildt, 2021). Ejemplo básico:

Imagen 3. Sintaxis de condición booleana Imagen 3. Sintaxis de condición booleana

Imagen 4. Ejemplo básico de condición booleana Imagen 4. Ejemplo básico de condición booleana

🔹 Sentencias anidadas

Cuando se deben evaluar múltiples condiciones, es posible anidar estructuras if dentro de otras. Esta técnica debe emplearse con cuidado para evitar dificultades de lectura y mantenimiento del código. Ejemplo: Este ejemplo ilustra una toma de decisiones escalonada, muy común en aplicaciones educativas o empresariales.

🔹 Uso de operadores lógicos y relacionales

Los operadores relacionales (>, <, ==, !=, >=, <=) y lógicos (&&, ||, !) permiten combinar condiciones para tomar decisiones más complejas. La siguiente tabla resume los principales operadores utilizados en Java:

Imagen 5. Ejemplo de anidación de estructuras Imagen 5. Ejemplo de anidación de estructuras

Tipo de operador Ejemplo Ejemplo Relacional a > b Verdadero si a es mayor que b Lógico AND a > b && c < d Verdadero sólo si ambas condiciones se cumplen Negación !(a > b) Verdadero si la condición es falsa Lógico OR a > b || c > d Verdadero sólo si una o ambas de las condiciones se cumplen Tabla 2. Operadores relacionales y lógicos en Java Fuente: adaptado de Gaddis (2022) y Saini (2023)

🔹 Buenas prácticas en la implementación de decisiones

Para optimizar el código que emplea estructuras de decisión, se recomienda: ● Utilizar condiciones simples y legibles. ● Evitar la anidación excesiva de if. ● Incluir siempre un else que maneje casos no previstos (Schildt, 2021; Goodrich et al., 2014).

🔹 Ejemplo aplicado: cálculo de descuento según tipo de cliente

El siguiente fragmento combina estructuras condicionales para resolver un problema de lógica empresarial: En este ejemplo, el programa toma decisiones basadas en el tipo de cliente, aplicando reglas de negocio de forma automática, lo que demuestra la utilidad de estas estructuras para la resolución de problemas en contextos reales.

Imagen 6. Ejemplo de cálculo de descuento según cliente Imagen 6. Ejemplo de cálculo de descuento según cliente

El dominio de las estructuras de decisión es fundamental para crear aplicaciones inteligentes y adaptables. Su correcta aplicación permite que los programas interpreten condiciones, tomen decisiones autónomas y respondan de forma coherente a los datos de entrada. Este conocimiento fortalece la capacidad del programador para diseñar soluciones robustas y orientadas a los requerimientos funcionales del cliente (Gaddis, 2022; Goodrich et al., 2014).


⚙️ Estructuras de iteración

Las estructuras de iteración permiten ejecutar un bloque de instrucciones de manera repetitiva mientras se cumpla una condición determinada. Este tipo de estructura es clave para automatizar tareas, optimizar procesos y reducir la cantidad de código redundante dentro de un programa. En la Programación Orientada a Objetos (POO), los bucles facilitan que las clases y métodos repitan comportamientos de forma controlada y eficiente (Gaddis, 2022; Goodrich et al., 2014).

🔹 Concepto de bucle e importancia en la programación

Los bucles o ciclos controlan la repetición de instrucciones. Gracias a ellos, un programa puede procesar listas de datos, validar entradas o realizar cálculos sucesivos sin intervención manual. Su correcta implementación evita errores de ejecución y favorece la escalabilidad del código (Saini, 2023).

🔹 Estructura for: definición, sintaxis y ejemplos

El bucle for se utiliza cuando se conoce con antelación el número de repeticiones. Se compone de tres partes: inicialización, condición y actualización.

En esta sentencia, se debe declarar el valor inicial de la variable que moverá la ejecución del ciclo, luego definirla condición o pregunta que determina el fin del proceso y el incremento o decremento del valor de la variable inicial. Ejemplo: En este caso, la variable i se inicia en 1 y se incrementa hasta 5, mostrando el número de iteración en cada paso. Este tipo de ciclo es frecuente en procesos de conteo, impresión de listas o recorrido de arreglos (Schildt, 2021).

🔹 Estructura while y do while

Cuando no se conoce previamente cuántas veces debe repetirse un bloque, se emplean los ciclos while o do while. El primero evalúa la condición antes de ejecutar el bloque, mientras que el segundo lo hace después, garantizando al menos una ejecución (Gaddis, 2022).

🔹 Sintaxis

Imagen 7. Sintaxis de bucle for Imagen 7. Sintaxis de bucle for

Imagen 8. Ejemplo de uso de sentencia de iteración for Imagen 8. Ejemplo de uso de sentencia de iteración for

Ejemplo de while: En este ejemplo, se visualiza el uso de la sentencia while, de iteración. El código dentro de las llaves se ejecuta mientras la variable contador sea menor o igual a 3. Es importante considerar que el valor de a viale que maneja la pregunta de la condición (contador <= 3) debe alterarse dentro del bloque de código (contador++).

🔹 Sintaxis do while

🔹 Sintaxis While

Imagen 9. Sintaxis de la sentencia de iteración while Imagen 9. Sintaxis de la sentencia de iteración while

Imagen 11. Ejemplo de código en java del uso de do-while Imagen 11. Ejemplo de código en java del uso de do-while

Ejemplo de while:

Imagen 10. Sintaxis de la sentencia de iteración do-while Imagen 10. Sintaxis de la sentencia de iteración do-while

El uso de estas estructuras permite diseñar programas que esperan una condición de salida o validan datos ingresados por el usuario antes de continuar con el flujo general del sistema.

🔹 Control de flujo: sentencias break y continue

Las sentencias break y continue modifican el comportamiento normal de un bucle. break interrumpe la iteración completa, mientras que continue salta a la siguiente vuelta del ciclo. La siguiente tabla sintetiza su función y aplicación:

🔹 Aplicación práctica: iteraciones combinadas con decisiones

La combinación de estructuras de iteración y decisión permite desarrollar soluciones más dinámicas. El siguiente ejemplo muestra un programa que calcula los números pares entre 1 y 10 utilizando un ciclo for y una estructura condicional if:

Imagen 12. Ejemplo de código en java del uso de sentencia for, con Imagen 12. Ejemplo de código en java del uso de sentencia for, con

sentencia de control if Sentencia Descripción Ejemplo de uso break Finaliza el bucle sin seguir evaluando la condición. Detener un ciclo cuando se alcanza un valor específico. continue Omite una iteración y pasa a la siguiente. Saltar valores no deseados en una lista. Tabla 3. . Sentencias de control en estructuras de iteración Fuente: adaptado de Saini (2023) y Schildt (2021)

Este fragmento demuestra cómo los ciclos de iteración permiten procesar datos de forma automatizada, mientras que las decisiones controlan la lógica interna de cada repetición (Goodrich et al., 2014). El dominio de las estructuras de iteración es esencial para la creación de programas eficientes, modulares y reutilizables. Su correcta aplicación reduce la complejidad del código, mejora el rendimiento y permite implementar algoritmos que procesan grandes volúmenes de información sin errores. De esta forma, el programador desarrolla soluciones capaces de responder de manera dinámica y precisa a las condiciones cambiantes del entorno y las necesidades del cliente (Gaddis, 2022; Saini, 2023).

Durante esta segunda semana, consolidaste los fundamentos del control de flujo en la Programación Orientada a Objetos (POO), comprendiendo cómo los programas pueden reaccionar ante acciones del usuario y ejecutar tareas de manera dinámica y estructurada. El estudio del modelo de delegación de eventos te permitió reconocer la importancia de la comunicación entre los componentes de una interfaz gráfica y la lógica del programa, asegurando que las acciones respondan con precisión a los requerimientos del cliente (Hunt, 2002; Schildt, 2021). Asimismo, el análisis de las estructuras de decisión y estructuras de iteración fortaleció tu capacidad para implementar soluciones que evalúan condiciones, repiten procesos y optimizan la ejecución del código. Estas herramientas, aplicadas correctamente, permiten desarrollar programas interactivos, eficientes y adaptativos, capaces de resolver problemas reales dentro de entornos empresariales o tecnológicos (Gaddis, 2022; Saini, 2023; Goodrich et al., 2014). De este modo, los conocimientos adquiridos en esta unidad sientan las bases para construir aplicaciones más complejas que integren la interacción gráfica, la lógica de control y la automatización de procesos, pilares fundamentales en el diseño de software orientado a objetos.


💡 Conclusión

  • Gaddis, T. (2022). Starting Out with Java: From Control Structures through Objects (9.ª ed.). Pearson Education.

  • Goodrich, M. T., Tamassia, R., y Goldwasser, M. H. (2014). Data Structures and Algorithms in Java (6.ª ed.). Wiley.

  • Hunt, J. (2002). Java Programming and GUI Design. Springer.

  • Saini, S. K. (2023). Mastering Control Structures, Conditional Statements and Loops. Independently Published.

  • Schildt, H. (2021). Java: The Complete Reference (12.ª ed.). McGraw-Hill Education.



🚀 Potencia tus proyectos tecnológicos con Proyecto Luna

En Proyecto Luna desarrollamos arquitectura de software de alto rendimiento, optimización de bases de datos críticas y soluciones aplicadas de inteligencia artificial y automatización para empresas y profesionales.

  • 💼 Soluciones de ingeniería: Conoce nuestras capacidades y casos de estudio en proyectoluna.com/work/.
  • 🛡️ Seguridad y auditoría: Orientación técnica y respuesta ante incidentes en ¿Te han hackeado?.
  • 📩 Contacto directo: Escríbenos a través de nuestro formulario de contacto o a contacto@proyectoluna.com.

📚 Fuentes y lecturas recomendadas

Diagrama explicativo

Diagrama explicativo

CONTINÚA EXPLORANDO

ARTÍCULOS SUGERIDOS

Dilema ético en la toma de decisiones tecnológicas e informáticasInformática

Actos Humanos, Libertad y Dilemas Éticos en la Tecnología

Análisis de decisiones éticas: actos del hombre vs actos humanos voluntarios, consentimiento, privacidad de datos y dilemas en algoritmos de IA.

Representación conceptual de la dignidad de la persona y la ética del trabajoInformática

Dignidad de la Persona, Ética de las Virtudes y Excelencia Profesional

La persona como centro de la actividad técnica: dignidad intrínseca, virtudes cardinales y búsqueda de la excelencia en el ejercicio del trabajo.

Representación simbólica de la balanza de la justicia y la éticaInformática

Fundamentos de la Ética: Moral, Leyes y Responsabilidad Social

Distinción conceptual entre ética y moral: el origen de las normas de convivencia, relación con el ordenamiento jurídico y responsabilidad ciudadana.

VER TODOS LOS RECURSOS →

HABLEMOS DE TU CASO

¿Necesitas ayuda? Contáctanos y te contestamos!

SERVICIOS →