Abstrações Corretas
Autor: Kênia | Publicado: 2017-02-13T22:49:00-02:00





Assunto abordado por Staa (2000), a escolha de abstrações corretas requer um bom planejamento da construção do código para que ele fique de forma mais simples possível e atenda aos requisitos necessários. Muitas vezes poderia ter sido criado um número menor de classes que o número implementado, e o aplicativo ficou mais complexo do que deveria. Um dos benefícios da escolha das abstrações corretas é diminuir a complexidade na medida do possível.

Para diminuir a complexidade do código, é necessário realizar esse planejamento para verificar quais classes realmente deverão ser criadas. Pode, muitas vezes, ser interessante, criar classes que implementem vários objetos ao invés de classes que implementem um único objeto pois, isso evita a criação de várias classes que poderiam ser uma só.

Durante esse planejamento do sistema por meio do projeto de sua arquitetura ou mesmo durante a construção de um simples diagrama UML, os engenheiros de software e desenvolvedores devem se atentar para as classes planejadas que não serão necessárias ou que poderiam ter suas funções encaixadas em outras classes. Eles devem se atentar também para os relacionamentos entre as classes e como devem ser implementados esses relacionamentos para que o programa fique menos complexo possível. Eles devem verificar ainda quais os métodos serão implementados em cada classe para que não haja duplicidade de código.

Ainda durante o planejamento, qualquer estrutura planejada para trabalhar como um componente do aplicativo que possuir um nome (substantivo) será uma classe. Os procedimentos realizados por essas classes e nomeados com verbos serão suas funções. As propriedades de cada um desses componentes que sejam nomeadas com adjetivos ou substantivos serão seus atributos.

Abstração é o ato de conhecer o que um código faz e não como ele faz. Abstrair depende do objetivo da abstração. Por exemplo, uma pessoa na perspectiva de um médico é diferente de uma pessoa na perspectiva de um Analista de Sistemas. Essas duas pessoas possuem características diferentes. As abstrações possíveis das construções de um programa podem ser realizadas por meio de:

• Função: conjunto de comandos que realiza algum tipo de operação, retorna um valor e pode causar efeito colateral.

• Procedimento: conjunto de declarações e comandos que sempre vão causar algum efeito colateral.

• Abstração de dados: estrutura com representação encapsulada que torna conhecidas somente as suas operações.

• Tipo Abstrato de Dados: tipo com representação encapsulada que torna conhecidas somente as suas operações.

• Tipo Abstrato de dados parametrizado: tipo com representação parametrizada e encapsulada que torna conhecidas somente as suas operações.

Funcões e procedimentos devem ser implementados como métodos de classes. Abstração de dados e tipos abstratos de dados são implementados como classes e tipos abstratos parametrizados são realizados por classes genéricas. Assim, encontrar as abstrações corretas equivale a identificar as abstrações de dados e os tipos abstratos de dados necessários à implementação da aplicação. Resumindo, para escolher corretamente as abstrações é necessário conhecer cada uma das abstrações possíveis, conforme a lista mostrada e verificar em cada caso, qual delas se aplica à construção de uma estrutura específica.

Referência:

STAA, A.D. Programação Modular: Desenvolvendo Programas Complexos de Forma Organizada e Segura. 1. ed. MA: Rio de Janeiro: Campus, 2000.