RetailStore is a console-based application developed as the final project for the IV1350 (Object-Oriented Design) course at KTH.
The project applies best practices in designing and implementing an object-oriented retail system, demonstrating principles such as:
- Low coupling
- High cohesion
- Encapsulation
- Fault tolerance
- Unit testing
- Layered architecture
In the final iteration, several key design patterns have been incorporated, including Observer, Singleton, and Composition.
Note: The current version uses a hard-coded example to demonstrate the program’s flow.
The system provides a solid foundation for future expansion — for example, richer terminal interactivity or more advanced features.
The domain model for this project is illustrated below:
All other design diagrams are available in:
./src/main/resources/diagrams
- Follow the official installation guide:
https://maven.apache.org/install.html - Windows users: Ensure the Maven
binfolder is added to your PATH environment variable.
mvnd exec:javaNote: The system does not currently use the database at runtime.
A basic database schema exists, but theInventoryclass still reads from a local text file.
Future improvements may include switching to SQL queries for full database integration.
Follow the official installation guide:
https://docs.docker.com/get-docker/
docker-compose upStop the containers
docker-compose downDeveloped by: Daniel Ibrahimi
Course: IV1350 - Object Oriented Design, KTH - Stockholm
Date: 30-05/24
