sexta-feira, 5 de fevereiro de 2010

Orientação a Estrutura

Os cursos de OO costumam ensinar a criar objetos que representam entidades do domínio do problema e a criar métodos para executar seus comportamentos. A verdade é que essa é uma péssima maneira de escrever sistemas.

Acho que isso acontece por que a maior parte dos professores universitários não gastou muito tempo de fato escrevendo programas orientados a objetos.

Olhando sistemas bem escritos, vejo que os tipos de classes estão divididas em:

  • Domínio - representam entidades do mundo real e não precisam ter métodos além dos necessários para encapsular dados;
  • Utilitárias - são classes para problemas recorrentes, como para gerenciar listas ou representar datas;
  • Estruturais - são as classes que dão estrutura ao sistema e que determinam quais os pontos de configuração ou extensão;
  • Comportamentais - são as classes que executam as tarefas-fim do sistema.
Então, dificilmente uma classe de domínio faz alguma coisa além de guardar dados relativos a uma entidade. Uma instância que representa uma pessoa pode guardar nome, data de nascimento, número de identidade, etc. Mas não precisa fazer nada além disso.

A tabela abaixo mostra uns exemplos de classes de cada tipo:

TipoExemplos
DomínioPessoa, Conta, Processo
UtilitáriasDate, ArrayList, BigDecimal
EstruturaController, Scheduler
ComportamentaisActions, DAOs, Views

Por isso, acho que é preciso ensinar programação de uma maneira diferente. No lugar de aprender escrevendo, seria mais interessante antes analisar programas escritos por pessoas experientes. Padrões de Projeto são um passo interessante nessa direção, mas não suficiente.

A melhor aula de programação que eu tive foi de Lisp, porque a professora estava acostumada a escrever muitos programas em Lisp.

Nenhum comentário: