Slide 1

Slide 1 text

TGIK Sealed Classes

Slide 2

Slide 2 text

Enums Utilidad ● Los subtipos posibles son limitados. ● Pueden tener atributos y funciones. Limitaciones ● Cada enum es una instancia única. ● Cada enum debe ser concreto, no puede representar o agrupar otra jerarquía. ● Todos los enums deben tener los mismos atributos y funciones.

Slide 3

Slide 3 text

Abstract Classes Utilidad ● Pueden crearse instancias de los subtipos. ● Un subtipo puede representar otra jerarquía. ● Cada subtipo puede tener atributos y funciones distintas respecto a los otros. Limitaciones ● Podrían crearse más subtipos de la clase abstracta.

Slide 4

Slide 4 text

Sealed classes ● Jerarquías cerradas o limitadas de clases ● Conjunto limitado de subtipos ● ¡Ahhh…! ¡Es igual que… pero con...!

Slide 5

Slide 5 text

Características de las Sealed classes ● La sealed class es abstracta. ● Todos los subtipos deben estar en el mismo archivo. ● Los subtipos pueden ser cualquier tipo de clase. ● El compilador puede ayudarnos cuando usamos if o when como expresiones.

Slide 6

Slide 6 text

¿Y si usamos when para definir bloques de código en lugar de como expresión?

Slide 7

Slide 7 text

val T.exhaustive: T get() = this

Slide 8

Slide 8 text

¿Por qué Kotlin no puede hacer lo mismo con las abstract classes?

Slide 9

Slide 9 text

¿Para qué son útiles? ● Estados de la vista. ● Parámetros necesarios para crear una vista. ● Respuestas posibles ante una acción. ● Patrón Strategy / State en general.

Slide 10

Slide 10 text

¿Preguntas?

Slide 11

Slide 11 text

Links útiles ● Kotlin docs: Sealed classes ● Kotlin vocabulary - Sealed with a class ● Sealed classes en Kotlin: los enums con superpoderes ● TIL: when is “when” exhaustive?

Slide 12

Slide 12 text

¡Gracias!