Universidade Federal de Minas Gerais Departamento de Ciência da Computação Programação Modular (DCC052) – 2014/1 Prof. Jefersson Alex dos Santos ([email protected]) Sistema de Busca por Anotação de Regiões em Imagens TP3 - Interface de Anotação 1 Descrição A terceira parte do trabalho prático consiste em implementar a interface gráfica de anotação de imagens. A interface deverá ser implementada como um módulo do projeto completo, tendo como requisitos as seguintes tarefas: 1. Mostrar uma dada imagem; 2. Permitir que o usuário selecione uma ou mais regiões da imagem com o mouse; 3. Mostrar as regiões selecionadas em tempo real. 4. Permitir que o usuário associe um conteúdo textual à imagem. O módulo deverá utilizar uma biblioteca externa de manipulação e renderização de imagens (Java2D, JAI, ImageJ, por exemplo). Um código de exemplo, utilizando o JAI, está disponı́vel em: http:// homepages.dcc.ufmg.br/~jefersson/cursos/dcc052/tp3.zip Note que o módulo deve ser implementado como uma parte independente dos outros componentes gráficos de interface com o usuário (botões, caixas de texto, etc). Isso significa que ele poderá ser reutilizado em diferentes aplicativos sem que seja necessária nenhuma alteração. Sugestão: embora a avaliação do projeto completo seja feita apenas no final do curso, aproveite este TP para projetar e iniciar a implementação do restante das classes necessárias para o módulo de anotação de acordo com a aplicação alvo (fenologia, área urbana, moda, etc). 2 Objetivos Os objetivos desse trabalho prático são: • Implementar um dos módulos do projeto prático da disciplina; • Exercitar conceitos de modularização e reutilização de código; • Ter um primeiro contato com manipulação de eventos em Java; • Utilizar uma biblioteca ou API externa em projeto. 1 3 Avaliação Cada dupla deverá entregar: • Relatório (três ou quatro páginas) explicando como o projeto foi modelado e o uso da biblioteca externa utilizada (vantagens/desvantagens). As seguintes perguntas devem ser respondidas: – Como o módulo implementando se comunicará com o restante do projeto? – É possı́vel alterar o módulo para implementar zoom? – Como outras funcionalidades poderiam ser inseridas no módulo? – Que refatorações poderiam ser feitas para melhorar o código atual? Por quê? • Arquivo .jar executável. O módulo deverá ser utilizado em um aplicativo capaz de: ler uma imagem do disco, anotar regiões e salvar tudo em um arquivo de propriedades. Sugestão: utilize a ferramenta Swing GUI Builder do NetBeans para criar os componentes dessa interface gráfica. • Código do módulo implementado. O código deve ser comentado de acordo com os padrões da ferramenta Javadoc1 . A distribuição dos pontos será feita da seguinte forma: 2 pontos para o relatório; 1 ponto para funcionamento correto do aplicativo executável e; 2 pontos para clareza e qualidade do código do módulo implementado (comentários Javadoc e integração com a biblioteca externa). 4 Referências Externas e Links Úteis Documentação e guia de instalação do Java e da Plataforma Eclipse: • http://www.ic.unicamp.br/~santanch/teaching/oop/oop0101.html Manipulação de eventos em Java: • Core Java 2 - Volume I Fundamentos, Capı́tulo 8. Interface gráfica em Java • Core Java 2 - Volume I Fundamentos, Capı́tulo 9. • Swing GUI Builder do NetBeans (Tutorial): https://netbeans.org/features/java/swing.html Arquivo de propriedades (properties) • Exemplo: http://www.mkyong.com/java/java-properties-file-examples/ Bibliotecas e APIs de manipulação e renderização de imagens • Java Advanced Imaging (JAI): Tutorial disponı́vel no Moodle. • Java 2D: Core Java 2 - Volume I Fundamentos, Capı́tulo 7 (Imagens). • ImageJ: http://www.imagesurvey.com.br/2009/02/como-usar-o-imagej/ 1 http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html 2