Write code that demonstrates your knowledge of OOP concepts.
Implement a function that processes shape definitions using classes. Your solution should demonstrate abstraction, inheritance, encapsulation, polymorphism, and aggregation through a common shape interface.
shapes is a list of dictionaries with type and numeric dimensions. Return a list of dictionaries containing each shape's type, rounded area, and rounded perimeter. Round values to two decimal places.
def demonstrate_oop(shapes):