oop

Академический подход к объектно-ориентированному программированию: 
Все является объектом. Представьте себе объект как усовершенствованную переменную, он хранит данные, но к нему можно обращаться с запросами, приказывая объекту выполнять операции над собой. Теоретически, абсолютно любой компонент решаемой задачи (собака, здание, услуга и т.п.) может быть представлен в виде объекта.
Программа — это набор объектов, указывающих друг другу что делать, посредством сообщений. Чтобы обратиться к объекту с запросом — вы посылаете ему сообщение. Более наглядно можно представить сообщение как запрос на вызов метода, принадлежащего определенному объекту.
Каждый объект имеет собственную память, состоящую из других объектов. Иными словами, вы создаете новый объект путем встраивания в него уже существующих объектов. Таким образом можно сконструировать сколь угодно сложную программу, скрывая общую сложность за простотой отдельных объектов.
У каждого объекта есть тип. В других терминах, каждый объект является экземпляром класса, где «класс» является синонимом понятия «тип». Важнейшее отличие классов друг от друга и заключается в ответе на вопрос, какие сообщения можно объекту послать?
Все объекты определенного типа могут получать одинаковые сообщения. Это важное обстоятельство, так объект типа «круг» так же является объектом типа «фигура», справедливо утверждение, что «круг» заведомо способен принимать сообщения для  «фигуры». А это значит что можно писать код для фигур и быть уверенным что он подойдет для всего, что подпадает под определение фигуры. Взаимозаменяемость представляет собой одно из самых мощных понятий ООП.
Объект обладает: 
— состоянием
— поведением
— индивидуальностью.