An approach to system development in which the basic unit of attention is an object, which represents an encapsulation of both data an object’s attributes and functionality(Objects usually are created using a general template called a class. A class is the basis for most design work in objects. A class and its objects communicate in defined ways. Aggregate classes interact through messages, which are directed requests for services from one class (the client) to another class (the server). A class may share the structure or methods defined in one or more other classes - a relationship known as inheritance; an object’s methods)