DEV Community

Ortiz de Arcanjo António David
Ortiz de Arcanjo António 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)