Curso Java. POO III. Vídeo 29

Curso Java. POO III. Vídeo 29

Introducción a la Programación Orientada a Objetos

Conceptos Básicos

  • Bienvenida al curso de programación en Java, centrándose en la programación orientada a objetos.
  • Se introducen dos términos clave: modularización y encapsulación.

Modularización

  • La modularización consiste en dividir un programa grande en partes más pequeñas o módulos, facilitando su manejo.
  • Ejemplo del equipo de audio antiguo que se compone de diferentes partes conectadas entre sí para funcionar como una unidad.

Aplicación Práctica

  • En el contexto de Java, se ha creado un programa con dos clases: Coche.java y UsoCoche.java, donde cada clase depende de la otra.
  • Si se elimina una clase, la otra no funcionará correctamente debido a su interdependencia.

Clase Principal y Método Main

  • En un programa Java con múltiples clases, siempre hay una clase principal que contiene el método main, desde donde comienza la ejecución del programa.
  • La clase UsoCoche tiene el método main, mientras que Coche no lo tiene. Esto determina cómo se inicia el flujo del programa.

Flujo de Ejecución

  • Al ejecutar el programa, comienza en el método main, creando un objeto de la clase Coche.
  • El operador new invoca al constructor de la clase correspondiente, estableciendo las propiedades del objeto (ej. ruedas, dimensiones).

Impresión de Resultados

  • Una vez completado el constructor, el flujo regresa al método principal para imprimir los resultados correspondientes (ej. "Este coche tiene 4 ruedas").

Consideraciones sobre Modularización

Modularización y Encapsulación en Java

Conceptos de Modularización

  • La modularización permite dividir aplicaciones complejas en bloques de código más pequeños, facilitando la depuración de errores. Se puede hacer creando varias clases o integrando todo dentro de una sola clase.
  • Es posible construir un método main dentro de la misma clase, eliminando la necesidad de archivos separados como usoCoche.java.
  • Al ejecutar el programa desde una única clase con un único archivo, se asegura que todo comience con el método main, lo que simplifica la ejecución del código.
  • Aunque es viable tener múltiples clases en un solo archivo, esto no es recomendable para programas más grandes, ya que complica la localización de errores y la adición de nuevas funcionalidades.
  • En programas compuestos por varias clases (más de dos), se sugiere crear cada clase en su propio archivo para mantener una estructura clara y organizada.

Estructura del Código

  • Un ejemplo práctico muestra cómo organizar cuatro clases dentro del mismo archivo: Coche, Camión, etc., cada una con sus variables y métodos correspondientes.
  • Es importante que siempre haya una clase pública que actúe como principal; esta debe contener el método main y dar nombre al archivo .java.
  • Las demás clases pueden ser privadas y no necesitan incluir el método main. Esto permite cierta modularidad aunque no sea óptima.
  • La falta de separación adecuada entre ficheros puede dificultar encontrar errores o agregar nuevas funcionalidades a medida que crece el proyecto.

Ventajas de la Modularización

  • Una buena práctica es tener diferentes ficheros para cada clase (por ejemplo, Coche, Camión, Moto) junto con una clase principal (UsoVehículos) para facilitar el mantenimiento del código.
  • Este enfoque modular permite que las distintas partes del programa funcionen juntas como un todo cohesivo.

Ejemplo Práctico

  • Se realiza un ejercicio donde se restaura la estructura original del código para demostrar cómo funciona correctamente tras los cambios realizados anteriormente.
  • El concepto central aquí es que dividir los programas en módulos facilita localizar errores y mejorar la organización general del código.

Introducción a la Encapsulación

¿Qué es la encapsulación en programación orientada a objetos?

Introducción a la modularización y comunicación entre clases

  • Se menciona que en programación, las clases se comunican mediante métodos, similar a cómo los equipos de audio se conectan con cables.
  • La comunicación entre varias clases requiere el uso del concepto de encapsulación, que asegura que ciertas funcionalidades solo sean accesibles desde su clase correspondiente.

Ejemplo práctico de encapsulación

  • Se utiliza un ejemplo de un equipo de audio donde el volumen puede ser controlado por diferentes módulos (pletina, reproductor de CDs, ecualizador).
  • Aunque se puede controlar el volumen desde una clase principal (clase 4), no se pueden realizar otras funciones como rebobinar o avanzar canciones desde esa misma clase.

Funcionalidades restringidas por encapsulación

  • La funcionalidad para rebobinar o avanzar debe estar restringida al módulo específico (pletina o reproductor), lo que ilustra la importancia de la encapsulación.
  • La encapsulación permite que ciertas acciones solo puedan ejecutarse dentro del contexto adecuado, evitando modificaciones indebidas desde otras clases.

Violación de datos e importancia de la encapsulación

  • En un ejemplo anterior sobre coches, se muestra cómo sin encapsulación, es posible modificar propiedades críticas como el número de ruedas incorrectamente.
  • Esto resulta en una violación de datos, ya que todos los coches deberían tener cuatro ruedas según su constructor.

Implementación práctica del modificador de acceso

  • Para evitar violaciones como cambiar el número de ruedas a tres, se introduce un modificador de acceso (private) para proteger las propiedades dentro de una clase.
  • Al aplicar private, las propiedades son inaccesibles desde fuera y solo pueden ser modificadas dentro del propio contexto (la propia clase).

Conclusión sobre la encapsulación

  • La implementación correcta del modificador private garantiza que los datos sensibles estén protegidos y no puedan ser alterados indebidamente desde otras partes del código.

Encapsulación en Programación Orientada a Objetos

Importancia de la Encapsulación

  • La encapsulación es fundamental para proteger las propiedades de una clase, evitando que sean modificadas desde fuera. Por ejemplo, no se debe permitir asignar un valor directamente a una propiedad como "rueda".
  • Se deben aplicar modificadores de acceso, como private, a todas las características comunes de la clase (largo, ancho, motor y peso), asegurando que estas propiedades permanezcan inviolables.

Propiedades Compartidas entre Objetos

  • Los objetos que pertenecen a una misma clase comparten ciertas propiedades (cuatro ruedas, mismo largo y ancho). Estas deben ser encapsuladas para mantener su integridad.
  • Aunque se pueden modificar los atributos desde dentro de la propia clase, no es posible acceder a ellos desde otras clases debido al uso del modificador private.

Métodos como Conexiones entre Clases

  • Para acceder a las propiedades encapsuladas (como el número de ruedas), se utilizan métodos. Estos actúan como interfaces que permiten interactuar con los atributos sin exponerlos directamente.
  • Al igual que los componentes de un equipo de audio están conectados por cables para funcionar juntos, en programación los métodos permiten que diferentes clases interactúen y compartan funcionalidades.

Resumen Final sobre Interacción entre Clases

  • La interacción entre clases mediante métodos es esencial para crear programas funcionales. Esto permite encapsular datos mientras se proporciona acceso controlado a ciertas funcionalidades.
Video description

En este vídeo tratamos los conceptos de modularización (ya mencionado en anteriores vídeos) y encapsulación. Para más cursos, ejercicios y manuales visita: http://www.pildorasinformaticas.com