Este repositório contém o projeto final desenvolvido na disciplina de Orientação à Objetos. O objetivo do projeto foi simular uma plataforma de hospedagem inspirada no Airbnb, utilizando conceitos fundamentais de programação orientada a objetos. O projeto foi desenvolvido em Java, aplicando princípios como herança, polimorfismo, encapsulamento e associações.
O projeto teve como objetivo aplicar os conceitos aprendidos durante a disciplina em um cenário prático. A simulação do sistema Airbnb envolveu a criação de classes que representam as principais entidades do sistema, como usuários, propriedades e reservas. Cada uma dessas classes foi construída respeitando os princípios da orientação a objetos, de forma a garantir uma arquitetura limpa e extensível.
O projeto abrange as seguintes funcionalidades:Permite cadastrar usuários que buscam propriedades para alugar, assim como anfitriões que disponibilizam propriedades na plataforma. Cada usuário possui informações como nome, e-mail, e avaliações de suas estadias.
Anfitriões podem cadastrar diferentes tipos de propriedades, como apartamentos, casas e chalés. As propriedades incluem informações como localização, preço, capacidade, e comodidades disponíveis.
Usuários podem realizar buscas por propriedades disponíveis de acordo com seus critérios, como preço e datas. Reservas podem ser feitas diretamente, com a verificação de disponibilidade e confirmação por parte do anfitrião.
Após uma estadia, os usuários podem avaliar a propriedade e o anfitrião, adicionando uma camada de confiabilidade ao sistema.
As classes principais, como Usuario e Anfitriao, compartilham atributos e métodos comuns através da herança.Métodos sobrescritos foram utilizados para garantir que diferentes tipos de propriedades possam ser tratadas de maneira uniforme em partes do código.
O encapsulamento foi empregado para garantir que os atributos das classes estivessem protegidos e fossem acessados apenas através de métodos específicos.
A relação entre Propriedades e Reservas é um exemplo de composição, onde a existência de uma reserva está atrelada a uma propriedade específica.
Java SE 17: Linguagem de programação usada para o desenvolvimento do projeto. IntelliJ IDEA: Ambiente de desenvolvimento integrado (IDE) utilizado. JUnit: Ferramenta para testes unitários, garantindo a qualidade das implementações.
O projeto final da disciplina de Orientação à Objetos foi uma excelente oportunidade para aplicar e aprofundar os conceitos aprendidos em um cenário realista. A simulação do sistema tipo Airbnb nos permitiu explorar o uso de herança, polimorfismo e composição, bem como praticar o desenvolvimento colaborativo e a criação de um sistema extensível e bem estruturado.
O desenvolvimento em Java possibilitou compreender melhor como utilizar as características da orientação a objetos para resolver problemas complexos de forma modular e escalável, criando uma base sólida para futuros projetos.