Sobrecarga de Operadores com Dart

Douglas Possas
Flutter — Comunidade BR
2 min readJan 21, 2020

Pra quem está no mundo da programação, está acostumado a usar sobrescrita de métodos para mudar o comportamento de determinada ação, utilizando assim a especialização em uma herança.

O que pouco vi (sendo sincero eu nunca vi) em anos de trabalho, foi a utilização de sobrecarga de operadores. Talvez seja pelo fato de não ter a necessidade de uso, ou por não estar usando uma linguagem de programação que tenha suporte a esta característica, ou até mesmo desconhecimento da minha parte :(

Lendo a documentação oficial do Dart, achei interessante essa característica dos Override Operators e resolvi fazer um teste. Foi algo bem banal e apenas para fins de aprendizado, mas resolvi compartilhar.

A ideia é simples. Mudar o comportamento de determinado operador criando rotinas personalizadas que façam sentido ao nosso cenário.

No exemplo a seguir tenho uma bolsa de produtos (carrinho de compras) e adiciono um Produto à Bolsa com o operador +. Link para o DartPad aqui.

Para fazer uso desta maravilha, basta assinar o método com a palavra reservada operator, passar os parâmetros, definir o retorno (se necessário) e dar vida ao comportamento que deseja.

É bom salientar que nem todos os operadores podem ser sobrescritos, exemplo disso é o operador de diferenciação ( != ). Veja abaixo a lista de operadores que permitem a sobrescrita:

Achei legal essa abordagem, porque no mesmo método eu pude adicionar o item, somar o total dos itens e adicionar ao total da bolsa, e retornar o valor atual assim que o item é adicionado, evitando acessar outro método (um getter para o valor total da bolsa - ou ainda iterar os itens para somar).

Espero que tenha conseguido exemplificar a funcionalidade e como tirar um bom proveito da mesma.

Fique a vontade para me seguir/adicionar no LinkedIn ou comentar o artigo. Prometo retornar o mais breve possível.

Acompanhe meus vídeos no YouTube para aprender um pouco mais sobre Dart/Flutter: https://www.youtube.com/channel/UCjrkH176Ni8gPlQFXW0UYWQ

Até a próxima, pessoal!

--

--

Douglas Possas
Flutter — Comunidade BR

Desenvolvedor desde 2005, amante de tecnologia desde os 5 (cinco) anos de idade quando ajudava a copiar um livro para compilar o Snake Game em um CP 400 color!