Tema: Aspectos Implementacionais de Interfaces Gráficas

                      Projeto Conceitual de Um Editor Gráfico 2D

Esta página foi organizada por: Vanio Fragoso de Melo

[Vanio F. de Melo, José A. L. Minchola e Mercedes G. Marques] [Harlen C. Batagelo] [Jorge Kawamura e Paulo G. Seifer] [Luiz F. S. Wetzel]

Objetivo

Nesta página trataremos do projeto conceitual, mais especificamente, da coleta de requerimentos de um Editor Gráfico 2D simples. As especificações de requerimentos deve preocupar-se com a compreensão das necessidades. É um processo analítico em que representações do sistema são produzidas que não somente descreve o que é requerido mas também auxilia na análise de situações. Os requerimentos de um sistema pode ser considerado em três categorias. O requerimento funcional que especifica o que o sistema deve fazer. O requerimento de dados que especifica a estrutura do sistema e os dados que devem está disponíveis para que o processamento seja bem sucedido. O requerimento de usabilidade que especifica o nível de performance e satisfação com o sistema.

O nosso Editor Gráfico 2D tem as seguintes funcionalidades: criar, deletar, mover, redimensionar, rotacionar e mudar o estilo de desenho (dash, dotted, solid) que agem nas primitivas gráficas linha, retângulo, triângulo e circunferência.
 
 

Projeto Conceitual: Especificações de Requerimento

2a Lista de Exercícios

Grupo 1: Vanio Fragoso de Melo

  José Antonio Lujan Minchola

  Mercedes Rocio Gonzales Marquez

Comentários
1) Criar linha, triângulo, retângulo e circunferência;
2) Deletar objetos criados;
3) Mover objetos criados;

4) Redimensionar objetos criados;

5) Rotacionar objetos criados;

5) Mudar o estilo.

As restrições do sistema são:

1) Estabelecer um estilo por DEFAULT;

2) Os estilos considerados são: dash, dotted, solid;

3) Estabelecer a cor de desenho e a cor de fundo.

1. Requerimentos Funcionais

São apresentados: Neste nivel foram apresentadas apenas as funcionalidades consideradas para linha. Quanto a circunferência, triângulo e retângulo seguem de forma análoga.

2. Requerimentos de Dados

2.1-Dicionário de Dados

a) Fluxo de dados

opção= opção#

opção_linha= opção+ opção# válida (encaminhar_opção =Y)

opção_triângulo= opção+ opção# válida (encaminhar_opção =Y)

opção_retângulo= opção+ opção# válida (encaminhar_opção =Y)

opção_circunferência= opção+ opção# válida (encaminhar_opção =Y)

subopção1= subopção_linha + subopção_linha# válida (encaminhar

subopção_linha = Y)

subopção2=subopção_triângulo +subopção_triângulo# válida ( encaminhar

subopção_triángulo = Y)

subopção3=subopção_retângulo + subopção_retângulo# válida ( encaminhar

subopção_retângulo = Y)

subopção4 =subopção_circunferência + subopção_circunferência# válida ( encaminhar

subopção_circunferência = Y)

subopção_linha1= subopção1 + subopção1# válida ( encaminhar

subopção_linha1 = Y)

subopção_triângulo1= subopção2 + subopção2# válida ( encaminhar

subopção_triângulo1 = Y)

subopção_retângulo1= subopção3 + subopção3# válida ( encaminhar

subopção_retângulo1 = Y)

subopção_circunferência1= subopção4 + subopção4# válida ( encaminhar

subopção_circunferência1 = Y) (Ver nota )

dados criação_linha= ponto1_linha + ponto2_linha

dados eliminação_linha= objeto selecionado

dados mover1_linha = novo ponto + objeto selecionado

dados mover2_linha = novo ponto1 + novo ponto2 + objeto selecionado

dados estilo_linha = objeto selecionado + estilo

dados criação_triângulo= ponto1_triângulo + ponto2_triângulo + ponto3_triângulo

dados eliminação_triângulo= objeto selecionado

dados mover1_triângulo = novo ponto + objeto selecionado

dados estilo_triângulo = objeto selecionado + estilo

dados criação_retângulo= ponto1_retângulo + ponto2_retângulo

dados eliminação_retângulo= objeto selecionado

dados mover1_retângulo = novo ponto + objeto selecionado

dados estilo_retângulo = objeto selecionado + estilo

dados criação_circunferência= centro + raio

dados eliminação_circunferência= objeto selecionado

dados mover1_circunferência = novo ponto + objeto selecionado

dados estilo_circunferência = objeto selecionado + estilo

Nota.- Os fluxos de dados subopção_linha?, subopção_retângulo?, subopção_triângulo?, suopção_circunferência? não consideradas, seguem de forma análoga.

b) Elementos de dados

opção# = identificador da opção.

opção_encaminhada = Y opção# válida, N não válida.

subopção_linha# = identificador das subopções de linha.

subopção_triângulo# = identificador das subopções de triângulo.

subopção_retângulo# = identificador das subopções de retângulo.

subopção_circunferência# = identificador das subopções de circunferência.

subopção_linha_encaminhada = Y subopção_linha# válido, N não válido.

subopção_triângulo_encaminhada = Y subopção_triângulo# válido, N não válido.

subopção_retângulo_encaminhada = Y subopção_retângulo# válido, N não válido.

subopção_circunferência_encaminhada = Y subopção_circunferência# válido, N não

válido.

ponto1_linha = ponto inicial da linha.

ponto2_linha = ponto final da linha.

ponto1_triângulo = primeiro ponto do triângulo.

ponto2_triângulo = segundo ponto do triângulo.

ponto3_triângulo = terceiro ponto do triângulo.

ponto1_retângulo = vértice inferior esquerdo do retângulo.

ponto2_retângulo = vértice superior direito do retângulo.

centro = centro da circunferência.

raio = raio da circunferência.

objeto selecionado = pixels do objeto.

novo ponto = nova posição de referência para cálculo dos acréscimos.

novo ponto1 = nova posição do ponto1.

novo ponto2 = nova posição do ponto2.

estilo = estilo dash ou dotted ou solid.

c) Processos

c.1-Processos para a opção linha

(1) Algoritmo de desenho para criar -Iniciar com evento dados_criação_linha

consiste de:

(1.1) Fixar cor diferente do fundo;

(1.2) Desenhar a linha usando o algoritmo de construção.

(2) Algoritmo de desenho para deletar -Iniciar com evento eliminação_linha

consiste de:

(2.1) Fixar cor do fundo;

(2.2) Desenhar a linha usando o algoritmo de construção.

(3) Transladar objeto -Inicia com evento dados mover1_linha

consiste de:

(3.1) Cálculo do acréscimo em função do novo ponto para cada pixel do objeto. Somar acréscimo.

(4) Adicionar e/ou apagar linhas -Iniciar com evento dados_move2_linha

consiste de:

(4.1) Se novo ponto1 pertence a linha, apagar linha entre ponto1 e novo ponto se não adicionar linha entre ponto1 e novo ponto1;

(4.2) Se novo ponto2 pertence a linha, apagar linha entre ponto2 e novo ponto, senão adicionar linha entre ponto2 e novo ponto2.

(5) Muda Estilo -Inicia com evento dados_estilo_linha

consiste de:

(5.1) Criar padrão para estilo escolhido;

(5.2) Desenhar linha usando algoritmo de construção.

c.2-Processos para a opção triângulo

(1) Algoritmo de desenho para criar -Iniciar com evento dados_criação_linha

consiste de:

(1.1) Fixar cor diferente do fundo;

(1.2) Para cada par de pontos ingressados fazer chamada a criar linha.

(2) Algoritmo de desenho para deletar -Iniciar com evento eliminação_triângulo

consiste de:

(2.1) Fixar cor do fundo;

(2.2) Desenhar o triângulo usando o algoritmo de construção.

(3) Transladar objeto -Inicia com evento dados mover1_triângulo,

consiste de:

(3.1) Cálculo do acréscimo em função do novo ponto para cada pixel do objeto. Somar acréscimo.

(4) Muda Estilo -Inicia com evento dados_estilo_triângulo

consiste de:

(5.1) Criar padrão para estilo escolhido;

(5.2) Redesenhar triângulo.

c.3-Processos para a opção retângulo

(1) Algoritmo de desenho para criar -Iniciar com evento dados_criação_retângulo

consiste de:

(1.1) Fixar cor diferente do fundo;

(1.2) Determinar os pontos superior esquerdo e inferior direito em função dos pontos ingresados;

(1.3) Para cada par de pontos com uma das coordenadas iguais, criar linha.

(2) Algoritmo de desenho para deletar -Iniciar com evento eliminação_retângulo

consiste de:

(2.1) Fixar cor do fundo;

(2.2) Desenhar o retângulo usando o algoritmo de construção.

(3) Transladar objeto -Inicia com evento dados mover1_retângulo,

consiste de:

(3.1) Cálculo do acréscimo em função do novo ponto para cada pixel do objeto. Somar acréscimo.

(4) Muda Estilo -Inicia com evento dados_estilo_retângulo

consiste de:

(5.1) Criar padrão para estilo escolhido;

(5.2) Redesenhar retângulo.

c.4-Processos para a opção circunferência

(1) Algoritmo de desenho para criar -Iniciar com evento dados_criação_ circunferência

consiste de:

(1.1) Fixar cor diferente do fundo;

(1.2) Desenhar circunferência usando o algoritmo de construção.

(2) Algoritmo de desenho para deletar -Iniciar com evento eliminação_circunferência,

consiste de:

(2.1) Fixar cor do fundo;

(2.2) Desenhar o circunferência usando o algoritmo de construção.

(3) Transladar objeto -Inicia com evento dados mover1_circunferência,

consiste de:

(3.1) Cálculo do acréscimo em função donovo ponto para cada pixel do objeto. Somar acréscimo.

(4) Muda Estilo -Inicia com evento dados_estilo_circunferência

consiste de:

(5.1) Criar padrão para estilo escolhido;

(5.2) Redesenhar circunferência.

2.2-Diagrama de relação de Entidades

É apresentado na Figura 4.

3. Requerimento de Usabilidade

Pretendemos criar um sistema simples (poucos comandos), de fácil aprendizagem (usando menu e ícones) e que permita a realização de poucas tarefas. Não temos a intenção de atingir um específico público alvo. Nosso objetivo é atingir as metas do problema proposto. Não realizamos a coleta de dados para o conhecimento do perfil e necessidades do usuário, mas levamos em consideração  a análise de alguns sistemas similares já existente.
 
 

Projeto Conceitual: Especificações de Requerimento

2a Lista de Exercícios

Grupo 2: Harlen C. Batagelo
 
 

1 - PROJETO CONCEITUAL

1.1 - REQUERIMENTOS FUNCIONAIS

   Inserir primitivas gráficas.    Definir formatação das primitivas a serem inseridas.    Formatar primitiva após ter sido inserida.    Mover primitiva.    Alterar pontos de controle da primitiva.    Apagar primitiva.    Salvar desenho em arquivo.    Recuperar desenho de arquivo.

1.1.1 - RESTRIÇÕES

   Primitivas gráficas possíveis: linhas, triângulos, retângulos e elipses.    As primitivas só podem ser formatadas na largura, estilo e cor de suas linhas de contorno.    Larguras possíveis: muito fina (1 pixel), fina (8 pixels), média (16 pixels), grossa (24 pixels) e muito grossa (32 pixels).    Cores possíveis: preto, azul, verde, ciano, vermelho, magenta, amarelo e branco.    Estilos possíveis: sólido, traçado, pontilhado.    Os estilos só são aplicados em linhas com largura ?muito fina? (1 pixel).    Triângulos, retângulos e elipses não possuem preenchimento.    Somente uma primitiva pode ser formatada de cada vez.

1.2 - REQUERIMENTOS DE DADOS

1.2.1 - ATRIBUTOS DAS PRIMITIVAS GRÁFICAS

LINHA:

   Coordenada inicial.    Coordenada final.    Largura, cor e estilo da linha.

TRIÂNGULO:

   Vértice 1.    Vértice 2.    Vértice 3.    Largura, cor e estilo do contorno.

RETÂNGULO:

   Coordenada inicial (e.g.: ponto superior esquerdo).    Coordenada final (e.g.: ponto inferior direito).    Largura, cor e estilo do contorno.

ELIPSE:

   Coordenada inicial da caixa envoltória contendo a elipse.    Coordenada final da caixa envoltória contendo a elipse.    Largura, cor e estilo do contorno.
 
 

Projeto Conceitual: Especificações de Requerimento

2a Lista de Exercícios

Grupo 3: Luiz Fernando Stein Wetzel

Requerimentos:

18. Propriedades do Triângulo:
19. Propriedades do Retângulo:
20. Propriedades do Círculo:
Projeto Conceitual: Especificações de Requerimento

2a Lista de Exercícios





Grupo 4: Jorge Kawamura e Paulo Guilherme Seifer
 
 

Requerimentos para um Editor Gráfico 3D





1. Requerimentos de usuário:

2. Requerimentos funcionais: