In Scala, case classes are regular classes with the added feature of being immutable. This makes them great for modeling immutable data.
Case classes are useful for pattern matching, which is used for checking a value against a pattern and deconstructing it into its constituent parts.