DEV Community 👩‍💻👨‍💻

Ortiz de Arcanjo Antonio David
Ortiz de Arcanjo Antonio David

Posted on

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

Top comments (0)

DEV

Thank you.

 
Thanks for visiting DEV, we’ve worked really hard to cultivate this great community and would love to have you join us. If you’d like to create an account, you can sign up here.