Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
12.05.2015
Размер:
1.82 Mб
Скачать

Глава 2

Обзор языка Java

Подобно другим машинным языкам, элементы языка Java не существуют изолированно друг от друга. Скорее они работают совместно, чтобы сфор­мировать язык в целом. Однако эта взаимосвязь может затруднить описание одного аспекта Java без учета некоторых других. Часто обсуждение одного свойства означает априорное знание другого. Поэтому в данной главе пред­ставлен краткий обзор нескольких ключевых свойств языка Java. Приведен­ный здесь материал даст точку опоры, которая позволит вам писать и пони­мать простые программы. Большинство обсужденных здесь тем будет более детально рассмотрено в остальных главах Части I.

Объектно-ориентированное программирование

Сущность языка Java составляет объектно-ориентированное программирование (OOP, Object-Oriented Programming). Фактически все программы Java объ­ектно-ориентированы (тогда как, например, в языке C++ это не так). Объ­ектно-ориентированное программирование так интегрировано с языком Java, что вы должны понять его основные принципы, прежде чем сможете написать даже самую простую Java-программу. Потому эта глава начинается с обсуждения теоретических аспектов OOP.

Две парадигмы программирования

Как вы знаете, все компьютерные программы состоят из двух элементов: кода и данных*. Любая программа может быть концептуально организована

1 В записи программы на исходном языке под кодом понимают набор исполняемых утвержде­ний, определяющих алгоритм обработки данных, а под данными — описатели переменных, используемых в этом алгоритме. — Примеч. пер.

30 Часть I. Язык Java

либо вокруг ее кода, либо вокруг ее данных. Иначе говоря, некоторые про­граммы концентрируют свою запись вокруг того, "что делается с данными"1, а другие — вокруг того, "на что этот процесс влияет"2. Существуют две пара­дигмы (основополагающих подхода), которые управляют конструированием программ. Первый подход называет программу моделью, которая ориентиро­вана на процесс (process-oriented model). При этом подходе программу опре­деляют последовательности операторов ее кода. Модель, ориентированную на процесс, можно представлять как кодовое воздействие на данные (code acting on data). Процедурные языки, такие как С, успешно эксплуатируют такую модель. Однако, как указывалось в главе 1, при этом подходе возни­кают проблемы, когда возрастает размер и сложность программ.

Второй подход, названный объектно-ориентированным программированием, был задуман для управления возрастающей сложностью программ. Объект­но-ориентированное программирование организует программу вокруг своих данных (т. е. вокруг объектов) и набора хорошо определенных интерфейсов (взаимодействий) с этими данными. Объектно-ориентированную программу можно характеризовать как управляемый данными доступ к коду (data control­ling access to code). Как вы увидите далее, переключая управление на дан­ные, можно получить некоторые организационные преимущества.

Абстракция

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

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

1 То есть вокруг процесса обработки, определяемого кодом. — Примеч. пер.

2 То есть вокруг самих данных. — Примеч. пер.

Соседние файлы в папке JavaLit