SOLID:
S: Single Responsibility One class shouldn't do multiple things, It should have a single responsibility
O: Open close: A class should be open to add features, close to modifications
L: Liskov principle A child class should be able to all functions same as its parent class
I: Interface seggregation: Clients should not be forced to depend on methods they cant do/do not use
D: Dependency inversion: High level modules should not depend on the low level modules, both should be dependent on the abstraction modules A robot can cut a pizza (using knife, chakum kartri should be flexible)