Java, Swing, and JUnit
Online shopping can be overwhelming, especially when trying to stick to a budget or managing a long list of desired items. To address these challenges, I've developed an application that empowers users to create and manage wishlists. These wishlists can store items with customizable attributes like priority, cost, and purchase location. My goal in creating this app is to simplify the online shopping experience, making it more enjoyable and stress-free for everyone.
This project has been an invaluable learning experience for me. It has provided a solid foundation in object-oriented programming and illuminated the intricacies of data persistence through JSON objects for reading and writing data from saved files. Moreover, I've had the opportunity to apply essential design principles introduced in my software construction course.
One noteworthy aspect of this project involved reviewing how I could improve the project as a whole. One improvement was through adopting the observer design pattern. In this case, I would have my wishlist extend a new abstract class called Subject. Subject would have a list of observers, where observer is an interface. Finally, I would have all my GUI components implement observer so that each observer would have their own update method. This approach significantly reduced coupling between the wishlist and GUI components. By employing this pattern, notifications are automatically sent when changes occur in the wishlist, allowing each component to update seamlessly.