One idea
Prefer composition when your object “has a” helper or part. Use inheritance only when your object truly “is a” specialised version of another object.
Composition keeps your feature easier to change. You can replace one part without rewriting the whole class.
Why this matters
In hackathon code, inheritance often starts clean and becomes confusing by demo day. A base class gets too many methods because every child needs something slightly different.
Composition avoids that. You build small classes and pass them into the feature class. The main class coordinates them.