Design Patterns em Java – Introdução para iniciantes

Design Patterns em Java - Introdução para iniciantes

Design Patterns ou Padrões de Projeto são soluções testadas em diversos problemas pertencentes ao paradigma orientado a objetos.

Não podem ser descritas como novas soluções, porém pode-se dizer que são comuns e recorrentes em diversas problemáticas.

Tópicos que você vai ver

1. Origem dos Padrões de Projeto
2. Conceitos Básicos para a aplicação de Design Patterns
3. Por que aprender Padrões de Projeto

Origem dos Padrões de Projeto

Após o paradigma estruturado, surgiu a programação orientada a objetos.

Dentro deste paradigma era possível estruturar os dados, abstrair informações e dar manutenção ao código de forma mais ágil e menos complexa.

Foi por causa do livro Design Patterns: Elements of Reusable Objetc Oriented Software, que os padrões de projeto se popularizaram.

Este livro, também conhecido como GOF ou Gang of Four, descreve soluções relacionadas ao paradigma orientado a objetos.

Todo padrão de projeto tem o seu lado bom e o ruim. Não é porque se trata de uma solução testada que pode ser aplicado sem análise em qualquer código.

Para aplicar um padrão de projeto, é preciso analisar a estrutura do código e saber se é viável ou não.

Somente utilizar um padrão de projeto não é garantia de que o código tenha coesão.

É necessário saber usar, pois, cada padrão possui uma finalidade específica.

Conceitos básicos para a aplicação de Design Patterns

A programação orientada a objetos trabalha por meio de classes e objetos. Portanto, uma classe define a criação de um tipo e esse tipo pode ser instanciado, criando assim um objeto.

A classe abstrai um conceito da realidade e o objeto se torna a concretização dessa abstração.

Ou seja, um objeto é o concreto e a classe é a abstração.

Uma classe tem em si, estado e comportamento, que são os seus atributos e métodos.

Então, podemos dizer que, se uma classe tem uma determinada característica, um objeto terá um valor para esta característica.

Da mesma forma, uma classe possui um comportamento e o objeto executa esse comportamento.

Herança

A herança deriva exclusivamente da programação orientada a objetos. Ela permite que existam abstrações em diversos níveis.

Quando uma classe estende outra classe, dá-se um contrato entre elas.

A subclasse herda toda a estrutura de dados da superclasse, assim como o seu comportamento também.

Encapsulamento

Serve para garantir que as informações tratadas no código sejam protegidas e ocultadas ao usuário final.

Como exemplo do encapsulamento, há os métodos getters e setters, que acessam e modificam um objeto.

Interface

Uma interface é como um contrato entre duas ou mais classes.

A classe que implementa uma interface,obrigatoriamente tem de implementar os seus métodos.

Quando usar classe abstrata e interface

A principal diferença entre as duas classes é que a classe abstrata pode implementar os seus métodos e ter atributos, enquanto a interface não.

Assim, quando a abstração for um comportamento, uma ação que uma classe tenha de fazer, cria-se uma interface.Quando for um conceito apenas, classe abstrata.

Por que aprender padrões de projeto?

Ao conhecermos as soluções apresentadas pelos padrões de projeto, podemos aplica-las aos códigos quando necessário, tornando-os coesos e equilibrados, de acordo com os requisitos necessários.

Qual é a sua opinião?