Finding common properties among set of objects so as to differentiate identified set of objects from other sets of objects. Example: Classification of anything e.g. taxonomy in biology. Defining classes in source code with defined characteristics.
Tree like structure Examples: Inheritance tree of classes. ‘Part of’ relationship among parts of composite object. ‘Reports to’ relations among employees in a company.
Degree to which system is capable of being disassembled or assembled into/with many parts at a reasonable cost Example: Cup is not very modular as if you ‘disassemble’ it by breaking, putting it back together, exactly as it was like before, will be tough. Laptop is more modular as you can disassemble it with screw [...]
Multiple implementations behind single public interface Examples: Multiple cars with different engines behind similar interface to drive them. Virtual method with same signature implemented in different classes in same hierarchy. Two different classes implementing same interface.
Private implementation behind public interface Example: Car engine is an implementation which is ‘hidden’ behind public interface made up of steering wheel, clutch, gear-knob, brakes, accelerator and key. In a restaurant, waiter is public interface which hides kitchen & chefs – an implementation. Computer IO (Display, mouse, keypad, touchpad) is an interface while mother-board, processor, [...]