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.javayUsoCoche.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
UsoCochetiene el métodomain, mientras queCocheno 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 claseCoche.
- El operador
newinvoca 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
maindentro de la misma clase, eliminando la necesidad de archivos separados comousoCoche.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
mainy 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
privategarantiza 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.