Você está na página 1de 3

Goiânia, Goiás

Data: 21/08/2023

Atividade Avaliativa 3
Disciplina: INF0396 - PROGRAMAÇÃO ORIENTADA A OBJETOS
Professores: Mateus M. Luna e Reinaldo de Souza

LEIA COM ATENÇÃO AS INSTRUÇÕES ABAIXO

1. Esta prova é individual e sem consulta.


2. A avaliação será feita no computador e deverá ser submetida na tarefa correspondente no Sigaa,
dentro do prazo da aula. Fiquem atentos ao tempo! O Sigaa permitirá apenas uma submissão
para esta atividade, portanto certifique bem se os arquivos estão todos certinhos antes de
submeter.
3. A resposta para as questões teóricas deve ser enviada em um arquivo de texto simples (.txt,
preferencialmente), identificado por seu nome, número de matrícula e identificação do número
das respostas).
4. A resposta para a questão de código deverá ser enviada junto com a da teórica em um único
arquivo compactado (.zip, .rar, .7zip). LEMBRE-SE de enviar seu código fonte, é preciso que a
pasta contenha os arquivos .java, não somente os bytecodes .class.
5. O aluno poderá usar somente a IDE de desenvolvimento de sua preferência durante a atividade
(Eclipse, NetBeans, VSCode, IntelliJ ou similares).
6. Não será permitido o acesso à internet durante a realização da prova. Os navegadores devem
ficar fechados enquanto é feita a atividade e somente poderão ser abertos na hora de ser
submetido o material final.
7. Desliguem ou silenciem o celular. É proibido o manuseio durante a realização da avaliação sob
pena de recolhimento da mesma.
8. Ao concluir sua prova e enviar sua atividade para o Sigaa, lembre-se de apagar os arquivos do
computador.
9. O professor poderá esclarecer dúvidas sobre a redação das questões, porém não poderá
interpretá-las. A capacidade de interpretação das questões faz parte da avaliação.

Questão 1 (3 Pontos)
Complemente as frases a seguir, tendo como base o conteúdo ministrado em sala de
aula sobre Programação Orientada à Objetos com Java.
A. Chamamos de ______________ a parte de um processo que constitui uma linha de
execução utilizando recursos da CPU;
B. Dentro de um bloco _________ qualquer exceção lançada fará com que o fluxo de
execução seja interrompido e redirecionado para o seu bloco _________ respectivo.
C. Para se escrever dados em arquivos na forma de Strings, podemos usar o método
___________ da classe BufferedWriter, seguido de uma chamada do método
flush().
D. Uma das diferenças entre se usar um InputStream e um FileReader para se
ler dados de arquivos é que o primeiro trabalha com a leitura em _________
enquanto segundo com a leitura em caracteres.
E. Os ______________________ tem por objetivo explorar a menor unidade do projeto,
procurando provocar falhas ocasionadas por defeitos de lógica e de implementação
em cada módulo, separadamente.
F. O processo das ações que refletem na interação entre usuário e elementos da
interface gráfica ocorre através do tratamento e da emissão de ____________.

Questão 2 (7 Pontos)
Está na hora de demonstrar seus conhecimentos gerais em construção de software. Crie
uma aplicação chamada "Mixer de Palavras", com a seguinte interface:

Faça seu código baseando-se no seguinte diagrama de classes (você pode mudar nomes
de variáveis, mas deve seguir a estrutura e hierarquia):

Como já mencionamos em sala de aula, foque seu desenvolvimento em criar as


funcionalidades e elementos primeiro. Havendo alcançado esses objetivos, tente
reproduzir o layout sugerido na imagem. Note pelo diagrama que há um JPanel que
poderá ser usado justamente para organizar estes elementos usando algum gerenciador
de layouts.

Já o funcionamento da aplicação será o seguinte:


● Ao clicar no botão "Mixar!", o atributo saída receberá o retorno da função
mixar(). Esta função deve receber a string contida no terceiro campo de texto
para ela ser "mixada" pelas strings nos dois primeiros campos de texto.
● Chamamos de "mixar" aqui a troca de uma String por outra. No caso do exemplo
na imagem acima, todas as ocorrências de "e" em "O semestre acabou!" serão
substituídas por "x". Ou seja, o resultado da chamada de mixar("O semestre
acabou!", "e", "x") é "O sxmxstrx acabou!". Para fazer isso você pode usar
um método pronto que todo objeto da classe String possui, chamado replace:
t3.replace(t1, t2);
Onde t3 é a string que será mixada (como a "O semestre acabou!") e t1 a que
será substituída por t2.
● A interface gráfica, porém, não mostra o resultado da função na tela, ela o grava
em um arquivo. Isso acontece fazendo a chamada do método gravar() logo
após a mixagem. Neste método, um arquivo mixer.txt deverá receber a string
obtida usando a classe BufferedWriter. Lembre-se de fazer os tratamentos de
erros necessários para se manipular corretamente o arquivo.
● Será aceito o uso de "arrow functions" para tratar do evento, no lugar do uso da
interface ActionListener, se o aluno assim preferir.
● Por fim, você também deverá criar uma simples classe de teste unitário
(TesteMixer) para verificar se o comportamento da função mixar está
acontecendo como esperado.

Questão EXTRA (1 Ponto)


Esta questão valerá um ponto extra somente para esta prova. Não haverá acréscimo de
pontos caso sua nota já tenha inteirado 10.

Melhore a interface do Mixer de Palavras colocando avisos para o usuário através da


classe JOptionPane. Mostre uma caixa de diálogo com uma mensagem quando a
função Mixer tiver sido chamada, exibindo o resultado da mixagem. Use também a
JOptionPane para alertar qualquer erro que tenha acontecido no processo de escrita do
arquivo.

Você também pode gostar