title: Is it appropriate to define a non-trivial Scala case class?
body: <p>I'm defining a Scala class today, and I think "I need an <code>equals</code> method and a <code>hashCode</code> method; and a <code>copy</code> method would be handy too. I'll turn this into a case class." My class already has a bunch of other code, and is in no way trivial.</p>
  
  <p>So fine, it all works and everything, but when the text books deal with case classes, all of the examples define them for use as value classes or 'data transfer objects'. Is it appropriate to define a non-trivial case class? Is the thought process described above OK, or do I need to think of case classes differently?</p>