Абстракция


Важный элемент объектно-ориентированного программирования — абстракция. Человеку свойственно представлять сложные явления и объекты посредством абстракции. Например, люди представляют себе автомобиль не в виде набора десятков тысяч отдельных деталей, а в виде совершенно определенного объекта, имеющего собственное уникальное поведение. Эта абстракция позволяет не задумываться о сложности деталей, образующих автомобиль, используя его, скажем, для поездки в магазин. Мы можем не обращать внимания на подробности работы двигателя, коробки передач и тормозной системы. Вместо этого объект можно использовать как единое целое.

Мощное средство применения абстракции — применение иерархических классификаций. Это позволяет упрощать семантику сложных систем, разбивая их на более пригодные для управления фрагменты. Внешне автомобиль выглядит единым объектом. Но стоит заглянуть внутрь, как становится ясно, что он состоит из нескольких подсистем: рулевого управления, тормозов, аудиосистемы, привязных ремней, обогревателя, навигатора и т.п. Каждая из этих подсистем, в свою очередь, собрана из более специализированных узлов. Например, аудиосистема состоит из радиоприемника, проигрывателя компакт-дисков и/или устройства воспроизведения аудиокассет. Суть сказанного в том, что сложную структуру автомобиля (или любой другой сложной системы) можно описать с помощью иерархических абстракций.

Иерархические абстракции сложных систем можно применять и к компьютерным программам. Посредством абстракции данные традиционной ориентированной на процессы программы можно преобразовать в составляющие ее объекты. При этом последовательность шагов процесса может быть преобразована в коллекцию сообщений, передаваемых между этими объектами. Таким образом, каждый и этих объектов описывает свое уникальное поведение. Эти объекты можно считать конкретными элементами, которые отвечают на сообщения, указывающие им о необходимости выполнить что-либо. Сказанное — суть объектно-ориентированного программирования.

Концепции объектной ориентированности лежат в основе языка Java, точно так же, как они лежат в основе восприятия мира человеком. Важно понимать, как эти концепции реализуются в программах. Как вы увидите, объектно-ориентированное программирование — мощная и естественная концепция создания программ, которые способны пережить неизбежные изменения, сопровождающие жизненный цикл любого крупного программного проекта, включая создание концепции, рост и старение. Например, при наличии тщательно определенных объектов и четких, надежных интерфейсов к этим объектам можно безбоязненно и без особых проблем извлекать или заменять части старой системы.