For Project 12, we will explore the complexities of inventory management using Object-Oriented Programming (OOP). This project will harness the power of OOP to design and implement a robust and scalable inventory management system. Through this project, students will learn how to structure and organise code to manage complex data and functional requirements efficiently.
Encapsulation:
Master the technique of encapsulating data within classes using private attributes and public methods, ensuring that all interactions are safe and managed through controlled interfaces.
Facade Pattern:
Learn to simplify complex system interactions using the facade pattern, which provides a simplified interface to more complex underlying code structures, enhancing ease of use and system maintenance.
User Interface Development:
Develop skills in building intuitive and functional user interfaces that interact seamlessly with backend logic, improving the overall user experience and system usability.
Link to Project 12 - Inventory System
The three labs below will guide you through the completion of this project, each building on the knowledge gained in the previous one:
Lab 1 - Encapsulation Revisited
Begin by creating an Item class that encapsulates item details such as name, price, and quantity with private attributes and public getters and setters.
This lab sets the groundwork for understanding how data can be securely managed within an object, providing a solid foundation for more complex interactions.
Extend the system with an InventoryManager class that acts as a facade to handle complex inventory management operations, such as adding, updating, and removing items.
Explore the practical application of the facade design pattern to reduce complexities in system interaction, which is particularly useful in scenarios where the underlying system may change frequently.
Develop a command-line interface (CLI) that allows users to interact dynamically with the InventoryManager. This lab focuses on implementing a user interface that uses the facade to manage user requests and system responses effectively.
Apply your knowledge of encapsulation and the facade pattern to ensure that the UI provides a clean, error-free interaction experience, demonstrating how front-end and back-end systems integrate.