Contenido del curso
Pensando en objetos
Construcción de clases y modelado de objetos
- 10

Métodos estáticos para clases utilitarias en Java
08:43 min - 11

Constantes en Java: inmutabilidad con static final
04:08 min - 12

Constructores en Java para objetos con datos
08:10 min - 13

Gestión de memoria en Java: stack, heap y garbage collector
07:04 min - 14

Encapsulamiento en Java: Atributos privados y métodos getter y setter
09:26 min - 15

Listas en Java: agregar, recorrer y eliminar
11:12 min - 16

Asociación, agregación y composición en Java
03:45 min - 17

Menú interactivo en Java con switch
11:37 min - 18

Buscar y eliminar películas en Java
09:20 min
Estructuras de datos y Java moderno
- 19

Streams y lambdas para filtrar listas en Java
11:55 min - 20

Ordenar y transformar listas con streams en Java
11:49 min - 21

Validación de entrada con enums en Java
11:56 min - 22

Excepciones personalizadas en Java
08:16 min - 23

Records para simplificar código inmutable en Java
06:59 min - 24

Mapas en Java para contar visualizaciones de películas
09:47 min - 25

Leer archivos planos con Java nio
13:48 min - 26

Escribir en archivos planos con Files.writeString
09:50 min
Reutilización y diseño orientado a objetos
Clases y objetos en Java desde cero
Resumen
Crear objetos en Java empieza por entender que cada objeto nace de una clase, una especie de molde donde defines qué datos guarda y qué acciones puede ejecutar. Si estás aprendiendo programación orientada a objetos, dominar la creación de clases en Java es el primer paso para construir aplicaciones reales como una plataforma de streaming.
Aquí verás cómo organizar paquetes, declarar atributos, escribir métodos e instanciar objetos siguiendo un ejemplo práctico: una clase Pelicula y una clase Usuario dentro de un proyecto llamado Platzi Play.
¿Cómo se organiza un proyecto Java con paquetes?
Antes de crear cualquier clase, conviene estructurar el proyecto en packages para mantener el código ordenado y escalable.
Dentro de platzi.play se crea un paquete llamado contenido que albergará la clase Pelicula, y otro paquete hermano llamado plataforma para la clase Usuario. Esta separación refleja la lógica del dominio: el contenido por un lado y los actores que lo consumen por el otro [01:25].
¿Por qué usar paquetes en Java? Los paquetes agrupan clases relacionadas, evitan conflictos de nombres y hacen tu proyecto más mantenible cuando crece.
Una recomendación que se repite siempre: nombra las clases con la primera letra en mayúscula y en singular. Pelicula, no peliculas ni películas. Tampoco uses la ñ ni caracteres especiales, porque se consideran problemáticos en código.
¿Qué atributos y métodos definen una clase en Java?
Una clase tiene dos zonas claras: atributos arriba, métodos abajo. Esa convención facilita leer el código y entender qué representa cada objeto.
Atributos: los datos que guarda el objeto
La clase Pelicula declara estos atributos públicos:
String titulopara el nombre.String descripcionpara la sinopsis.int duracionpara los minutos.String generopara la categoría.int anioEstrenopara el año de lanzamiento.double calificacionpara la nota.boolean disponible, dondetrueindica que la película está activa en la plataforma yfalseque no lo está [02:30].
El tipo boolean en Java se escribe completo, no como en otros lenguajes donde se abrevia. Y los enteros usan int, mientras los decimales usan double.
Métodos: lo que el objeto puede hacer
La clase incluye cuatro métodos que dan vida a la película:
reproducir()no recibe parámetros y solo imprime un mensaje conSystem.out.printlnindicando qué título se está reproduciendo.obtenerFichaTecnica()retorna unStringcon título, año, género y calificación, usando\npara generar saltos de línea dentro del mensaje.calificar(double calificacion)recibe un parámetro y valida con unifque el valor esté entre 0 y 5 antes de asignarlo.esPopular()retorna unboolean: la película es popular si su calificación es mayor o igual a 4 [05:55].
En el método calificar aparece una palabra clave fundamental: this.
¿Para qué sirve
thisen Java?thisindica que te refieres al atributo del objeto, no al parámetro local. Sinthis, asignarías la variable a sí misma y el atributo nunca se actualizaría.
IntelliJ marca this.calificacion con un color distinto (lila o morado) para diferenciarlo del parámetro calificacion que llega al método. Esa distinción visual ayuda a evitar errores silenciosos.
¿Cómo se instancia un objeto a partir de una clase?
Una clase es solo el molde. Para usarla necesitas crear una instancia con la palabra reservada new.
En el main se escribe:
java Pelicula pelicula = new Pelicula(); pelicula.titulo = "El Señor de los Anillos"; pelicula.anioEstreno = 2001; pelicula.genero = "Fantasía"; pelicula.calificar(4.7); System.out.println(pelicula.obtenerFichaTecnica());
Esa operación se llama instanciar. A partir de un mismo molde puedes crear cuántas películas quieras, cada una con sus propios valores [08:40].
IntelliJ muestra automáticamente el nombre del parámetro al lado del valor (calificacion: 4.7) como ayuda visual, pero ese texto no forma parte del código real.
¿Cómo interactúan dos clases entre sí?
Una clase puede usar otra clase como tipo de dato, y ahí es donde la programación orientada a objetos se vuelve poderosa.
La clase Usuario vive en el paquete plataforma y define dos atributos básicos: nombre y email. También declara un método ver(Pelicula pelicula) que recibe un objeto Pelicula como parámetro [10:50].
Dentro del método ver, el usuario imprime un mensaje y llama a pelicula.reproducir(), reutilizando el comportamiento ya definido en la otra clase. Eso se llama composición: combinar objetos para construir comportamientos más complejos.
En el main el flujo queda así:
java Usuario usuario = new Usuario(); usuario.nombre = "Juan"; usuario.ver(pelicula);
La salida en consola muestra primero "Juan está viendo" y luego "Reproduciendo El Señor de los Anillos". Dos clases, dos responsabilidades, un solo flujo coherente.
¿Qué diferencia hay entre clase y objeto en Java? La clase es la plantilla que define estructura y comportamiento. El objeto es una instancia concreta creada con
new, con sus propios valores en memoria.
Con estos bloques (paquetes, atributos, métodos, this, instanciación y composición) ya tienes la base para modelar cualquier dominio en Java. ¿Qué otros atributos le agregarías a la clase Usuario para tu propia plataforma de streaming? Cuéntame en los comentarios.