My application will allow users to create a portfolio consisting of meme stocks, in the style of Reddit's r/wallstreetbets community. Users will be able to pick stocks from a pre-defined list, or add their own stonks to YOLO.
Users will be able to run a simulation of how their stocks perform over time. Will their 💎 🙌 diamond hands 🙌 💎 pay off as their stock goes 🚀 🚀 to the moon 🌛 🌝, or will they lose it all and prove the 🌈 🐻 bears right??
Users will be people interested in everything r/wallstreetbets. Alternatively, 😤 activists 😤 who are interested in sticking it to Wall Street are also welcome to use the application.
NB: if you are an experienced investor looking for an intelligent way to understand your portfolio and risk profile, please head elsewhere. Only degenerate "investors" welcome.
User stories (Phase 1):
- As a user, I want to be able to choose meme stonks to YOLO (add to my portfolio)
- As a user, I want to be able to create my own stock (ticker) to add to my portfolio
- As a user, I want to see how my portfolio has done over a period of time
- As a user, I want to decide whether to sell or 🚀 🚀 HOLD THE LINE 🚀 🚀 against my wife's boyfriend's advice
User stories (Phase 2):
- As a user, I want to be able to save my Portfolio to file
- As a user, I want to be able to load my Portfolio from a file
Phase 4: Task 2 I chose to implement the BoringStock and MemeStock subclasses, as subtypes of the Stock interface. Each of BoringStock and MemeStock override the changeValueOverTime method, providing distinct implementations of the method.
Phase 4: Task 3 Based on the UML class diagram, what's starkly apparent is that the current design of my program exhbits a significant degree of coupling; primarily involving the classes required for the GUI and the Portfolio class. In order to remediate this, I would use the Java Observer pattern, and replace most/all of the Portfolio fields (indirectly) by adding the class to the list of Observers for Portfolio (which will extend the Observer class). I will call notifyObservers() every time something salient happens to the Portfolio (e.g. added a Stock, changed value over time), and the update() methods of the Observers would be implemented according to the specific aims of each class.
NOTE ABOUT TASK 3 (UML DIAGRAM): The UML diagram attached should contain an 'implements' relationship between the class MemeStock and the interface RandomDouble; I couldn't get this to work in the UML diagram drawing program, so I omitted it from the diagram.
C