Большая часть из того, что говорилось об объектах до сих
пор, исходит из удобств и перспектив Borland Pascal, поскольку
наиболее вероятно, что это именно то, с чего вы начнете. Теперь
начнутся изменения, поскольку мы подошли к концепциям объект-
но-ориентированного программирования с помощью некоторых принци-
пов программирования на стандартном Паскале. Объектно-ориентиро-
ванное программирование имеет свое собственное отдельное множест-
во понятий, частично благодаря началам объектно-ориентированного
программирования (до некоторой степени ограниченным) в научных
кругах, однако также и потому, что эта концепция действительно
является радикально отличной от других.
Примечание: Объектно-ориентированные языки однажды ме-
тафорично назвали "языками актеров".
Одним, часто забавным, следствием этого явилось то, что объ-
ектно-ориентированное программирование фанатично "одушевляет"
свои объекты. Отныне данные для вас не емкости, которые вы можете
наполнять значениями. С точки зрения нового взгляда на вещи, объ-
екты выглядят как актеры на подмостках со множеством заученных
ролей (методов). Если вы (директор) даете им слово, то актеры на-
чинают декламировать в соответствии со сценарием.
Было бы полезно представить функцию AnHourly.GetPayAmount
как, например, дающую распоряжение объекту AnHourly "Вычислить
размер вашей ежедневной платы". Центральной концепцией здесь яв-
ляется объект. Этот объект обслуживают как список методов, так и
список полей данных, содержащихся в объекте. И ни код, ни данные
не являются здесь "директором".
Чтобы быть совсем привлекательным, объект не может быть опи-
сан как актер на сцене. Образцу объектно-ориентированного прог-
раммирования с большим трудом удается моделировать составляющие
проблемы как компоненты, а не как логические абстракции. Случай-
ности и закономерности, наполняющие нашу жизнь (от тостеров до
телефонных звонков по поводу махровых полотенец) все имеют харак-
теристики (данные) и линии поведения (методы). Характеристики
тостера могут включать требуемое напряжение, число гренок, кото-
рые он может поджарить одновременно, установку слабого или силь-
B.Pascal 7 & Objects /UG - 210 -
ного уровней поджаривания, цвет тостера, его фабричную марку и т.
д. Его поведение может включать загрузку кусков хлеба, поджарива-
ние этих кусков и автоматическое выталкивание готовых гренок на-
ружу.
Если мы хотим написать программу имитации кухни, то какой же
имеется наилучший способ смоделировать различные приспособления,
кроме объектов, с их характеристиками и линиями поведения, зако-
дированными в поля данных и в методах? Фактически, это уже сдела-
но: один из первых объектно-ориентированных языков (Симула-67)
был создан как язык для написания таких имитаций.
Есть также причина того, что объектно-ориентированное прог-
раммирование довольно крепко связано в традиционном смысле с ори-
ентированной на построение графиков средой. Объекты должны быть
моделями, и есть ли лучший способ смоделировать объект, чем нари-
совать его изображение? Объекты в Borland Pascal должны имитиро-
вать компоненты проблему, которую вы пытаетесь разрешить. Примите
это во внимание, если в дальнейшем вы намерены эксплуатировать
новые объектно-ориентированные расширения Borland Pascal.