What is the difference between an object and a companion? What are sealed classes and why do we need them? What is the Enum class? What is composition and what is aggregation? What are delegates?