DEV Community

Ortiz de Arcanjo António David
Ortiz de Arcanjo António David

Posted on

1

Composição

Durante a implementação do software nos deparamos com várias abstrações do domímio do problema, que dificultam a codificação. A representação adequada destas abstrações podem ser influenciadas pela composição.
A composição está presente nos principais paradigmas de programação, tais como: Paradigma Funcional, Declarativo e Orientado a Objectos.

Composição de Classes

A composição possibilita reutilização de objetos, sem a necessidade de duplicar as classes instanciadas (objectos) na estrutura do sistema. Uma classe pode ter membros de outra classe ou pode ser composta por outras.
permite aproximar o projeto do software da vida real e viabiliza um projeto bem organizado.
A composição é reprentada por um losango, partindo da classe Composta para as suas partes (Classe A <>------- classe B).
Na orientação a objectos, a composição é muito usada para construir objectos complexos, repartindo em objectos simples.

Composição de Funções

Composição: é a criação de uma nova função por meio de uma junção de outras, realizando mais de uma atribuição em uma única chamada.
Uma função recebe como parámetro a outra e a saída é uma função.
No paradigma funcional, a composição pode ser feita usando:

  • Operador ponto(.): Usando funções de ordem superior(map, filter, reduce) e outras para a tranformação de valores;
  • Operador pipe (|>): Em linguagens como F# e Elixir, indicando que uma função recebe como parámetro a função anterior.

Composição de Consultas

A composição de consultas ajuda a tornar o código mais declarativo, legível e menos verboso. Usando outras abordagens, teríamos um código revestido de iterações e comparações e difícil de ler.

A composição de consultas pode ser feita usando:

  • Linguagem dos Sistemas Gerenciadores de Bases Dados (SQL e NoSQL). Em SQL é usado para construir consultas das mais simples as mais complexas.
  • Expressões LINQ e Streams nas linguagens: C#, F#, Java, Scala, Elixir e Haskell;
  • ORMs e _Micro ORM_s: através de Query Builders, escrevendo a consulta de forma encadeada, semelhante a da base de dados.

Observação: A composição pode ser utilizada como alternativa a Herança de classes, visto que a herança cria um forte acoplamento entre as classes.

Exemplos

  • Dados de um cidadão. Um cidadão possui dados pessoais, dados de saúde e endereço.
  • Obter dados de de um candidato numa base de dados de recrutamento.
  • Função para transformar um texto.
  • Função para transformar uma lista. A função deve obter o dobro da lista, filtrar os números menores que 30, ordenar e inverter a lista.
  • Função para transformar um texto. A função deve remover os espaços laterais, substituir as vírgulas por ponto e mostrar em letras maiúsculas. Linguagens: PHP, SQL e Elixir.

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Código fonte: https://www.github.com/ortizdavid/exemplo-composicao
Para mais artigos:
https://www.dev.to/ortizdavid
https://www.medium.com/@ortizaad1994

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay