Posts Tagged ‘Arquitetura de software’
Semana da Computação Sociesc 2010
Na semana do dia 24 de agosto acontecerá na Sociesc da Marquês de Olinda um evento de computação que terá palestras, oficinas e minicursos relacionados a computação. Veja lista completa aqui
Eu estarei presente no evento assistindo as palestras, ministrando um minicurso e uma oficina.
O Minicurso será nos dias 24 e 25 de agosto pelo Microsoft Inovation Center (MIC), sendo seu responsável o Sr. Rodrigo Curvêllo. Este terá como foco as tecnologias Microsoft e conterá com 4 palestrantes e toda equipe comprometida do MIC. Os assuntos tratados serão:
- Introdução ao .Net Framework e ASP.NET (1h) -> Juliano Rinaldi da empresa Opentech
- Sql-Server 2008 (30min) -> Gustavo Renato Meyer da empresa Sonda Procwork
- SilverLight (30 min) -> Fernando Magno da empresa Easy Communication & Technology
- Domain Driven Design (1h) -> Lorival Smolski Chapuis da empresa Conceito W Sistemas
Cada um destes assuntos será tratado por um palestrante diferente, como vocês puderam perceber acima, sendo eu quem tratará de Domain Driven Desing do Eric Evans. Após o dia 25 estarei postando a apresentação aqui no blog e explicando um pouco mais sobre DDD.
Cada dia comportará 20 vagas totalizando 40, mas infelizmente ou felizmente, dependendo do ponto de vista, todas já estão lotadas.
A Oficina será uma sessão Dojo do JoinvilleDojo, ocorrendo no dia 25 de agosto durante toda a noite. Eu terei que me ausentar durante 1h para estar no mini-curso de DDD, porém Guilherme Oenning estará toda a noite guiando o Dojo. A linguagem a ser utilizada será C# e trabalharemos 2 katas, o restante só indo assistir para saber… hehehehe
A notícia boa é que ainda tem 5 vagas. Acesse o site da Sociesc e faça sua inscrição para o evento. É necessário criar um usuário para se inscrever.
Vamos participar, aprender e compartilhar. Encontro vocês lá.
Abrs a todos.
“Nada grandioso jamais foi criado sem entusiasmo”. Ralph Waldo Emerson
Padrão de projeto – parte 4: Facade
Design Pattern: Facade
Definição segundo GoF: Oferecer uma interface única para um conjunto de interfaces de um subsistema. Façade define uma interface de nível mais elevado que torna o subsistema mais fácil de usar.
Exemplo baseado no mundo real: A sala de estar…. ah! sala de estar, quanta beleza existe em uma boa e tecnológica sala de estar… quantos de nós já teve a maravilhosa idéia de montar seu home theater em sua sala de estar, tornando-a um fantástico embolado de fios e aparelhos eletro-eletrônicos? Pois bem, nosso objetivo aqui é criar uma sala simples e bacana tecnológicamente. Vamos precisar de:
- Uma TV 32 polegadas LCD (poderia ser LED eu sei, mas vamos pelo mais barato);
- Um DVD Player conectado a nossa TV;
- Um Aparalho de som 7.1 para usar como rádio/CD/MP3 para conectar com nosso DVD Player;
- Um PlayStation3 conectado a TV;
- Uma luz ambiente regulável.
Poderia ser mais coisas, mas vamos começar pelo simples. Agora você sentou no sofá e pegou na mão os controles:
- da TV;
- do DVD Playser;
- do aparalhode som;
- da luz ambiente.
Já imaginou o trabalho que vai ter para usar tudo isso integrado? E se tivessemos apenas um controle que reuni-se as principais funcionalidades destes 4 e ainda conecta-se nosso Play 3 junto? Não seria uma maravilha? Pois bem, este é o objetivo do Façade ou fachada: servir como uma interface única para um conjunto de interfaces.
Aplicações:
- Sempre que for desejável criar uma interface para um conjunto de objetos com o objetivo de facilitar o uso da aplicação;
- Reduzir a complexidade do relacionamento entre uma classe relativa ao cliente e as demais classes utilitárias [Junior, 2004];
- Redução de dependência entre o cliente e as classes existentes nos subsistemas, ocasionando a redução da coesão do sistema.
Vantagens:
- Permite que objetos individuais cuidem de uma única tarefa, deixando que a fachada se encarregue de divulgar as suas operações;
- Reduz dependências de compilação, possivelmente complexas ou circulares;
- Não evita que aplicações possam acessar diretamente as subclasses do sistema, se assim o desejarem [Junior, 2004];
Desvantagens:
- Necessário saber a classe concreta do criador de instâncias;
Observações:
- Fachadas são normalmente implementadas com singleton;
- Uma fachada apenas com métodos estáticos são chamadas de Utility.
Diagrama de classe:
Implementação em C#:
public class Client
{
public void Cooking() //-- Quando o cliente for cozinhar algo para comer...
{
//-- Código especialista
HomeTheaterFacade homeTheater = new HomeTheaterFacade();
homeTheater.WatchMovie();
//-- Código especialista
}
//-- Outros métodos úteis aqui
}
A codificação inteira deste post, juntamente com exemplos será feita em outro post.
Abrs a todos e até a próxima.
“Quando vemos um gigante, temos primeiro de examinar a posição do sol e observar para termos certeza de que não é a sombra de um pigmeu.” Friedrich Novalis
