Translating Adjectives

Transcrição

Translating Adjectives
Laboratório II – Trabalho A
Universidade do Vale do Rio dos Sinos
Professor Mateus Raeder
Translating Adjectives
Quando vamos dar qualidade em português usamos, por exemplo, “carro branco enferrujado”,
onde o substantivo vem antes dos adjetivos. Em inglês, entretanto, usaríamos “rusty white car”, onde o
substantivo aparece sempre depois dos adjetivos. Assim sendo, a posição do adjetivo em inglês é
invariável, vem sempre antes do substantivo que vai modificar.
A ordem dos adjetivos no inglês é sempre assim: adjetivos de opinião (beautiful, nice, great etc)
seguidos de adjetivos de fatos reais (black, big, French etc). Por exemplo: great orange car (great é a
opinião, orange é o fato e car o substantivo). Entre os adjetivos que expressam fatos reais, ainda existe
uma ordem: tamanho, idade, forma, cor, origem, material, finalidade. Por exemplo:
Big new square white French wooden table
Small old blue Chinese writing pen
Neste contexto, o seu trabalho será criar um programa em Java que lê um texto em inglês
informado pelo usuário e traduzi-lo para o português. Este texto conterá apenas um substantivo, sendo
este qualificado por um ou mais adjetivos, conforme os exemplos supracitados.
O Trabalho
Seu programa deverá ter (no mínimo) as seguintes classes (todas com os métodos de acesso aos
atributos):
- Adjetivo: possui um atributo chamado ingles (referente ao adjetivo sem tradução), um atributo
chamado portugues (a tradução do adjetivo) e um atributo chamado count (que será responsável por
contar quantas vezes este adjetivo foi usado).
- Substantivo: possui um atributo chamado ingles (referente ao substantivo sem tradução), um
atributo chamado portugues (a tradução do substantivo) e um atributo chamado count (que será
responsável por contar quantas vezes este substantivo foi usado).
- Tradutor: esta classe possui uma lista de adjetivos e uma lista de substantivos (ambas do tipo
ListaSequencialGenerica). Além disto, possui uma estrutura do tipo pilha (do tipo
PilhaSequencialGenerica).
 Esta classe será responsável por realizar o processo de tradução, e no seu construtor será
recebido o tamanho das duas listas (que possuem o mesmo tamanho), uma String com o nome do
arquivo para inicializar a lista de adjetivos e uma String com o nome do arquivo para inicializar a
lista de substantivos. A pilha será inicializada (no construtor) sempre com tamanho 20. No
construtor, chame dois métodos que você vai criar: inicializaListaAdjetivos(String
nomeArquivo) e inicializaListaSubstantivos(String nomeArquivo), que abrem os arquivos
para leitura e inicializam as respectivas listas.
 Crie o método buscaAdjetivoMenosUsado(), que retorna um inteiro com a posição do
adjetivo menos usado na lista de adjetivos.
 Crie o método buscaSubstantivoMenosUsado(), que retorna um inteiro com a posição do
substantivo menos usado na lista de substantivos.
 Crie o método removeAdjetivo (int posicao), que remove o adjetivo presente na posição
indicada por parâmetro.
Laboratório II – Trabalho A
Universidade do Vale do Rio dos Sinos
Professor Mateus Raeder
 Crie o método removeSubstantivo (int posicao), que remove o substantivo presente na
posição indicada por parâmetro.
 Crie o método insereAdjetivo(Adjetivo a), que insere o adjetivo a na lista de adjetivos.
Caso a lista esteja cheia, remova o adjetivo menos usado, e insira o adjetivo a no final da lista.
 Crie o método insereSubstantivo(Substantivo s), que insere o substantivo s na lista de
substantivos. Caso a lista esteja cheia, remova o substantivo menos usado, e insira o substantivo s
no final da lista.
 Crie o método traduz(String texto), que traduz o texto recebido por parâmetro, e
retorna uma String referente à esta tradução. Para traduzir o texto, você deve separá-lo palavra
por palavra, empilhando os adjetivos na ordem em que aparecem. Ao final, traduza o substantivo
(sem empilhar) de acordo com sua tradução na lista. Então, desempilhe os elementos presentes na
pilha de adjetivos. Para cada um deles, traduza-o conforme a tradução encontrada na lista
correspondente. Caso não exista na lista alguma palavra (seja ela substantivo ou adjetivo), dê ao
usuário a opção de inserir esta palavra, solicitando que digite uma tradução. Caso ele insira a
tradução, a palavra deve ser traduzida. Caso contrário, a sua tradução deve conter a palavra em
inglês sem a tradução.
 Crie o método atualizaArquivoAdjetivos(String nomeArquivo), que coloca no arquivo
especificado todos os adjetivos constantes na lista de adjetivos.
 Crie o método atualizaArquivoSubstantivos(String nomeArquivo), que coloca no
arquivo especificado todos os substantivos constantes na lista de substantivos.
- ListaSequencialGenerica: será disponibilizada na página da disciplina uma lista genérica
(utilizando Generics) para a criação das listas pedidas.
- PilhaSequencialGenerica: será disponibilizada na página da disciplina uma lista genérica
(utilizando Generics) para a criação das listas pedidas.
- Principal: classe que possui o método main. Neste método, peça para que seja informado (via
console) a URL do arquivo de adjetivos e do arquivo de substantivos, e baixe-os do local informado, através
da utilização de um objeto do tipo URL. Salve-os como adjetivosLocais.txt e substantivosLocais.txt.
Caso o usuário não informe nada (ou seja, uma String vazia), assuma que o arquivo já existe.
 Nesta classe, seu programa deve ser capaz de guardar a seção de um usuário (peça o nome
do usuário via console). Crie um objeto do tipo Tradutor, informando os nomes dos arquivos
necessários, e inicializando as listas com tamanho 50. Após informar seu nome, o usuário pode
traduzir até 100 sentenças, até que digite a palavra END. Ao final das traduções, atualize os arquivos
de adjetivos e de substantivos.
 Finalmente, crie um arquivo HTML chamado nomeDoUsuario.html, que possui a seguinte
estrutura (com as mesmas cores e negritos, inclusive):
Nome: nome do usuário
Tradução 1: texto em inglês --> texto em português
Tradução 2: texto em inglês --> texto em português
Tradução 3: texto em inglês --> texto em português
...
Tradução n: texto em inglês --> texto em português
Laboratório II – Trabalho A
Universidade do Vale do Rio dos Sinos
Professor Mateus Raeder
Avaliação
 Código comentado e identado: 0,5pts
 Classe Adjetivo: 0,5pts
 Classe Substantivo: 0,5pts
 Classe Tradutor: 6,0pts
 Classe Principal: 2,5pts
 Criação do HTML: 1,0pt extra
 Interface gráfica útil: 0,5pt extra
Entrega e apresentação
 Data da apresentação: 15 de outubro de 2010
 A entrega deve ser realizada via e-mail para [email protected]
 Cada dia de atraso na entrega descontará 1,5pts da nota final do trabalho
 O trabalho poderá ser realizado no máximo em duplas
 O não comparecimento na data da apresentação implicará em nota zero