ВУЗ:
ты, изменяются в зависимости от их формы – процесс рисования квадрата отличается от процесса рисования окружности. Дан-
ный механизм специфической интерпретации одного и того же сообщения называется полиморфизмом (polymorphism), а соот-
ветствующее сообщение – полиморфным.
Другим свойством, связанным с объектно-ориентированным программированием, является инкапсуляция
(encapsulation), которая означает ограничение доступа к внутренним свойствам объекта. Если сказать, что некоторое свойст-
во объекта является инкапсулированным, это будет равноценно утверждению, что доступ к этому свойству может иметь
только сам объект. Инкапсулированные свойства называются закрытыми (private), а свойства, доступные извне объекта, –
открытыми (public). Например, рассмотрим объект нашей программы для моделирования бизнеса, имеющий "тип"
HailOrderBusiness. Следует ожидать, что этот объект будет содержать метод, описывающий его реакцию на поступле-
ние заказа. Прочим объектам потребуется обращаться к данному методу в целях передачи некоторого заказа. Следовательно,
доступ к этому методу должен быть открытым. Однако детальные сведения о том, как именно данное предприятие выполня-
ет заказ, должны быть доступны только внутри объекта. Это означает, что все эти детали должны быть закрытыми. Боль-
шинство объектно-ориентированных языков программирования позволяет программисту определять непосредственно в опи-
сании класса, какие части объекта являются открытыми, а какие – закрытыми. Например, описание класса MailOrder-
Business на языке Java может выглядеть следующим образом:
class MailOrderBusiness extends SmallBusiness
{
public ...
private ...
private ...
public ...
}
Здесь ключевые слова public и private в начале описания каждого компонента используются для того, чтобы указать
вид доступа к ним.
Вопросы для самопроверки
1. В чем заключается отличие между объектом и классом?
2. Предположим, что классы PartTimeEmployee (Временный работник) и FullTimeEmployee (Постоянный ра-
ботник) наследуют свойства класса Employee (Работник). Укажите, какими свойствами, по Вашему мнению, должен обла-
дать каждый из этих классов.
3. Что такое инкапсуляция?
5.6. ПРОГРАММИРОВАНИЕ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ*
Предположим, что нам поручили разработать программу для анимации объектов в компьютерной игре, включающей в
себя бегущее стадо антилоп, марширующую колонну муравьев или, например, множество атакующих вражеских космиче-
ских кораблей. Один из подходов к решению этой задачи – создание единой программы, которая управляла бы всей анима-
цией на экране дисплея. В задачу такой программы входило бы рисование каждой антилопы, которое (если требуется доста-
точно реалистичная анимация) предполагало бы, что программа должна непрерывно вычислять индивидуальные параметры
для каждого из ста животных. Альтернативный подход состоит в разработке программы, управляющей анимацией отдельной
антилопы, характеристики которой определяются параметрами, задаваемыми при запуске этой программы. Теперь анима-
цию на всем экране можно было бы создать посредством выполнения ста запусков этой программы и использования в каж-
дом случае собственного набора параметров. Выполнив эти запуски одновременно, можно получить иллюзию, что сто от-
дельных антилоп бегут на экране в одно и то же время. (Хотя, строго говоря, одновременное выполнение ста запусков такой про-
граммы и превосходит возможности современных компьютеров, тем не менее, пять запусков программы, имитирующей атаку
космического корабля, не должны составить проблемы; на практике этот прием применяется довольно часто.)
Одновременное выполнение нескольких запусков программы называется параллельной обработкой. Для действительно
параллельной обработки данных необходимо несколько центральных процессоров, каждый из которых будет выполнять от-
дельную запущенную копию программы. Когда в наличии есть только один центральный процессор, для создания иллюзии
параллельной обработки можно разрешить нескольким процессам совместно использовать время единственного процессора
(этот вопрос обсуждался в главе 3).
Языки программирования для написания программ, выполняющих параллельную обработку данных, первоначально
предназначались для разработки операционных систем. Однако, как показывает приведенный в начале раздела пример, мно-
гие современные компьютерные приложения легче реализовать с использованием параллельной обработки, чем традицион-
ным способом, предусматривающим запуск единственной программы. В свою очередь, современные языки программирова-
ния имеют синтаксические конструкции, предназначенные для выражения семантических структур, необходимых при па-
раллельной обработке данных. Разработка таких языков требует выявления подобных синтаксических структур и определе-
ния синтаксиса для их выражения.
Анимация в кинофильмах. Конечно, было бы неверным связывать начало современной анимации с одним-
единственным кинофильмом, однако многие считают фильм Звездные войны (Lucasfilm, 1977) началом современной
волны компьютерной анимации в кинематографе. В настоящее время технология, использовавшаяся при создании
таких классических мультфильмов Уолта Диснея, как Спящая красавица и Фантазия, и предусматривающая созда-
ние многочисленных, сделанных вручную кадров, заменена технологиями компьютерной анимации, требующими
применения современных многопроцессорных компьютерных систем. Кинозритель может согласиться, что примеры,
описанные в начале этого раздела (бегущие антилопы и марширующие полчища муравьев), вовсе не являются наду-
манными. Это – примеры из реальных кинофильмов, которые созданы с использованием компьютерных технологий
(хотя и не обязательно так, как это описано в тексте, поскольку, в отличие от компьютерных игр, анимация в кино-
Страницы
- « первая
- ‹ предыдущая
- …
- 131
- 132
- 133
- 134
- 135
- …
- следующая ›
- последняя »