Introdução ao Mundo Java

Aqui, veremos uma pincelada que o autor dá sobre assunto, o mundo Java. Passaremos por Design Patterns, Aspectos Técnicos, o que é o Java em si, frameworks etc.

[ Hits: 8.047 ]

Por: Guilherme em 30/03/2017 | Blog: http://sites.google.com/site/tecnologianapratica/


Design Patterns



Projetar software orientado a objetos é difícil, e projetar software reutilizável orientado a objetos é ainda mais difícil.

Você deve encontrar objetos pertinentes, classificá-los em classes com a granularidade correta, definir interfaces de classe e hierarquias de herança e estabelecer relações-chave entre eles. Seu projeto deve ser específico para o problema em questão, mas também geral o suficiente para resolver futuros problemas e exigências. Você também quer evitar o redesenho, ou pelo menos minimizá-lo.

Experientes designers orientados a objetos irão dizer-lhe que um design reutilizável e flexível é difícil, senão impossível de obter "certo" na primeira vez. Antes de um projeto terminar, eles geralmente tentam reutilizá-lo várias vezes, modificando-o cada vez.

No entanto, os designers experientes orientados a objetos fazem bons projetos. Enquanto isso, os novos designers estão sobrecarregados com as opções disponíveis e tendem a recorrer a técnicas não orientadas a objetos que já usaram antes.

Os novatos precisam de muito tempo para aprender o que é o bom design orientado a objetos.

Os designers experientes evidentemente sabem que algo inexperiente não. O que é isso?

Uma coisa designers especialistas não sabem fazer é resolver todos os problemas de primeiros princípios. Em vez disso, eles reutilizam soluções que funcionaram para eles no passado.

Quando encontrar uma boa solução, eles irão usá-la novamente e novamente.

Essa experiência é parte do que os torna especialistas. Consequentemente, você encontrará padrões recorrentes de classes e objetos de comunicação em muitos sistemas orientados a objetos.

Esses padrões resolvem problemas de design específicos e tornam os projetos orientados a objetos mais flexíveis, elegantes e, finalmente, reutilizáveis. Eles ajudam os designers a reutilizar projetos bem-sucedidos, baseando novos projetos em experiências anteriores. Um designer familiarizado com esses padrões pode aplicá-los imediatamente a problemas de design sem ter que redescobri-los.

Uma analogia ajudará a ilustrar o ponto. Novelistas e dramaturgos raramente desenham suas tramas a partir do zero. Em vez disso, eles seguem padrões pré estabelecidos como Macbeth, Hamlet etc ou "The Romantic Novel" (incontáveis romances).

Da mesma forma, os designers orientados a objetos seguem padrões como "representam estados com objetos" e "decoram objetos para que você possa facilmente adicionar / remover recursos". Uma vez que você conhece o padrão, muitas decisões de design seguem automaticamente.

Todos nós sabemos o valor da experiência de design. Quantas vezes você já teve o déja-vu do projeto - essa sensação que você resolveu um problema antes mas não saber exatamente onde ou como?

Se você pudesse lembrar os detalhes do problema anterior e como você resolveu, então você poderia reutilizar a experiência em vez de redescobri-la.

No entanto, não fazemos um bom trabalho de gravação de experiência em design de software para outros usarem.

Padrões de design tornam mais fácil reutilizar designs e arquiteturas.

Expressar técnicas comprovadas como padrões de design torna-os mais acessíveis aos desenvolvedores de novos sistemas.

Os padrões de design ajudam você a escolher alternativas de design que tornam um sistema reutilizável e evitam alternativas que comprometem a reutilização. Os padrões de design podem até mesmo melhorar a documentação e a manutenção dos sistemas existentes fornecendo uma especificação explícita das interações de classe e objeto e sua intenção subjacente.

Simplificando, os padrões de design ajudam um designer a obter um design "certo" mais rapidamente.

Alguns patterns que conheço ou que seria interessante colocar nesse artigo:
  • Criacional Patterns (É a existência (criação) de todas as coisas!)
  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype
  • Singleton

Structural Patterns (Patters Estruturais):
  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Façade
  • Flyweight

Behavioral Patterns (Padrões Comportamentais):
  • Iterator
  • Observer
  • Strategy
  • Template Method

Em geral resumindo, como em outras linguagens (não cuspindo no prato) o PHP não é muito discutido isso ou não é se dado a devida importância para tal ou ainda não comporta essa tal necessidade onde em linguagens mais complexas você ter Patterns ajuda você ter um melhor sistema e mais organiza e estruturado.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Design Patterns
   3. O que é Java - Modelos de programação
   4. Aspectos Técnicos
Outros artigos deste autor

Servidor de E-mails Falido?

Leitura recomendada

Java: Usando JInternalFrame de forma elegante

Funções Completas - Comunicação entre aplicações Android e FTP

Busca corporativa com Apache Solr - Motivação e conceitos

Preparando ambiente de desenvolvimento Android no Debian/Ubuntu

Java Native Interface

  
Comentários
[1] Comentário enviado por ricardoolonca em 17/04/2017 - 20:02h

Java, ou você ama, ou você odeia. E eu odeio.
Bem, eu não sou desenvolvedor, por isso não sou a melhor pessoa para falar sobre isso. Conheço um pouco de C (e seus derivados C++, C Sharp, etc), PHP, PERL, entre outras. Mas meu foco é infraestrutura. E debugar uma aplicação feita em Java é como traduzir hieróglifos. Fala-se de Java como sendo a oitava maravilha do mundo, mas na minha opinião ele é tudo o que não devia ser. Na época em que ele surgiu prometia fazer uma aplicação rodar em qualquer dispositivo DE FORMA FÁCIL, e a portabilidade nunca foi fácil. Dá pau de versão, biblioteca, endereçamentos, etc. A única aplicação feita em java que roda bem que conheço e o IRPF (por que será?), se bem que o IRPF também é a única aplicação do governo que funciona direito.
Mas não se ofenda. Essa é a opinião de um cara velho que não é desenvolvedor e, como já disse, não sou a melhor pessoa para comentar isso. Mas Java, ou você ama, ou odeia.


Contribuir com comentário