Introdução

Neste tutorial, vamos explorar o mundo do Smalltalk e como usar Seaside, um framework web reativo para desenvolvimento ágil de aplicações, em conjunto com Pharo, uma das implementações mais populares do Smalltalk. A proposta é mostrar como criar um microframework que permitirá o desenvolvimento rápido e eficiente de aplicações web. Ao longo do artigo, abordaremos desde a configuração do ambiente de desenvolvimento até a implantação de uma aplicação. A experiência em Smalltalk e Seaside será enriquecedora, não só para novos desenvolvedores, mas também para aqueles que já trabalham com outras linguagens e desejam expandir seus horizontes em linguagens de programação orientadas a objetos puro.

Etapas

  1. Configuração do Ambiente Pharo

    Comece baixando e instalando a versão mais recente do Pharo. Acesse o site oficial do Pharo e siga as instruções para o seu sistema operacional. Depois de instalar, inicie a imagem do Pharo e explore a interface. Você deve ter também o Seaside carregado na sua imagem.

    commands
    wget http://get.pharo.org/platform/69/Pharo-v9.0.0-linux64.zip
    unzip Pharo-v9.0.0-linux64.zip
    cd Pharo-v9.0.0
    ./Pharo

  2. Instalação do Seaside

    No ambiente Pharo, abra a ferramenta de carga de pacotes (Metacello) e execute os comandos abaixo para instalar o Seaside. Isso permitirá que desenvolvamos aplicações web usando o framework Seaside.

    commands
    Metacello new
    baseline: 'Seaside';
    repository: 'github://SeasideSt/Seaside:main';
    load.

  3. Criação de um Projeto Básico com Seaside

    Após a instalação do Seaside, vamos criar um componente básico utilizando o Seaside. Esse componente será uma simples página ‘Olá, Mundo!’. Criaremos uma nova classe chamada `HelloWorld` e configurá-la como uma aplicação Seaside.

    HelloWorld.st
    Object subclass: #HelloWorld
        instanceVariableNames: ''
        
    HelloWorld >> renderContentOn: html
        html heading: 'Olá, Mundo!'
        html paragraph: 'Bem-vindo ao Seaside com Pharo!'

  4. Configurando o Servidor Web

    Com o componente criado, precisamos registrar essa aplicação no Seaside e configurar o servidor web. No Pharo, você pode usar o seguinte código para registrar a aplicação e iniciar o servidor.

    commands
    WADispatcher default register: (WAAppWrapper new app: HelloWorld new) as: 'hello'.
    ZnServer startOn: 8080.

  5. Testando a Aplicação Web

    Agora que a aplicação está registrada e o servidor está rodando, abra um navegador e acesse a URL http://localhost:8080/hello. Você deverá ver a página ‘Olá, Mundo!’ que criamos anteriormente.

    commands
    # Abra o navegador e acesse a seguinte URL:
    http://localhost:8080/hello

  6. Implementando Funcionalidade Adicional

    Vamos agregar uma funcionalidade simples à nossa aplicação. Vamos criar um formulário que permite ao usuário enviar seu nome e receber uma saudação personalizada.

    HelloWorld.st
    HelloWorld >> renderContentOn: html
       html heading: 'Diga Ola!'
       html form: [
           html textInput: 'Digite seu nome';
           html submit: 'Enviar';
           html  onClick: [ :input | 
               html heading: ('Olá, ', input value) 
           ]
       ].

  7. Testes Unitários com Seaside

    A criação de testes unitários é essencial. Vamos implementar um teste simples para a nossa aplicação usando a classe `TestHelloWorld` que verifica se a renderização da página ocorre como esperado.

    TestHelloWorld.st
    Object subclass: #TestHelloWorld
        instanceVariableNames: 'app'
        
        TestHelloWorld class >> setUp
            app := HelloWorld new.
        
        TestHelloWorld class >> tearDown
            app := nil.
        
        TestHelloWorld >> testRender
            | response |
            response := app renderOn: WAHtmlCanvas new.
            self assert: (response = 'Olá, Mundo!').

  8. Executando Testes

    Após implementar os testes, execute-os para garantir que tudo funcione corretamente. Use o comando a seguir para executar os testes definidos.

    commands
    TestHelloWorld run.

  9. Encerrando o Servidor

    Por fim, ao concluir a implementação e testes da aplicação, não esqueça de parar o servidor para liberar os recursos.

    commands
    # Para parar o servidor em execução:
    ZnServer stop.

Conclusão

Neste tutorial, exploramos a linguagem Smalltalk e seu poderoso framework Seaside para o desenvolvimento ágil de aplicações. Passamos pela instalação do ambiente Pharo, criação de uma aplicação web básica, adição de funcionalidades e configuração de testes unitários. O Seaside proporciona uma forma única e reativa de desenvolver aplicações web e, ao usar o Pharo, você poderá aproveitar todo o poder do Smalltalk. Agora você está pronto para desenvolver aplicações mais complexas e explorar a riqueza dessa linguagem.

Hashtags

#Smalltalk #Seaside #Pharo #DesenvolvimentoÁgil #ProgramaçãoOrientadaAObjetos