Podcast
Questions and Answers
Qual é a função do método initGUI()
na classe GUI?
Qual é a função do método initGUI()
na classe GUI?
- Cria um canal de comunicação
- Configura e manipula a interface gráfica (correct)
- Inicializa a base de dados
- Envia mensagens entre processos
A classe Application é responsável por abrir e fechar o canal de comunicação.
A classe Application é responsável por abrir e fechar o canal de comunicação.
False (B)
Quais componentes gráficos são mencionados na classe GUI?
Quais componentes gráficos são mencionados na classe GUI?
JLabel, JTextField, JButton, JCheckBox
O método enviarMensagem()
utiliza o método putInt()
de __________ para colocar a informação nos campos da mensagem.
O método enviarMensagem()
utiliza o método putInt()
de __________ para colocar a informação nos campos da mensagem.
Associe as classes com suas responsabilidades principais:
Associe as classes com suas responsabilidades principais:
Qual é o principal método da classe CanalComunicacao responsável por receber mensagens?
Qual é o principal método da classe CanalComunicacao responsável por receber mensagens?
O método fecharCanal()
é utilizado para liberar os recursos após a utilização do canal de comunicação.
O método fecharCanal()
é utilizado para liberar os recursos após a utilização do canal de comunicação.
Qual variável é inicializada como 0 no construtor da classe CanalComunicacao?
Qual variável é inicializada como 0 no construtor da classe CanalComunicacao?
Qual é o estado inicial do sistema?
Qual é o estado inicial do sistema?
O estado DORMIR pode ser ativado apenas pelo uso da interface gráfica do utilizador.
O estado DORMIR pode ser ativado apenas pelo uso da interface gráfica do utilizador.
O que o código gui.getBD().getReproduzir() ativa?
O que o código gui.getBD().getReproduzir() ativa?
O sistema volta ao estado DORMIR quando a reprodução é __________.
O sistema volta ao estado DORMIR quando a reprodução é __________.
Qual comando informa que a reprodução deve ser interrompida?
Qual comando informa que a reprodução deve ser interrompida?
Associe os estados ao seu significado:
Associe os estados ao seu significado:
O segundo robô pode reproduzir comandos gravados pelo primeiro robô.
O segundo robô pode reproduzir comandos gravados pelo primeiro robô.
Quais problemas foram identificados durante a experiência com o robô?
Quais problemas foram identificados durante a experiência com o robô?
Qual é a função do JCheckBox 'Ativar/Desativar' no código?
Qual é a função do JCheckBox 'Ativar/Desativar' no código?
O JLabel 'Gravar' está alinhado à direita na interface.
O JLabel 'Gravar' está alinhado à direita na interface.
Qual é o nome da fonte utilizada para os componentes nesta interface?
Qual é o nome da fonte utilizada para os componentes nesta interface?
O JLabel que indica a ação de _____ está localizado na posição (10, 173).
O JLabel que indica a ação de _____ está localizado na posição (10, 173).
Associe os elementos com suas respectivas descrições:
Associe os elementos com suas respectivas descrições:
Qual é a principal função do método getIndex() na classe CanalComunicacaoConsistente?
Qual é a principal função do método getIndex() na classe CanalComunicacaoConsistente?
O método CanalLock() garante que múltiplos processos possam utilizar o canal ao mesmo tempo.
O método CanalLock() garante que múltiplos processos possam utilizar o canal ao mesmo tempo.
Qual método é chamado para liberar o canal de comunicação?
Qual método é chamado para liberar o canal de comunicação?
O método _______ é utilizado para enviar uma mensagem para o canal garantindo acesso exclusivo do processo.
O método _______ é utilizado para enviar uma mensagem para o canal garantindo acesso exclusivo do processo.
Combine os métodos com suas respectivas descrições:
Combine os métodos com suas respectivas descrições:
No contexto da classe Mensagem, qual é a função do método toString()?
No contexto da classe Mensagem, qual é a função do método toString()?
O método getAndSetConsumidor() sempre retorna true, indicando sucesso na operação.
O método getAndSetConsumidor() sempre retorna true, indicando sucesso na operação.
O que o método getAndSetProdutor() faz?
O que o método getAndSetProdutor() faz?
Qual é a função do OFFSET_IDXPUT no canal de comunicação?
Qual é a função do OFFSET_IDXPUT no canal de comunicação?
O botão do processo IG tinha um comando associado antes da correção.
O botão do processo IG tinha um comando associado antes da correção.
Qual o tipo de arquivo criado ao abrir um canal de comunicação?
Qual o tipo de arquivo criado ao abrir um canal de comunicação?
O método __________ é responsável por armazenar o índice de leitura no buffer.
O método __________ é responsável por armazenar o índice de leitura no buffer.
Associe os métodos às suas funções:
Associe os métodos às suas funções:
Quais os valores atribuídos a OFFSET_IDXGET e OFFSET_IDXPUT após a abertura do canal?
Quais os valores atribuídos a OFFSET_IDXGET e OFFSET_IDXPUT após a abertura do canal?
O código contém tratamento para a exceção FileNotFoundException.
O código contém tratamento para a exceção FileNotFoundException.
Qual é a finalidade do método Thread.yield() no método storeInBuffer?
Qual é a finalidade do método Thread.yield() no método storeInBuffer?
O valor inicial de OFFSET_IDXPUT é definido como __________.
O valor inicial de OFFSET_IDXPUT é definido como __________.
Associe as exceções às suas descrições:
Associe as exceções às suas descrições:
Qual é a finalidade da classe CanalComunicacao
?
Qual é a finalidade da classe CanalComunicacao
?
Os offsets servem para garantir que os dados escritos no buffer circular não sejam sobrescritos ou perdidos.
Os offsets servem para garantir que os dados escritos no buffer circular não sejam sobrescritos ou perdidos.
Qual é o tamanho em bytes de uma mensagem definida na classe CanalComunicacao
?
Qual é o tamanho em bytes de uma mensagem definida na classe CanalComunicacao
?
A função limparCanal(int n_mensagens)
é utilizada para enviar mensagens _____ para o canal.
A função limparCanal(int n_mensagens)
é utilizada para enviar mensagens _____ para o canal.
Associe as classes com suas respectivas funções:
Associe as classes com suas respectivas funções:
O que acontece com o buffer quando receberMensagem()
é chamado e não há mais mensagens disponíveis?
O que acontece com o buffer quando receberMensagem()
é chamado e não há mais mensagens disponíveis?
A classe Gravador
é responsável por enviar mensagens sem controle de simultaneidade.
A classe Gravador
é responsável por enviar mensagens sem controle de simultaneidade.
Qual comando é associado ao valor 4 na classe Mensagem
?
Qual comando é associado ao valor 4 na classe Mensagem
?
A classe BD
é responsável por _____ interagir com a interface gráfica e o robô.
A classe BD
é responsável por _____ interagir com a interface gráfica e o robô.
Qual é a função do método canalLock()
na classe CanalComunicacao
?
Qual é a função do método canalLock()
na classe CanalComunicacao
?
O método getAndSetConsumidor()
lê mensagens antigas sem limpá-las do buffer.
O método getAndSetConsumidor()
lê mensagens antigas sem limpá-las do buffer.
O que é a classe RobotLegoEV3
utilizada para?
O que é a classe RobotLegoEV3
utilizada para?
O parâmetro 'comando' da classe Mensagem
controla a _____ do robô.
O parâmetro 'comando' da classe Mensagem
controla a _____ do robô.
O método enviarMensagem(Mensagem msg)
faz parte de qual classe?
O método enviarMensagem(Mensagem msg)
faz parte de qual classe?
Flashcards
Classe GUI
Classe GUI
Esta classe representa a interface gráfica do utilizador. Contém diversos componentes gráficos (ex.: JLabel, JTextField, JButton, JCheckBox) que permitem a interação com o utilizador. Inclui campos para 'Imitar' e 'Gravar' para guardar e reproduzir ações.
Classe Application
Classe Application
Esta é a classe principal que inicia o sistema. Configura a interface (GUI) e tem o método main() que executa o programa.
Classe CanalComunicacao
Classe CanalComunicacao
Esta classe permite a comunicação entre o TP1 e a interface gráfica (IG), preparando o caminho para a sincronização entre robôs.
Construtor CanalComunicacao()
Construtor CanalComunicacao()
Signup and view all the flashcards
abrirCanal()
abrirCanal()
Signup and view all the flashcards
receberMensagem()
receberMensagem()
Signup and view all the flashcards
enviarMensagem(Mensagem msg)
enviarMensagem(Mensagem msg)
Signup and view all the flashcards
fecharCanal()
fecharCanal()
Signup and view all the flashcards
O que faz o método getIndex()?
O que faz o método getIndex()?
Signup and view all the flashcards
O que é a classe CanalComunicacaoConsistente?
O que é a classe CanalComunicacaoConsistente?
Signup and view all the flashcards
Como o construtor CanalComunicacaoConsistente() funciona?
Como o construtor CanalComunicacaoConsistente() funciona?
Signup and view all the flashcards
Qual é o propósito do método CanalLock()?
Qual é o propósito do método CanalLock()?
Signup and view all the flashcards
Para que serve o método CanalRelease()?
Para que serve o método CanalRelease()?
Signup and view all the flashcards
Como o método enviarMensagem() garante a comunicação segura?
Como o método enviarMensagem() garante a comunicação segura?
Signup and view all the flashcards
Como o método receberMensagem() garante comunicação segura?
Como o método receberMensagem() garante comunicação segura?
Signup and view all the flashcards
O que faz o método getAndSetConsumidor()?
O que faz o método getAndSetConsumidor()?
Signup and view all the flashcards
Diagrama de Estados (Classe Gravar): Estado DORMIR e GRAVAR
Diagrama de Estados (Classe Gravar): Estado DORMIR e GRAVAR
Signup and view all the flashcards
Diagrama de Estados (Classe Gravar): Estado REPRODUZIR
Diagrama de Estados (Classe Gravar): Estado REPRODUZIR
Signup and view all the flashcards
Diagrama de Estados (Classe Gravar): Terminar o Sistema
Diagrama de Estados (Classe Gravar): Terminar o Sistema
Signup and view all the flashcards
GUI TP1: Campo de Procura de Ficheiros IG
GUI TP1: Campo de Procura de Ficheiros IG
Signup and view all the flashcards
Problema: Robô Imitador
Problema: Robô Imitador
Signup and view all the flashcards
Código: Iniciar Gravação
Código: Iniciar Gravação
Signup and view all the flashcards
Código: Verificar Mensagens Gravadas
Código: Verificar Mensagens Gravadas
Signup and view all the flashcards
Código: Iniciar Reprodução
Código: Iniciar Reprodução
Signup and view all the flashcards
OFFSET_IDXPUT e OFFSET_IDXGET
OFFSET_IDXPUT e OFFSET_IDXGET
Signup and view all the flashcards
abrirCanal(String ficheiro, int n_mensagens)
abrirCanal(String ficheiro, int n_mensagens)
Signup and view all the flashcards
loadFromBuffer(int offset)
loadFromBuffer(int offset)
Signup and view all the flashcards
OFFSET_IDXPUT
OFFSET_IDXPUT
Signup and view all the flashcards
storeInBuffer(int offset, int value)
storeInBuffer(int offset, int value)
Signup and view all the flashcards
OFFSET_IDXGET
OFFSET_IDXGET
Signup and view all the flashcards
FileLock fl = canalLock()
FileLock fl = canalLock()
Signup and view all the flashcards
canalRelease(fl)
canalRelease(fl)
Signup and view all the flashcards
limparCanal(int n_mensagens)
limparCanal(int n_mensagens)
Signup and view all the flashcards
Thread.yield()
Thread.yield()
Signup and view all the flashcards
O que a variável bd
e o método getImitar()
representam?
O que a variável bd
e o método getImitar()
representam?
Signup and view all the flashcards
O que o botão chckbxImprimir
faz?
O que o botão chckbxImprimir
faz?
Signup and view all the flashcards
O que o código JLabel lblRobotNome_1_1 = new JLabel("Consola");
define?
O que o código JLabel lblRobotNome_1_1 = new JLabel("Consola");
define?
Signup and view all the flashcards
O que o botão chckbxAtivardesativar
faz?
O que o botão chckbxAtivardesativar
faz?
Signup and view all the flashcards
Como a ação do botão chckbxAtivardesativar
afeta a imitação do robô?
Como a ação do botão chckbxAtivardesativar
afeta a imitação do robô?
Signup and view all the flashcards
Classe CanalComunicacaoConsistente
Classe CanalComunicacaoConsistente
Signup and view all the flashcards
index
index
Signup and view all the flashcards
canalLock()
canalLock()
Signup and view all the flashcards
canalRelease(FileLock fl)
canalRelease(FileLock fl)
Signup and view all the flashcards
getAndSetProdutor(Mensagem m)
getAndSetProdutor(Mensagem m)
Signup and view all the flashcards
getAndSetConsumidor()
getAndSetConsumidor()
Signup and view all the flashcards
Classe Mensagem
Classe Mensagem
Signup and view all the flashcards
getIndex()
getIndex()
Signup and view all the flashcards
Study Notes
Fundamentos de Sistemas Operativos - Trabalho Prático 2
- Autores: Pedro Grilo (A51319), Fernando Prates (A51635), Ana Silva (A50247)
- Data: 27-12-2024
- Título do Trabalho: TP2 - 32D - G05
- Objectivo: Implementar uma interface gráfica intuitiva usando a biblioteca Swing e desenvolver uma aplicação multiprocesso para a gestão e comunicação entre dois processos JAVA com memória partilhada usando a classe JAVA MappedByteBuffer.
- Introdução: O trabalho apresenta o desenvolvimento de uma interface gráfica intuitiva e uma aplicação multiprocesso que permite a comunicação entre dois processos JAVA, criando um desafio interessante para compreender melhor a gestão entre processos e, como consequência, controlar os robôs de forma sincronizada.
- Desenvolvimento:
- Aula Prática 1: Desenvolvimento da GUI para os processos, baseado na GUI do TP1, com funcionalidades como Lançar IG, procurar ficheiros, e a activação do modo Debug.
- Aula Prática 2: Mapeamento do código em UML utilizando a ferramenta MagicDraw para documentar os requisitos, a arquitectura e o design do software e identificar possíveis problemas.
- Aula Prática 3: Elaboração das classes CanalComunicacao e CanalComunicacaoConsistente, responsáveis pela comunicação entre os processos TP1 e IG. As classes permitem abertura e fecho do canal, envio e recepção de mensagens, e sincronização dos robôs.
- Aula Prática 4: Desenvolvimento e implementação do código de sincronização de movimento dos dois robôs e criação da classe Imitar.
- Aula Prática 5: Criação de um diagrama UML de estados para guiar a implementação do código, especificamente para a gestão de tarefas no processo Gravar.
- Aula Prática 6: Melhorias na GUI e na sincronização dos robôs, incluindo um campo na GUI do TP1 para a selecção de ficheiros de comunicação (Ficheiro IG) para reprodução futura das acções do processo TP1.
- Pontos Corrigidos: Corrigidos problemas de comunicação, falhas no comportamento do segundo robô e funcionalidades do botão no processo IG.
- Conclusão: O documento apresenta os resultados do trabalho prático, descrevendo as funcionalidades e ajustes realizados, para uma maior consistência e estabilidade no canal de comunicação entre os processos.
Código e Classes
- O documento contém vários ficheiros de código-fonte (java) para diferentes funcionalidades e classes, incluindo detalhamento para classes como:
- CanalComunicacao.java: Classe responsável por gerir a comunicação entre processos, providenciando métodos para abrir, fechar, receber e enviar mensagens.
- CanalComunicacaoConsistente.java: Classe que estende CanalComunicacao, adicionando o recurso de FileLock para garantir acesso exclusivo ao canal.
- Mensagem.java: Classe representando uma mensagem de comunicação entre processos, contendo os parâmetros de uma mensagem.
- Gravador.java, Imitar.java, Reproduzir.java, Evitar.java, Fugir.java, Vaguear.java. Classes contendo lógica para tarefas específicas, controlando o comportamento do robot (ex: gravação de acções, execução de comandos, etc.).
- App.BD.java: Classe com um armazenamento e gestão de variáveis necessárias para o correcto funcionamento da aplicação e dos seus componentes, incluindo atributos para a gestão do robot.
- App.GUI.java: Classe responsável por toda a interface gráfica.
- Application.java: Classe principal que controla o início e a execução global da aplicação, configurando as interfaces dos processos e controlando thread.
Relações entre as Classes
- O documento descreve as relações das classes usando diagramas UML, incluindo:
- Relações de Herança: Classes que herdam funcionalidades de outras.
- Relações de Uso: Classes que usam os serviços de outras.
- Classes como Mensagem, CanalComunicacao, e CanalComunicacaoConsistente têm conexões específicas, indicando como a comunicação e sincronização entre os processos são implementadas.
Índice de Imagens
- As imagens apresentam representações gráficas e exemplos visuais do programa, permitindo o entendimento visual da aplicação.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Teste seus conhecimentos sobre a classe GUI em Java, incluindo o método initGUI()
e suas interações com outras classes como Application e CanalComunicacao. Explore os componentes gráficos, estados do sistema e responsabilidades das classes. Avalie sua compreensão dos métodos utilizados na comunicação entre robôs.