Object Oriented Programming
Programs are populated by objects, which
communicate with each other
By delegating specific and narrow
responsibilities to each object, the programmer
can break down the programming problem into
chunks and thus manage complexity easier
Objects are characterized as having: state,
operations and identity