Você está na página 1de 6

Projeto integrador

Alunos: Ian Gabriell


Carlos Ryan
Adailton Santos
Crisleilson Lourenço
Gustavo Gabriel
Orlando Gabriell

Professor: Daniel

Aracaju
Se
O aplicativo foi desenvolvido com o propósito de criar a presença online do "Hotel Dunas"
por meio de um site interativo. A plataforma oferece aos usuários uma experiência de login
segura, seguida por uma interface dedicada à reserva de quartos. Esta abordagem busca
proporcionar aos visitantes do site uma interação intuitiva e eficiente com os serviços do
hotel.
A estrutura do aplicativo envolve um sistema de autenticação, onde os usuários podem inserir
suas credenciais de login para acessar áreas restritas do site. Após o login bem-sucedido, eles
são direcionados a uma interface específica de reserva de quartos, onde podem visualizar as
opções disponíveis, selecionar datas desejadas e efetuar reservas.
Para assegurar a segurança e a confiabilidade do sistema, medidas como a validação de
entrada e a proteção de informações sensíveis, como dados de login e detalhes de reserva,
foram consideradas. Além disso, o aplicativo incorpora boas práticas de design de interface
gráfica para proporcionar uma experiência de usuário agradável, utilizando elementos visuais,
como imagens do hotel e ícones, para criar uma atmosfera acolhedora e atraente.
Além da funcionalidade principal de login e reserva de quartos, o aplicativo pode ser
expandido para incluir recursos adicionais, como um painel administrativo para
gerenciamento interno, internacionalização para atender a diferentes idiomas e feedback claro
para orientar os usuários durante o processo de reserva.
O desenvolvimento desse aplicativo visa não apenas oferecer uma presença online eficaz para
o "Hotel Dunas", mas também proporcionar aos usuários uma experiência online harmoniosa
e acessível ao explorar os serviços e recursos oferecidos pelo hotel.
A classe Quarto foi criada para representar informações essenciais sobre quartos em um
sistema de reservas de hotel. Cada instância desta classe contém detalhes como número do
quarto, tipo de suíte, preço, capacidade de pessoas e disponibilidade. Vamos explorar cada
aspecto da classe em uma explicação mais detalhada:
• Atributos:
o numero (SimpleIntegerProperty): Representa o número do quarto. Este
atributo é encapsulado por uma SimpleIntegerProperty para facilitar o
gerenciamento de propriedades.
o suite (SimpleStringProperty): Indica o tipo de suíte do quarto. Similar ao
número, é encapsulado por uma SimpleStringProperty.
o preco (SimpleStringProperty): Armazena o preço do quarto. Novamente, é
encapsulado para permitir a observação de mudanças.
o numeroPessoas (SimpleIntegerProperty): Reflete a capacidade de pessoas que
o quarto pode acomodar. Utiliza SimpleIntegerProperty.
o disponibilidade (SimpleStringProperty): Informa sobre a disponibilidade do
quarto, seja "disponível", "ocupado", etc. Também é encapsulado.
• Método Construtor:
o Quarto(int numero, String suite, String preco, int numeroPessoas, String
disponibilidade): Este é o método responsável por criar uma instância da
classe. Recebe parâmetros iniciais para definir o estado inicial do quarto.
• Métodos de Acesso:
o Métodos como getNumero(), setNumero(int numero), numeroProperty()
fornecem acesso controlado ao número do quarto. Esses métodos seguem um
padrão semelhante para os outros atributos.
• Propriedades:
o Cada atributo é encapsulado por uma propriedade específica (por exemplo,
SimpleIntegerProperty ou SimpleStringProperty). Isso facilita a ligação de
dados e a atualização automática da interface gráfica conforme os valores da
classe mudam.
Essencialmente, a classe Quarto serve como um contêiner de dados que organiza as
informações relacionadas a um quarto de hotel, proporcionando uma estrutura clara e um
conjunto de métodos para acessar e manipular esses dados de maneira eficiente. Isso é
especialmente útil em ambientes de programação gráfica, como JavaFX, onde a ligação de
dados é comum para atualizações dinâmicas de interfaces de usuário.

O controlador QuartosController está associado a uma interface gráfica em JavaFX que


exibe uma tabela de quartos de hotel. Vamos analisar detalhadamente cada parte deste
código:
• Anotações @FXML:
o Essas anotações são usadas para injetar os elementos da interface gráfica
(definidos no arquivo FXML) no código Java. Por exemplo, @FXML private
TableView<Quarto> tabelaQuartos; injeta a tabela de quartos.
• Inicialização (initialize()):
o Este método é chamado automaticamente quando o controlador é carregado.
Aqui, ele é usado para configurar as colunas da tabela (colNumero, colPreco,
colDisponibilidade).
o Cada coluna é associada a uma propriedade específica da classe Quarto para
exibir os dados corretos na tabela.
o Além disso, são adicionados alguns itens fictícios à tabela para ilustrar seu
funcionamento.
• Botões (sairButtonAction(), reservarButtonAction()):
o sairButtonAction(): Este método é chamado quando o botão "Sair" é clicado.
Ele obtém a referência do palco (janela) atual e a fecha, encerrando o
aplicativo.
o reservarButtonAction(): Este método é chamado quando o botão "Reservar"
é clicado. Ele obtém o quarto selecionado na tabela, define sua disponibilidade
como "Indisponível" e atualiza a tabela. Além disso, imprime uma mensagem
indicando que o quarto foi reservado.
Resumo: O controlador QuartosController está integrado a uma interface gráfica que exibe
informações sobre quartos de hotel em uma tabela. Os métodos associados a botões permitem
sair do aplicativo e reservar quartos selecionados, demonstrando uma interação básica com a
interface do usuário. Este código é uma base que pode ser expandida para atender às
necessidades específicas do seu projeto.
Controlador LoginController: Explicação Detalhada
O LoginController é responsável por gerenciar a lógica associada à interface gráfica de
login. Vamos examinar detalhadamente cada parte desse código:
• Campos de Texto e Rótulos (@FXML):
o @FXML private TextField usernameField;
o @FXML private PasswordField passwordField;
o @FXML private Label errorMessageLabel;
o Esses campos são injetados usando a anotação @FXML e representam
elementos da interface gráfica. usernameField e passwordField são campos
de texto para entrada de nome de usuário e senha, respectivamente, enquanto
errorMessageLabel é uma etiqueta para exibir mensagens de erro.
• ArrayLists (usuarios e senhas):
o ArrayList<String> usuarios = new ArrayList<String>();
o ArrayList<String> senhas = new ArrayList<String>();
o Duas listas são usadas para armazenar nomes de usuários e senhas. Estas são
inicializadas vazias e, posteriormente, são preenchidas com alguns dados
fictícios no método loginButtonClicked().
• Método loginButtonClicked():
o Este método é chamado quando o botão de login é pressionado.
o Ele obtém o nome de usuário e senha inseridos nos campos de texto.
o Verifica se as credenciais fornecidas correspondem a algumas credenciais
fictícias armazenadas nas listas usuarios e senhas.
o Se as credenciais são válidas, carrega uma nova cena (tela principal) a partir
de um arquivo FXML (viewBanco.fxml).
o Cria uma instância da classe ContaBancaria e passa essa instância para o
controlador associado à tela principal (SistemaBancarioController).
o Exibe a cena da tela principal.
• Exceções (IOException):
o Em caso de falha ao carregar o arquivo FXML da tela principal, uma exceção
IOException é capturada e seu rastreamento é impresso. Isso ajuda na
identificação de problemas durante o carregamento do arquivo FXML.
• Resumo:
o O LoginController atua como a ponte entre a interface de login e a lógica de
autenticação.
o Utiliza ArrayLists para armazenar credenciais fictícias.
o O método loginButtonClicked() verifica as credenciais, carrega a tela
principal e passa uma instância de ContaBancaria ao controlador da tela
principal.
Este controlador é uma parte vital de um sistema de login, conectando eficientemente a
interface gráfica e a lógica do programa.

A criação do aplicativo para o "Hotel Dunas" apresentou desafios substanciais tanto no


desenvolvimento do backend quanto no frontend. Ao buscar estabelecer uma presença online
robusta para o hotel, foi necessário enfrentar complexidades específicas em ambas as
camadas do aplicativo.
Desenvolvimento do Backend:
• Integração com Banco de Dados:
o Uma das principais dificuldades foi a integração do backend com um
sistema de gerenciamento de banco de dados. A necessidade de
armazenar e recuperar informações de usuários, reservas e outros dados
essenciais do hotel demandou uma estrutura de banco de dados sólida e
eficiente.
• Implementação de Lógica de Autenticação:
o Desenvolver uma lógica de autenticação segura foi um ponto crítico.
Garantir a proteção adequada das credenciais dos usuários, considerando
hash de senhas e práticas de segurança, foi uma prioridade.
• Gestão de Reservas:
o Implementar a lógica de reserva de quartos exigiu a criação de algoritmos
eficientes para verificar a disponibilidade, registrar as reservas e manter
um controle preciso das datas e quartos ocupados.
Desenvolvimento do Frontend:
• Interface Gráfica Amigável:
o A criação de uma interface gráfica amigável e atraente foi um desafio
considerável. A escolha de elementos visuais, cores e layout precisou ser
cuidadosamente pensada para proporcionar uma experiência agradável
aos usuários.
• Integração com Backend:
o Garantir uma integração suave entre o frontend e o backend foi crucial. A
comunicação eficiente entre as duas partes do aplicativo para transmitir
dados de login, informações de reservas e atualizações em tempo real
exigiu uma abordagem coordenada.
• Manutenção da Consistência Visual:
o Manter a consistência visual em todas as páginas do aplicativo para
promover uma identidade de marca coesa foi um aspecto desafiador. Isso
envolveu o uso consistente de imagens, tipografia e esquemas de cores.
Soluções Adotadas:
• Boas Práticas de Desenvolvimento:
o Foi adotada uma abordagem baseada em boas práticas de
desenvolvimento, incluindo o uso de design patterns e a modularização
do código para facilitar a manutenção e escalabilidade.
• Testes Rigorosos:
o A implementação de testes rigorosos, tanto no backend quanto no
frontend, ajudou a identificar e corrigir problemas antes de serem
implantados no ambiente de produção.
• Colaboração Efetiva:
o A colaboração efetiva entre as equipes de desenvolvimento do backend e
frontend, incluindo reuniões regulares de revisão de código e
comunicação transparente, foi fundamental para superar desafios e
garantir a coesão do projeto.
Conclusão:
O desenvolvimento do aplicativo para o "Hotel Dunas" exigiu um esforço conjunto para
superar desafios técnicos. O resultado é uma aplicação robusta que oferece uma experiência
aprimorada para os usuários, ao mesmo tempo em que atende às necessidades operacionais
específicas do hotel. O processo de enfrentar esses desafios proporcionou aprendizados
valiosos e contribuiu para a maturidade do projeto como um todo.

Você também pode gostar