0%
Pular para o conteúdo principal
0%

2.4.2 Dados Etiquetados

Uma maneira de ver a abstração de dados é como uma aplicação do "princípio do menor compromisso". Na implementação do sistema de números complexos, podemos adiar a escolha entre a representação retangular e a polar. No entanto, eventualmente devemos escolher uma representação. E se quisermos que um único sistema trabalhe com ambas as representações?

Type Tags (Etiquetas de Tipo)

A solução é incluir uma etiqueta de tipo—o símbolo rectangular ou polar—como parte de cada número complexo. Isso nos permite distinguir entre formas polares e retangulares:

Carregando playground de código...

Representações Etiquetadas

Agora modificamos a representação de Ben e Alyssa para incluir etiquetas:

Carregando playground de código...

Seletores Genéricos

Agora podemos escrever seletores genéricos que verificam a etiqueta e chamam a função apropriada:

Carregando playground de código...

Construtores Genéricos

Os construtores escolhem automaticamente a representação mais conveniente:

Carregando playground de código...

Esta abordagem permite que diferentes representações coexistam no mesmo sistema. As operações aritméticas de nível superior (add_complex, sub_complex, etc.) não precisam saber qual representação está sendo usada—elas simplesmente chamam os seletores genéricos.

📝 Encontrou algo errado nesta página?

Sua ajuda é muito importante para melhorar a qualidade da tradução!

🐛 Encontrou um erro?

Se você encontrou:

  • Erro de tradução (palavra incorreta, termo técnico errado)
  • Erro de ortografia ou gramática
  • Link quebrado
  • Código de exemplo que não funciona
  • Problema de formatação

Reporte um bug →

❓ Tem uma dúvida?

Se você tem:

  • Dúvida sobre o conteúdo desta seção
  • Pergunta sobre um conceito do SICP
  • Dificuldade em entender algum exemplo
  • Questão sobre a tradução de algum termo

Inicie uma discussão →

💡 Tem uma sugestão de melhoria?

Se você quer sugerir:

  • Melhoria na explicação
  • Exemplo adicional
  • Recurso visual (diagrama, ilustração)
  • Qualquer outra ideia

Sugira uma melhoria →

🌍 Quer discutir a tradução?

Se você quer debater:

  • Escolha de tradução de algum termo
  • Consistência de terminologia
  • Nuances do português

Discussão de tradução →

Obrigado por ajudar a melhorar o SICP.js PT-BR! ✨