Bachelor in Computer Science and Engineering (LEI) | 1st Year - 2nd Semester
This repository contains the projects developed for the Object-Oriented Programming course at the Faculty of Sciences and Technology of the NOVA University of Lisbon (NOVA FCT).
- Tomás Alves (Student No. 68681)
- José Freitas (Student No. 69078) - (Paintball Game Project)
- Felipe Magno (Student No. 67994) - (Office Calendar Project)
The official project assignment and specifications provided by the faculty can be found here:
The project consists of building a turn-based strategy game in Java simulating a Paintball Game. The game is played by multiple teams on a rectangular grid map containing positions, bunkers, and players. The main goal of each team is to eliminate opposing teams while avoiding elimination, until only one winning team remains.
- Turn-Based Strategy: Alternates turns between different teams, managing multiple players per team.
-
Map & Grid Management: Handles a rectangular grid with coordinate mapping
$(x, y)$ for horizontal and vertical positions. - Interactive Entities: Support for various map elements such as players and defensive structures (bunkers).
- Incremental Development: Developed following strict object-oriented design patterns and clean code standards.
The official project assignment and specifications provided by the faculty can be found here:
An advanced Java application designed to manage office accounts, schedules, meetings, and priority events within an enterprise environment.
- Account Management: Supports different account types and hierarchies (Enterprise accounts, Managers, Staff, Guests) with custom permission controls (e.g., creating events, high-priority scheduling).
- Event & Invitation Control: Manages event creation, participant invitation lists, responses (accept/reject), and conflict handling (preventing overlapping schedules or handling mandatory participation rules).
- Robust Exception Handling: Implements a comprehensive custom exception hierarchy for constraint violations (e.g.,
AccountIsBusyError,AlreadyAcceptedAnotherInvitationError,AccountCannotCreateEventsError). - Modular Design: Clear separation into packages handling calendars, accounts, events, invites, and commands.
Across these projects, the course heavily emphasized advanced Java principles:
- Advanced OOP Principles: Extensive use of interfaces, abstract classes (
AbstractAccount,AbstractEnterprise), inheritance, and polymorphism. - Encapsulation & Domain Modeling: Clean separation of concerns and data hiding across distinct entity classes.
- Exception Handling: Robust error management using custom application exceptions.
- Software Design: Applying modular architecture, design patterns, and clean code principles.
Copyright © 2026 Alvesss04. All Rights Reserved.