Предлагаю Вашему вниманию статью об объектно-ориентированном программировании на языке Java
Статья написана на основе официальной документации фирмы Sun Microsystems, Inc
v:1.0 2008.05.11
Что такое объект?
Объект - это ключ к пониманию объектно-ориентированной технологии. Прямо сейчас посмотрите вокруг и Вы увидите множество примеров объектов
реального мира: Ваша собака, Ваш стол, телевизор, велосипед.
Объекты реального мира наделены двумя характеристиками: состояние и поведение. Собака имеет "состояние" (кличка, масть, шерсть, аппетит) и поведение
(лай, виляние хвостом). Велосипед тоже имеет состояние (текущая передача, текущая скорость) и поведение (изменение передачи, изменение скорости).
Чтобы начинать думать в терминах объектно-ориентированного программирования, надо выделить состояние и поведение объекта. Прямо сейчас уделите пару
минут рассмотрению объектов реального мира, которые располагаются вокруг Вас. Для каждого объекта, которые Вы видите, ответьте на вопросы:
"Какие возможные состояния может принимать этот объект?", "Какие действия может выполнять этот объект?". Запишите Ваши наблюдения. Вы, наверняка,
заметили, что объекты различны по сложности; Ваша настольная лампа имеет два возможных состояния (включена и выключена) и два возможных действия
(включить, выключить), однако настольное радио может иметь такой набор состояний: включено, выключено, текущая громкость, текущая станция;
и возможные действия: включить, выключить, увеличить громкость, уменьшить громкость, искать, станцию и т.д. Кроме того, Вы можете заметить, что
некоторые объекты содержат другие объекты. Все эти объекты реального мира могут быть переведены в объекты объектно-ориентированного программирования.
Принципиально программные объекты не отличаются от объектов реального мира: они все описываются состоянием и поведением. Объект хранит свое
состояние в полях (переменные в некоторых языках программирования) и реализует свое поведение через методы (функции в некоторых языках
программирования). Методы оперируют с внутренним состоянием объекта и рассматриваются как главный механизм объектно-ориентированной коммуникации.
Сокрытие внутреннего состояния и требование работать с ним исключительно через методы называется инкапсуляцией. Инкапсуляция - это фундаментальный
принцип объектно-ориентированного программирования.
Возьмем для примера велосипед.
Через атрибуты состояния (текущая скорость, текущая передача) и методы изменения этого состояния объект сохраняет корректность своего состояния и показывает как может быть использован. Например, если велосипед имеет только шесть передач, метод изменения передачи не примет значения, которые меньше одного и больше шести.
Сокрытие кода внутри объекта имеет ряд преимуществ:
Модульность. Исходный код объекта может быть написан и изменен независимо от кода других объектов. Однажды созданный, объект может быть
произвольно использован в системе.
Сокрытие информации. Все взаимодействия с объектом осуществляются по средствам методов, при этом детали внутренней реализации скрыты от внешнего
мира.
Повторное использование кода. Если объект уже существует (возможно, создан другим разработчиком), Вы можете использовать его в своей программе.
При таком подходе, Вы можете использовать специфические объекты, написанные и протестированные узкими специалистами.
Легкость отладки и подключения. Если какой-то объект работает нестабильно, Вы можете просто удалить его из приложения и заменить другим.
В качестве аналогии можно привести пример из реального мира. Если у Вас сломался болт, то Вы меняете сломанный болт, а ни весь механизм.
Что такое класс?
В реальном мире Вы часто встречаете множество объектов одного вида. Например, это могут быть тысячи велосипедов одного производства и одной модели.
Все велосипеды собраны по одному набору чертежей и поэтому состоят из одних и тех же компонентов.
В объектно-ориентированных терминах мы можем сказать, что Ваш велосипед - это экземпляр класса объектов, названных велосипеды. Класс - этот и есть
тот самый чертеж, из которого создаются конкретные объекты.
Ниже приведен пример класса, одна из возможных реализаций.
Синтаксис языка программирования Java покажется вам новым, однако логика класса основана на предыдущем обсуждении объектов велосипед. Поля cadence,
speed и gear - это состояние объекта, а методы (changeCadence, changeGear, speedUp и т.д.) определяют взаимодействие с внешним миром.
Возможно, вы заметили, что класс Bicycle не содержит метод main. А все потому, что это не законченное приложение, это всего лишь чертеж велосипедов, который Вы можете использовать в приложении. Ответственность за использование нового объекта возлагается на другие классы вашего приложения
Ниже представлен пример класса BicycleDemo, класс создает два отдельных объекта Велосипед и вызывает их методы.
class BicycleDemo
{
public static void main(String[] args)
{
// Создание двух объектов Велосипед.
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Вызов методов этих объектов
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}