Java, Architecture, Clean Code, Solid, Programming.
Open/Closed Principle, where classes should be open for extension (new shapes can be added) but closed for modification (existing code does not need to change). Liskov Substitution Principle When substituting an object of the base class with an object of its derived class, the program should