Композиция vs наследование: практические правила в программировании