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