Domina los fundamentos de la programación orientada a objetos en Java aplicando conceptos clave como clases, atributos, métodos y paquetes. Este contenido te muestra cómo estructurar una aplicación de streaming a través de ejemplos prácticos y recomendaciones esenciales para quienes inician en el desarrollo con Java.
¿Cómo se estructuran las clases y paquetes en Java?
En Java, los objetos se crean a partir de clases, que son plantillas donde se definen los atributos y comportamientos comunes. Se recomienda agrupar las clases relacionadas en paquetes para mantener el proyecto organizado. Por ejemplo, puedes tener un paquete llamado contenido para clases como Película y otro paquete plataforma para clases como Usuario.
Consejos clave: - Nombra las clases con mayúscula inicial y en singular. - Evita usar caracteres especiales como "ñ" en nombres de atributos. - Agrupa clases por funcionalidad usando paquetes como contenido o plataforma.
¿Cuáles son los atributos y métodos básicos de una clase Película?
La clase Película se define con atributos públicos que representan características como: - Título (String). - Descripción (String). - Duración (int). - Género (String). - Año de estreno (int). - Calificación (double). - Disponible (Boolean), para saber si está activa en la plataforma.
Respecto a los métodos: - Reproducir(): imprime el mensaje indicando que se está reproduciendo la película. - ObtenerFichaTecnica(): retorna un string con el título, año, género y calificación, separados por saltos de línea utilizando \n para mejorar la presentación. - Calificar(double calificación): acepta como parámetro una calificación que se valida para que esté entre 0 y 5, actualizando el atributo solo si es correcto. - EsPopular(): retorna si la película es considerada popular con base en su calificación (mayor o igual a 4).
Es buena práctica definir primero los atributos, luego los métodos. Utiliza this para distinguir entre los atributos de clase y los parámetros de métodos cuando tienen el mismo nombre.
¿Cómo se crean e instancian objetos en el main de Java?
La instanciación es el proceso de crear un objeto a partir de una clase. Por ejemplo:
Película pelicula =newPelícula();pelicula.titulo="El Señor de los Anillos";pelicula.anioEstreno=2001;pelicula.genero="Fantasía";pelicula.calificar(4.5);
Para visualizar la ficha técnica de una película, se utiliza el método definido e incluso se puede imprimir en la consola:
Las sugerencias que hacen herramientas como IntelliJ pueden acelerar el ingreso de datos y parámetros, aunque no es obligatorio usarlas para que los métodos funcionen correctamente.
¿Cómo reutilizar clases y métodos para entidades como Usuario?
Para modelar usuarios puedes crear una clase Usuario dentro de un paquete plataforma, separando responsabilidades en el programa. Un usuario puede tener: - Nombre. - Email. - Un método Ver(Película película) que recibe una película y utiliza los métodos de esa clase, ejemplificando la reutilización de clases como nuevos tipos de datos.
Así, puedes hacer que el usuario vea una película y ambos métodos colaboren mostrando mensajes en consola:
Esto demostrará cómo las clases interactúan entre sí, y cómo puedes construir una estructura sólida y ordenada en tus programas Java.
¿Qué otras recomendaciones aparecen para el desarrollo en Java?
Mantén separados los paquetes según el tipo de entidad o módulo para mayor claridad.
Sigue el orden: primero los atributos y luego los métodos en cada clase.
Utiliza mensajes claros al programar la salida en consola para facilitar el entendimiento.
Siempre valida los datos antes de asignarlos para evitar errores lógicos y asegurar la integridad de los atributos de los objetos.
Recuerda usar preguntas y participar activamente en la comunidad de aprendizaje, compartiendo dudas y aportando soluciones.
Tu participación es bienvenida en los espacios de discusión del sistema o comentarios. Comparte tu experiencia y resuelve dudas junto a otras personas en el proceso de aprendizaje.
📌 Instancia
Una instancia es un objeto que creas a partir de una clase.
La clase es como un molde, y la instancia es el producto hecho con ese molde.
Ejemplo:
Carro miCarro = new Carro(); // miCarro es una instancia de la clase Carro
Los atributos y métodos de instancia viven dentro de cada objeto.
Por eso cada objeto puede tener valores diferentes:
Carro carro1 = new Carro();carro1.color = "Rojo";
Carro carro2 = new Carro();carro2.color = "Azul";
📌 Estático (static)
Algo estático pertenece a la clase, no a un objeto específico.
No necesitas crear un objeto para usarlo. Todos los objetos comparten el mismo valor.
Ejemplo:
public static int numeroDeRuedas = 4;
Se usa así:
Carro.numeroDeRuedas = 4; // sin crear ningún objeto
💡 En resumen:
Instancia: necesitas un objeto para acceder → miCarro.color
Estático: lo usas directo con la clase → Carro.numeroDeRuedas
No importa lo básico que sea el curso, pienso que debe tomarse con la seriedad que merece. Además, es importante fomentar el uso del inglés en la programación, ya que no se programa en español. Si las personas que están comenzando ven este tipo de contenido, podrían creer que hacerlo en español está bien, y no lo es.
En Java, para utilizar clases de otros archivos .java que están en diferentes carpetas, se hace mediante la importación de paquetes. Las clases deben estar organizadas en paquetes, que son directorios que agrupan clases relacionadas.
Por ejemplo, si tienes un paquete llamado contenido y quieres usar una clase Película desde otro paquete, debes importarla en tu archivo principal con import platzi.play.contenido.Película;. Así, puedes instanciar objetos de esa clase y acceder a sus métodos y atributos.
Recuerda que estructurar bien tus paquetes es fundamental para mantener un código limpio y organizado.
Por favor deja la opción de saltarse esos mini examen que salen a mitad de los videos. Pueden ser útiles para algunos, pero también pueden ser muy molestos para otros. Con la opción de saltar tienes a todos contentos. O no pongas tantos.
El contenido del curso es excelente, pero el ritmo al introducir nuevos temas es demasiado rápido para asentar un aprendizaje profundo.
como explica el libro "Badass - Making users awesome" by Kathy Sierra, el problema es que estamos viendo muchas habilidades nuevas (clases, funciones, argumentos, etc.) de forma consecutiva. Esto provoca que el conocimiento se quede estancado en la 'Zona de Esfuerzo' (es decir, 'Puedo hacerlo, pero solo si pongo mucha atención y me cuesta trabajo').
Según los principios de la adquisición de experiencia, si no dedicamos tiempo suficiente a la práctica individual, esta 'Zona de Esfuerzo' se llena de conceptos inestables que son difíciles de usar más adelante.
Para construir bases sólidas, la solución es:
Dividir los temas grandes en sub-habilidades muy pequeñas.
Practicar activamente cada una hasta que se convierta en algo automático y confiable. y ahi si, seguir viendo el video, o pasar al siguiente.
Es fundamental tomarnos una pausa después de cada concepto para llevarlo al Dominio Automático antes de pasar al siguiente. Esta metodología es la que utilizan los expertos para asegurar que cada base de conocimiento sea sólida.
Si seguimos el rápido flujo del curso o incluso de cada video, solo estamos reuniendo un grupo de habilidades mediocres.
Wao esto es lo q la universidad no enseña tan puntualmente
Es lo que buscamos, Juan! 🚀
Realice el ejecicio y pense en estos atributos para Usuario :
publicclassUsuario{// ATRIBUTOS -> CARACTERISTICAS public String nombre; public String apellido; public int edad; public String email;
Y en estos métodos :
// Metodo -> Acciones public void usuario(){ System.out.println("El usuario es"+nombre); } //Metodo mostrar usuario public String MostrarUsuario(){ return nombre+"("+apellido+")\n"+"Edad ="+edad+"\nEmail = "+email; // return titulo +"("+anioEstreno+")\n" + "Genero:"+ genero +"\nCalificacion"+calificacion + "/5"; }}
Sólo esta clase ya me voló la cabeza 🤯, impresionante, qué buen curso
Está chévere el curso pero creo que va muy rápido con la explicación al crear los métodos y las clases. O lo de los paquetes. Toca volver a ver el video.
El profe se ve diferente a cuando dio los primero cursos o me da la impresión, me alegra la tranquilidad y la alegria con que transmite el conocimiento. Saludos
Gracias por notarlo Brayan, me siento muy alagado. ¡Saludos!
No logro entender por qué en el método calificar se envía un parámetro si cuando se estaba creando el metodo reproducir el profe dice que como ya tiene los atributos no necesita enviar parámetros.
La diferencia está en qué información necesita cada método para funcionar.
En reproducir() usamos directamente los atributos de la clase (como el nombre de la película), entonces no hace falta enviar nada desde fuera.
En calificar(double calificacion) necesitamos un dato nuevo que no está guardado todavía en la película: la calificación que le quiere dar el usuario. Por eso se envía como parámetro.
En resumen: si el método ya tiene todo lo que necesita dentro de los atributos, no requiere parámetros; pero si necesita información externa, ahí sí se los pasamos
Una pregunta en la Universidad nos estaban enseñando java y que era muy importante los constructores, por lo que veo el profesor ni los a mencionado, por lo que me pregunto si son importantes o es algo innecesario actualmente ?
Hola, depende.
Si lo quieres implementar como buena práctica, es una conversación que en un entorno laboral real tendrás que tener con tu equipo.
Si solo lo vas a usar para asignar valores, es más el boilerplate que agregas que una utilidad real.
Sin embargo, cuando se trata de ejecutar un código al momento de instanciar la clase, sí o sí los vas a necesitar.
A tu profesor le gusta como buena práctica pero no es la regla y a nivel de rendimiento no afecta en nada.
Hola 🙂 durante el ejercicio me aparecieron dos errores y me gustaría aclararlos:
El primero fue al usar la clase Pelicula dentro de Usuario. Me salió el error cannot find symbol class Pelicula y lo solucioné agregando import proyectoplatzi.play.contenido.Pelicula;. Este paso no lo vi en el video, ¿no era necesario o por qué aparece ese error?
El segundo fue al intentar usar la variable nombre desde Main. Me salió que tenía acceso privado y lo solucioné creando un setter setNombre. ¿Por qué ocurre este error si creé las variables como indicaba el curso?
Hola, respecto del error "acceso privado" de "usuario.nombre", el error se debe a que seguramente en la clase Usuario, la propiedad "nombre" la tienes como "private", en lugar de "public".
Si lo propiedad de la clase está como privada, no se puede acceder a su valor desde otra clase (incluido Main).
Saludos
hola no me aparece las automatizaciones de intellij cuando escribo codigo que hago
Buenas compañeros, espero se encuentren muy bien !!!
Disculpen si me adelante un poco a los temas, pero por que en el minuto 7:53 se declaran los valores de los atributos de esa forma y no usa el meto SET ?
Lo cual me lleva a la siguiente pregunta, cuando es bueno usar los metodos GET y SET ?
Agardezco mcuho su ayuda :D
Muy buena observación.
En este punto del curso se está usando la asignación directa (pelicula.titulo = "El señor de los anillos") porque todavía no hemos visto el tema de encapsulamiento. Más adelante, cuando aprendamos a usar getters y setters, vas a notar que esa es la forma más recomendada, ya que nos permite:
Proteger el estado de nuestros objetos, evitando que cualquiera modifique los atributos sin control.
Validar datos antes de asignarlos (por ejemplo, que una calificación no sea negativa).
Mantener consistencia en la lógica de negocio de la aplicación.
Por ahora está bien hacerlo de manera directa para simplificar, pero poco a poco vamos a mejorar el diseño de nuestras clases aplicando estas buenas prácticas. 🚀
En Java, es correcto usar parámetros en los métodos en varias ocasiones:
Reutilización de código: Permiten que un mismo método se pueda utilizar con diferentes valores, aumentando su flexibilidad.
Interacción con objetos: Los parámetros permiten que los métodos reciban datos de objetos o de otros métodos, facilitando el intercambio de información.
Configuración de comportamiento: Puedes modificar el comportamiento del método según los parámetros que le pases, permitiendo personalización.
Por ejemplo, en el caso del método calificar de la clase película, se usa un parámetro para establecer la calificación de la película.
El método calificar necesita un parámetro porque su función es asignar una calificación específica a la película. Este parámetro permite que diferentes películas puedan ser calificadas de manera independiente. Sin el parámetro, el método no tendría forma de saber qué calificación aplicar.
En el contexto de Java, el uso de parámetros en métodos es esencial para hacerlos más flexibles y reutilizables, permitiendo que se pasen diferentes valores cada vez que se llama al método. Esto se alinea con el principio de abstracción en la programación orientada a objetos, donde se busca separar la implementación del uso del objeto.
Muy buena esta clase, ya se va entendiendo el tema de la abstracción
✅
La ejecución no me sale bien :
Necesitas incluir el codigo para que se te pueda dar una sugerencia o ver como apoyarte.
1- Existe alguna forma para activar la AI con Intellij IDEA sin tener que suministrar una tarjeta?
2-Qué Plugins se sugieren tener instalados para este curso?
Sobre lo de la AI en IntelliJ IDEA: por ahora JetBrains requiere un método de pago registrado para activar esa función, incluso en periodo de prueba. No hay una manera oficial de usarla sin asociar tarjeta todavía.
En cuanto a plugins, uno que recomiendo bastante es SonarQube (https://plugins.jetbrains.com/plugin/7973-sonarqube-for-ide). Te ayuda a mantener un código limpio y con buenas prácticas desde el inicio, porque te va marcando posibles errores, problemas de estilo o incluso vulnerabilidades de seguridad en tiempo real mientras programas. Eso te va entrenando no solo para que el proyecto funcione, sino para que sea mantenible y profesional 🚀
Para la parte del uso de la AI, puedes apoyarte en un inicio con VSCode, como son aplicaciones de consolas y ahora seria algo basico que se estaria viendo en este curso, puedes apoyate con ese IDE, ademas que es gratuito.
El plugin que le puedes agregar se llama IntelliCode y Tambien El Pack De java y lo logras configurar.
Pero si estos son tus inicios trata de usar lo menos posible ese asistente y trata de comprender y praticar, ya luego que tengas mas destresa puedes apoyarte sin problema.