(Created page with "== Problema == Considere o conceito de brinquedo, contendo as propriedades cor e peso. Considere ainda as especializações deste conceito: pião e corda de saltar. Os concei...") |
(→Solução) |
||
Line 17: | Line 17: | ||
public: | public: | ||
Brinquedo(float peso) : cor("branco"), peso(peso) {} | Brinquedo(float peso) : cor("branco"), peso(peso) {} | ||
− | Brinquedo(std::string cor, float peso) : cor(cor), peso(peso) {} | + | Brinquedo(const std::string &cor, float peso) : cor(cor), peso(peso) {} |
virtual void describe() const { | virtual void describe() const { | ||
Line 23: | Line 23: | ||
} | } | ||
− | bool operator==(const Brinquedo& other) const { | + | bool operator==(const Brinquedo &other) const { |
return cor == other.cor && peso == other.peso; | return cor == other.cor && peso == other.peso; | ||
} | } | ||
− | friend std::ostream& operator<<(std::ostream& os, const Brinquedo& brinquedo) { | + | friend std::ostream &operator<<(std::ostream &os, const Brinquedo &brinquedo) { |
os << "Brinquedo de cor " << brinquedo.cor << " e peso " << brinquedo.peso << " gramas"; | os << "Brinquedo de cor " << brinquedo.cor << " e peso " << brinquedo.peso << " gramas"; | ||
return os; | return os; | ||
Line 41: | Line 41: | ||
public: | public: | ||
− | Piao(std::string cor, float peso, float velocidade_rotacao) | + | Piao(const std::string &cor, float peso, float velocidade_rotacao) |
: Brinquedo(cor, peso), velocidade_rotacao(velocidade_rotacao) {} | : Brinquedo(cor, peso), velocidade_rotacao(velocidade_rotacao) {} | ||
Line 52: | Line 52: | ||
} | } | ||
− | bool operator==(const Piao& other) const { | + | bool operator==(const Piao &other) const { |
return Brinquedo::operator==(other) && velocidade_rotacao == other.velocidade_rotacao; | return Brinquedo::operator==(other) && velocidade_rotacao == other.velocidade_rotacao; | ||
} | } | ||
− | friend std::ostream& operator<<(std::ostream& os, const Piao& piao) { | + | friend std::ostream &operator<<(std::ostream &os, const Piao &piao) { |
os << "Pião de cor " << piao.cor << ", peso " << piao.peso << " gramas e velocidade de rotação " << piao.velocidade_rotacao << " RPM"; | os << "Pião de cor " << piao.cor << ", peso " << piao.peso << " gramas e velocidade de rotação " << piao.velocidade_rotacao << " RPM"; | ||
return os; | return os; |
Considere o conceito de brinquedo, contendo as propriedades cor e peso. Considere ainda as especializações deste conceito: pião e corda de saltar. Os conceitos pião e corda têm, respectivamente, a velocidade de rotação e o comprimento como propriedades adicionais. Considere que todos os brinquedos podem ser descritos (função describe), mas que apenas os piões giram (spin) e que apenas cordas oscilam (hop). Implemente em C++ as classes que representam estes conceitos: cada método dos anteriores deve ser implementado simplesmente com uma instrução que apresente uma cadeia de caracteres descritiva da acção. Implemente ainda os operadores de comparação (operator==) e de envio para um canal de saída (operator<<). Os brinquedos genéricos podem ser inicializados especificando-se apenas o peso (neste caso, a cor é branca), mas podem ser também inicializados especificando-se ambas as propriedades (a acção para o peso é idêntica à anterior). Os piões e as cordas são sempre inicializados com explicitação das suas respectivas propriedades, i.e., cor, peso e velocidade de rotação ou comprimento (conforme o caso). Construa uma aplicação ("main") que ilustre a utilização das classes.
As directivas #include foram omitidas.
[Expand] classe Brinquedo |
---|
[Expand] classe Pião |
---|
[Expand] classe Corda |
---|
Exemplo de função principal (outras seriam admissíveis).
[Expand] Função principal (main) |
---|