http://docs.oracle.com/javase/tutorial/java/concepts/object.html Объекты это ключ к пониманию объектно-ориентированной технологии. Оглядитесь сейчас и вы найдете много примеров объектов реального мира: ваша жена, ваш рабочий стол, ваш телевизор, велосипед.
Объекты реального мира делят две характеристики: они все имеют состояние и поведение. Собака имеет состояние (имя, цвет, порода, голод) и поведение (лай, приносить убитую дичь, виляющий хвост). Велосипед также имеет состояние (текущая передача, текущая частота вращения педалей, текущая скорость) и поведение (изменение передачи, изменение частоты вращения педалей, применение тормоза). Определение состояния и поведения для объектов реального мира это лучший путь начинать размышлять в терминах ООП.
Прямо сейчас на минуту осмотрите объекты реального мира, что непосредственно в вашем окружении. Для каждого объекта, что вы видите, задайте себе два вопроса: «В каких возможных состояниях этот объект может быть?» и «Какое поведение этот объект может показывать?». Сделайте запись ваших наблюдений. После того как вы сделаете, вы заметите, что объекты реального мира различаются по сложности; ваша настольная лампа может иметь только два возможных состояния (вкл. и выкл.) и два возможных поведения (включать, выключать), но ваше настольное радио может иметь дополнительные состояния (вкл., выкл., текущая громкость и текущая станция) и поведение (включить, выключить, прибавить громкость, убавить громкость, искать, сканировать, настраивать). Вы можете также заметить, что некоторые объекты, в свою очередь, будут также включать другие объекты. Эти наблюдения реального мира все переводят в мир ООП.
Программные объекты концептуально похожи на объекты реального мира: они тоже состоят из состояния и связанного поведения. Объект хранит свое состояние в полях (переменные в некоторых ЯП) и показывает свое поведение через методы (функции в некоторых ЯП). Методы действуют на внутреннее состояние объекта и служат как первичный механизм для коммуникации объект-объект. Скрытие внутреннего состояния и требование представить все взаимодействие через методы объекта известно как инкапсуляция данных - фундаментальный принцип ООП.
Описывая состояние (текущая скорость, текущая частота вращения педалей и текущая передача) и обеспечивая методы для изменения этого состояния, объект продолжает контролировать то, как внешнему миру разрешено его использовать. Например, если велосипед имеет только 6 передач, метод изменения передач может отклонять любое значение что меньше чем 1 или больше чем 6.
Объединение кода в индивидуальные программные объекты предоставляет несколько преимуществ, включающих:
1. Модульность: Исходный код объектов может быть записан и поддерживаться в рабочем состоянии независимо от исходного кода других объектов. Единожды созданный объект может легко передаваться внутри системы.
2. Скрытие информации: Взаимодействуя только с методами объекта, детали его внутренней реализации остаются скрытыми от окружающего мира.
3. Повторное использование кода: Если объект уже существует (возможно, написан другим программистом), вы можете использовать этот объект в своей программе. Это позволяет специалистам реализовывать, тестировать, отлаживать комплексные, специализированные объекты, которым вы можете доверить запуск в вашем коде.
4. Облегчение замены и отладки: Если отдельный объект становится проблемным, вы можете легко удалить его из вашего приложения и вставить другой объект как замену. Это аналогично решению механических проблем в реальном мире. Если болт ломается, вы меняете его, не всю машину.