Esta é realmente uma questão decente. A questão real aqui é o uso do termo genérico "objeto", que pode ser um pouco ambíguo.
Geralmente, em uma linguagem OOP clássica, o termo "objeto" passou a significar "instância de classe". As instâncias de classe podem ser muito pesadas - propriedades públicas e privadas (e aquelas entre elas), métodos, herança, dependências, etc. Você realmente não gostaria de usar algo assim para simplesmente passar algumas propriedades.
Nesse caso, você está usando um objeto como um contêiner que simplesmente mantém algumas primitivas. Em C ++, objetos como esses eram conhecidos como structs
(e eles ainda existem em linguagens como C #). As estruturas foram, de fato, projetadas exatamente para o uso do qual você fala - elas agruparam objetos relacionados e primitivos quando eles tinham um relacionamento lógico.
No entanto, nas linguagens modernas, não há realmente nenhuma diferença entre uma estrutura e uma classe quando você está escrevendo o código , então você está bem usando um objeto. (Nos bastidores, no entanto, existem algumas diferenças que você deve estar ciente - por exemplo, uma struct é um tipo de valor, não um tipo de referência.) Basicamente, contanto que você mantenha seu objeto simples, será fácil para testar manualmente. Ferramentas e linguagens modernas permitem mitigar isso um pouco (através de interfaces, estruturas de simulação, injeção de dependência, etc.)