quinta-feira, 11 de dezembro de 2008

Padrões de Projeto - Adapter

quinta-feira, 11 de dezembro de 2008
Prezados, no artigo anterior da série, falei sobre o padrão singleton e como o mesmo pode ser usado. Agora veremos sobre outro padrão de projeto chamado Adapter.

Adapter é um padrão que é usando quando se deseja adaptar sua classe para ser usada por outro objeto.

Exemplo:

Sua tomada em casa é de 2 pinos, mas o computador é de 3 pinos então usa-se um adaptador para ligar na tomada (beijamin).

O mesmo em Software:

tenho o seguinte problema:

Preciso comparar uma array de bytes com regex. só que regex somente aceita objetos do tipo CharSequence.
byte[] sca = "helo carlos".getBytes();   

Pattern p = Pattern.compile("^(?i)(helo) .+");   
Matcher m = p.matcher(sca);   
return m.matches();  


O código acima vai da erro, mas eu preciso usar array de bytes. o que fazer?

use um adaptador (Adapter) que adapta a array para ser usada como uma CharSequence,

veja a interface da charSequence:

public interface CharSequence {
int length();
char charAt(int index);
CharSequence subSequence(int start, int end);
public String toString();
}

Aqui está o adaptador:
public class CharSequenceByteArray implements CharSequence {

private byte[] buffer;

public CharSequenceByteArray(byte[] buffer) {
this.buffer = buffer;
}

public int length() {
return buffer.length;
}

public char charAt(int index) {
return (char) buffer[index];
}

public CharSequence subSequence(int start, int end) {
return new CharSequenceByteArray(Arrays.copyOfRange(buffer, start, end));
}
}

agora eu faço assim uso o adaptador:
byte[] sca = "helo carlos".getBytes();

Pattern p = Pattern.compile("^(?i)(helo) .+");
Matcher m = p.matcher(new CharSequenceByteArray(sca));
return m.matches();


Este código não da erro, porque eu adaptei uma interface em outra.

Isto é o padrão adapter.

Att. Carlos


Nenhum comentário :

Gerenciador de Projetos

quinta-feira, 11 de dezembro de 2008
Prezados,

Recentemente em minhas pesquisas pela net encontrei o trac, realmente achei muito bom a ferramenta mas ao pesquisar mais a fundo encontrei o RedMine um trac perfeito...

O Redmine é um gerenciador de projetos de TI, com ele você consegue saber como anda o seu projeto e controlar o desenvolvimento.

Tem ótimo suporte com sistemas de controle de Versão (CVS, SubVersion,GIT) e é multi-projeto.

Acessem a página do Redmine e confiram.

www.redmine.org


Nenhum comentário :

segunda-feira, 8 de dezembro de 2008

Piadas

segunda-feira, 8 de dezembro de 2008
... Arquivo não encontrado, falsifico? (S/N) ...


Nenhum comentário :

Padrões de projeto - Singleton

segunda-feira, 8 de dezembro de 2008
Quando estava iniciando o desenvolvimento orientado a objetos, sempre me perguntava, "para que serve um método estático?", "polimorfismo em que raios de situação usaria isto?", "há interfaces servem apenas para duplicar artefatos.".

E quanto mais passava o tempo mais as minhas pesquisas me mostravam que a orientação a objetos era algo de outro mundo, também para quem desenvolvia em Clipper e via muitas autoridades em programação falarem sobre a morte da orientação a objetos, que a orientação a objetos é ruim, que adiciona complexidade.

Hoje olhando para traz vejo que na verdade o que muitos destes tinham era medo da mudança, e de descobrir, tentar algo novo, o que me ajudou a ver a utilidade da orientação a objetos foi os padrões de projeto.

Quando estava iniciando o meu desenvolvimento em Java, acabei caindo em uma página que falava sobre padrões de projeto J2EE, mais especificamente o DAO. Agora sim me fazia sentido o uso de interfaces e outras coisas. Pude ver a utilidade de uma Factory, Interface, sobrecarga de métodos, etc. Afinal agora a coisa toda estava fazendo sentido.

Você também deve estar curioso, em ENTENDER o que é um padrão de projeto e como utilizá-lo. Pois bem, lá vai.

O que é um padrão de Projeto:

O modelo de programação orientado a objetos é um grande avanço visto que você pode componentizar e melhor organizar o seu sistema. Assim sendo podemos construir programas criando um conjunto de objetos e fazendo os mesmos conversarem entre sí para podermos obter um sistema. Um padrão de projeto é como uma receita de como construir os seus objetos e arranjá-los de forma que você consiga fazer o sistema ser fácil de manter. Vias de passagem manter um sistema não é uma tarefa fácil.

Portanto organizar o sistema de forma que o mesmo mude mais facilmente é muito desejável.

Os padrões de projeto se dividem em 3 partes, sendo que cada parte demonstra um padrão para uma área específica do sistema.
A divisão está entre padrões comportamentais, que mostram formas de os objetos interagirem entre si (comportamento), criacionais, mostrando a forma de criar objetos, e estruturais, no que tange as estruturas de seus objetos.

Nesta série de artigos veremos como os padrões podem nos ajudar, ao invés de apenas apresentar conceitos, veremos em que situações reais eles podem ser usados.

O primeiro padrão a ser apresentado será o Sigleton, este é um dos padrões mais simples de ser usado. E dependendo da situação ele pode ser realmente útil.

Até a próxima.


Nenhum comentário :

sexta-feira, 5 de dezembro de 2008

Maven - você deveria usar...

sexta-feira, 5 de dezembro de 2008
O que é o Maven é uma ferramenta indispensável para o desenvolvimento e gerenciamento de projetos, com certeza você como eu já ficamos de cabelo em pé, porque faltava alguma biblioteca no projeto, ou o sistema da erros estranhos simplesmente por falta de bibliotecas...

O Maven resolve isto de forma interessante, ele usa o conceito de dependência transitiva, assim o funcionamento se da através de um arquivo de configuração chamado POM, e um repositório de bibliotecas identificadas onde ao precisar de uma biblioteca por exemplo basta adicionar a sua identificação no arquivo POM que o Maven baixa a biblioteca no repositório local.

Estas são apenas algumas das funcionalidades do Maven.

Você com certeza todos deveriam usar.


Nenhum comentário :