Crab Log

Entries categorized as ‘Smalltalk’

Dolphin Community Edition

Fevereiro 9, 2008 · Não Há Comentários

Instalei hoje o Dolphin Community Edition da

Quero investigar o MVP e as maravilhas que falam deste ambiente.

Categorias: Cotidiano · Smalltalk · Software · Tecnologia

Smalltalk Presenter First - Parte 1

Fevereiro 7, 2008 · Não Há Comentários

Lendo o artigo Big Complex, and tested? Just say “When” me animei a escrever código em Smalltalk para exercitar as idéias relativas ao método Presenter First e organização do código no estilo Model, View, Presenter. Iniciei um projeto simples para evitar me meter com complicações da interface gráfica com Morphs. A idéia é exibir um quadrado (um Morph) que vá mostrando as cores na sequência de cores red, green, blue, conforme se clica com o botão esquerdo do mouse (red button no jargão dos smalltalkers).

Começando com o Presenter primeiro

rgbsquarepresentercreation.png

O presenter mantém referências para model e view.

A classe RGBSquarePresenter conterá apenas a inicialização conforme abaixo:

rgbsquarepresenter-initializeevents1.png

O código acima expressa a user story até agora (quando o botão esquerdo for pressionado mudar a cor na interface do usuário para a próxima cor na sequência red green blue) , no estilo idiomático “say when”, decomposta em dois eventos:

  • Quando o botão esquerdo for pressionado mudar a cor no modelo para a próxima cor na sequência red green blue;
  • Quando a cor no modelo for alterada atualizar a cor na interface do usuário.

Nota: Os eventos nas user stories devem ser denominados com nomes de alto nível. No código na interface do usuário será feita a tradução dos eventos de baixo nível para os de alto nível: #redButtonPressed para #nextColor, como veremos adiante.

Podemos extrair os eventos e as interfaces necessários para a view e o model inspecionando initializeEvents.

Criando os testes do model primeiro

Dentro da filosofia test first vamos criar os testes para a classe do model:

presenterfirstmodeltestcase.png

testcoloraftercreation.png

testfirstnextcolorcall.png

testsecondnextcolorcall.png

testthirdnextcolorcall.png

Escrevendo o model para passar nos testes

O model para passar nos testes é o seguinte:

rgbsquaremodel.png

rgbsquaremodel-initialize.png

rgbsquaremodel-nextcolor.png

Nota: Omitiremos os accessors enquanto forem triviais.

Criando um trait para o idioma “say when”

Agora vamos instalar o sistema de eventos do idioma when: do:. Como na construção da interface do usuário usaremos herança da classe Morph não vamos poder usar o mesmo mecanismo para herdar os métodos necessários para os eventos. Usaremos então traits. Vamos definir o seguinte trait:

twhenidiom.png

twhenidiom-when-do.png

twhenidiom-fireevent.png

twhenidiom-events.png

Nota: O método revisit, que serve para colocação de comentários que podem ser revistados posteriormente, é baseado em Leaving Notes In Your Code do tutorial A Development Example for Squeak 3.9. Para descobrir onde foram colocadas chamadas para o método revisit basta usar a ferramenta Messages Names e obter os senders de revisit.

Nota: Para conhecer a tese sobre traits leia Traits — Composing Classes from Behavioral Building Blocks.

Usando o trait no model

Vamos incluir o trait criado no model (veja a segunda linha):

rgbsquaremodel-with-trait.png

Agora é necessário fazer override do glue method events, que é requerido:

rgbsquaremodel-events.png

Nota: O model, com o uso do trait, também está livre para usar herança em qualquer ponto da hierarquia de classes.

Encerramos a parte 1 aqui. Na parte 2 vamos tratar da interface gráfica do usuário.

Categorias: Smalltalk · Software · Tecnologia
Etiquetado: ,

Magritte

Dezembro 20, 2007 · Não Há Comentários

Magritte is a fully dynamic meta-description framework that helps to solve those problems, while keeping the full power to the programmer in all aspects. Moreover since Magritte is described in itself, you can let your users modify the meta-world and add their own fields and forms without writing a single line of code.

Links relacionados:

Categorias: Smalltalk · Software

Smalltalk,objects and design

Dezembro 8, 2007 · Não Há Comentários

Smalltalk,objects and design, de Chamond Liu, é um dos melhores livros que já li sobre orientação a objeto. Comprei um exemplar em 1997 e volta e meia o estou relendo. Nele fiz meu primeiro contato com o assunto Design Patterns que me fascinou bastante na época. Assim que pude consegui o livro da GoF para devorar. Lembro-me que achei interessante a história da origem dos patterns em um artigo de um arquiteto chamado Alexander. A ciência da computação volta e meia recebe inspiração externa como também foi o caso de os trabalhos de Chomsky em linguística terem mais sucesso e relevância para o desenvolvimento das linguagens de computadores do que para a própria linguística.

Categorias: Livro · Smalltalk · Software · Tecnologia

Squeak by Example

Dezembro 1, 2007 · 1 Comentário

Squeak by Example, o livro sobre Squeak baseado no excelente Smalltalk by Example, foi finalizado desde setembro de 2007.

Categorias: Livro · Notícias · Smalltalk

Model View Presenter Pattern

Novembro 28, 2007 · Não Há Comentários

Comprei uma revista Mundo Java (Edição 26 - SOA na Prática) para dar uma olhada nos artigos sobre SOA. Acabei topando com o artigo Testes de Unidade para Camadas de Apresentação no Mundo Real sobre o pattern Model View Presenter.

No artigo os autores mostram como o pattern viabiliza os testes envolvendo a interface do usuário. O conceito de que o que não pode ser testado com facilidade, como é o caso das interfaces do usuário, deve ser magro (desprovido ao máximo de lógica) é aplicado quando a View fica bem magra e a lógica que é normalmente colocada lá, como, por exemplo, para fazer o intertravamento entre campos preenchidos e habilitação de botões, é transferida para o Presenter. O fato é que as regras de negócio acabam “contaminando” a lógica que é colocada na View prejudicando a separação procurada no pattern Model View Controller. No artigo é mostrada a vantagem do pattern MVP na articulação dos testes por permitir mocks para a View e o Model já que os mesmos são representados por interfaces e não por implementações.

No pattern MVP o Presenter “conhece” a View e o Model mas estes não o “conhecem” e a comunicação com o Presenter é via notificações. Martins Fowler no seu artigo sobre GUIs analisa vários patterns e referencia o artigo ‘TwistingThe Triad‘ dos desenvolvedores do Dolphin Smalltalk (Que, infelizmente, está sendo descontinuado: Dolphin Smalltalk Discontinued) sobre o pattern MVP. Há também um split de Fowler em relação ao artigo inicial onde o pattern MVP é dividido em duas partes. Uma abordagem de desenvolvimento, Presenter First, é completamente baseada em MVP, testes de unidade e estórias do usuário.

Em Twisting the MVP (Model View Presenter) triad o Controller retorna para intergir com a View, sob o comando do Presenter, quando o Model não está envolvido.

Em Model-View-Presenter Framework uma análise detalhada é feita com exemplos em Smalltalk.

Em Apresentando Model-View-Presenter, o MVC focado na visualização os mais afeitos ao código em Java podem encontrar uma boa explanação.

O pattern Naked Objects também rompe com o MVC de uma forma interessante. Aqui há também uma interessante discussão a respeito.

Categorias: Smalltalk · Software · Tecnologia

Tutorial de Squeak

Novembro 23, 2007 · Não Há Comentários

O tutorial mudou de endereço. Continua no blog mas não será publicado mais em forma de posts. Agora será estruturado em páginas.

Categorias: Smalltalk · Software · Tecnologia · Tutorial

Seaside Tutorial - Software Architecture Group, Hasso-Plattner-Institut

Novembro 20, 2007 · Não Há Comentários

Terminado em outubro de 2007 o tutorial sobre o Seaside do Hasso-Plattner-Institut.

Categorias: Smalltalk · Software · Tecnologia · Tutorial · Web
Etiquetado: ,

Croquet movie

Outubro 23, 2007 · Não Há Comentários

Categorias: Smalltalk · Tecnologia · Vídeo

Croquet no Mac

Setembro 6, 2007 · Não Há Comentários

O Croquet no Mac funcionou bem já que encontrou hardware potente para as suas necessidades. No entanto senti dificuldade em comandar o coelho (avatar) com o mouse. A resposta é muito sensível e difícil de controlar.

Categorias: Mac · Smalltalk