21. Object Oriented Design
BOS / 2019
At: GitHub.com (Private, available upon request)
I built this for my Object Oriented Design class! It’s a fullly functional spreadsheet program with formulas, dependencies/references, fully segregated MVC pattern, and ~infinite scroll~. It was build with Java and Java’s 🤢Swing🤢 library. Not a fan of java UI!
This project really cemented my design practices for large programs.
A large part of the design of this program was focused on making all parts modular, encapsultaed, extensible, and future proof. Each part was designed and implemented with the S.O.L.I.D. principles and various GOF design patterns were employed: Builder, Composition, Visitor, Command, Observor. Each allowed for fully modular functionality while allowing new functionality to easily extend on designed interfaces rather than modifying old code (Open-Closed principle).
Visitors allowed for dynamic polymorphism in how we store, access, and evaluate data types within cells, while allowing for raw data to be stored in a highly native class definition.
Observers allowed for our dependencies and cycle checkers to function efficiently and within reasonable memory + performance constraints while composition allowed us to extend upon and use old functionality without editing or duplication old code.
Additionally, we performed code reviews of our classmates, and implemented each others interfaces to get an idea of what design choices bake in (in)flexibility and what can be done going forward to ensure best design. Very extensive unit tests (JUnit4) were a part of every iteration.