Мысли
о
Паскале
Г
Владислав ДЕМЬЯНИШИН
Продолжение, начало см. в МК, № 46, 51-52, 4, 6 -7 , 10, 12-13, 16~18, 22, 24, 29, 34, 41, 46, 4, 6, 17, 21, 23, 28, 30,
32, 39, 42, 45, 47, 52, 2, 7, 18-19, 23 (165, 170-171, 175, 177-178, 181, 183-184, 187-189, 193, 195, 200, 205, 212,
217, 227, 229, 240, 244, 246, 251, 253, 255, 262, 265, 268, 270, 275, 277, 282, 293-294, 298)
Средства объектно-ориентированного программирования
П
ри каждом удобном случае всякий раз твердят о «трех
китах» объектно-ориентированного программирования
(О О П ) — трех вожнейших принципах, коими являются
инкапсуляция, нсследовсние и полиморфизм. Рсссмот-
рим-ко поближе этих диковинных зверей.
Инкапсуляция —
это объединение донных и подпрограмм
обработки этих донных в единую программную структуру
(объект). В О О П данные называются
полями (fields)
объекте,
с подпрограммы —
объектными методами (methods).
Инкапсуляция обеспечивсет в широкой степени изоляцию объ-
екта от внешнего окружения и существенно повышает надеж-
ность разрабатываемых программ, поскольку локализованные в
объекте подпрограммы обмениваются с программой сравнитель-
но небольшими объемами данных, причем количество и тип этих
данных обычно тщательно контролируются. Как следствие, заме-
на или модификация методов и данных, инкапсулированных в объ-
ект, кок правило, не влечет за собой плохо прослеживоемых по-
следствий для программы в целом (из соображений защиты в
О О П почти не используются глобальные переменные).
Еще одним немаловажным достоинством инкапсуляции яв-
ляется легкость и простота обмена объектами, переноса их
из одной программы в другую. В какой-то мере О О П побу-
ждает программистов к разработке
библиотек объектов.
Объект
— это структура данных, по виду напоминающая
комбинированный тип (запись), но может содержать не толь-
ко поля, но и методы (процедуры и функции).
Описание типа объекта выглядит почти так же, как и опи-
сание составного типа, однако вместо служебного слова
r e c o r d используется служ ебное слово o b j e c t :
t y p e
T L i n e - o b j e c t
L e f t , T o p , R i g h t , B o t t o m : i n t e g e r ;
E n a b l e d : b o o l e a n ;
e n d ;
где
L e f t , T o p , R i g h t , B o t t o m , E n a b l e d — поля объекта. Токой
объект может хранить, например, координаты
L e f t , т о р и R i g h t ,
B o t t o m вершины отрезка на экране, и статус видимости E n -
a b l e d на экране. Э то пример простейшего объекта, и пока
преимуществ над обычными зописями не видно. В отличие от
записи, объект может иметь
подпрограммы,
управляющие его
поведением в соответствии со значениями его полей. Тогда
можно объявить метод
C r e a t e ( L e f t , T o p , R i g h t , B o t t o m :
i n t e g e r ) для начальной инициализации объекта. При этом
имена входных параметров подпрограммы
C r e a t e совпадут с
именами полей объекта, что может привести к ошибке компи-
ляции
Error 4: Duplicate identifier (Left)
(продублирован иденти-
фикатор Lett). Поэтому логичнее будет все имена полей объек-
та озаглавливать буквой
F (от слова
Field
— «поле»), тогда объ-
явление объекта будет выглядеть по-другому:
t y p e
T L i n e = o b j e c t
F L e f t , F T o p , F R i g h t , F B o t t o m : i n t e g e r ;
F C o l o r : w o r d ;
F E n a b l e d : b o o l e a n ;
p r o c e d u r e C r e a t e ( A L e f t , A T o p , A R i g h t , A B o t t o m :
i n t e g e r ) ;
p r o c e d u r e S e t C o l o r ( A C o l o r : w o r d ) ;
p r o c e d u r e E n a b l e ;
p r o c e d u r e D i s a b l e ;
p r o c e d u r e M o v e ( A L e f t , A T o p : i n t e g e r ) ;
f u n c t i o n L e f t : i n t e g e r ;
f u n c t i o n T o p : i n t e g e r ;
f u n c t i o n R i g h t : i n t e g e r ;
f u n c t i o n B o t t o m : i n t e g e r ;
f u n c t i o n E n a b l e d : b o o l e a n ;
e n d ;
В объявлении типа объекта, кск и в данном объявлении, за-
головки методов указываются после объявления всех полей
объекта. И раз уж в объявлении указаны заголовки методов
объекта, то далее в листинге следует обязательно указать пол-
ное описание методов, при этом имя метода должно состоять
из имени типа объекта и собственного имени метода, разде-
ленных точкой (по аналогии с комбинированными типами):
p r o c e d u r e T L i n e . C r e a t e ( A L e f t , A T o p , A R i g h t , A B o t t o m
: i n t e g e r ) ;
b e g i n
F L e f t ; = A L e f t ;
F T o p : = A T o p ;
F R i g h t : = A R i g h t ;
F B o t t o m : = A B o t t o m ;
F C o l o r : = W h i t e ;
F E n a b l e d : = f a l s e ;
e n d ;
p r o c e d u r e T L i n e . S e t C o l o r ( A C o l o r : w o r d ) ;
b e g i n
F C o l o r : = A C o l o r ;
e n d ;
p r o c e d u r e T L i n e . E n a b l e ;
b e g i n
i f F E n a b l e d t h e n e x i t ;
F E n a b l e d : = t r u e ;
G r a p h . S e t C o l o r ( F C o l o r ) ;
L i n e ( F L e f t , F T o p , F R i g h t , F B o t t o m ) ;
e n d ;
p r o c e d u r e T L i n e . D i s a b l e ;
b e g i n
i f n o t F E n a b l e d t h e n e x i t ;
F E n a b l e d : = f a l s e ;
G r a p h . S e t C o l o r ( G e t B k C o l o r ) ;
L i n e ( F L e f t , F T o p , F R i g h t , F B o t t o m ) ;
e n d ;
p r o c e d u r e T L i n e . M o v e ( A L e f t , A T o p : i n t e g e r ) ;
v a r d x , d y : i n t e g e r ;
b e g i n
D i s a b l e ;
d x ; = F R i g h t — F L e f t ;
d y : = F B o t t o m — F T o p ;
F L e f t : = A L e f t ;
F T o p : = A T o p ;
F R i g h t : = F L e f t + d x ;
F B o t t o m : = F T o p + d y ;
E n a b l e ;
e n d ;
f u n c t i o n T L i n e . L e f t : i n t e g e r ;
b e g i n
L e f t : = F L e f t ;
e n d ;
f u n c t i o n T L i n e . E n a b l e d : b o o l e a n ;
b e g i n
E n a b l e d : = F E n a b l e d ;
e n d ;
№39/314 27 сентября -04 октября 2004
предыдущая страница 37 Мой Компьютер 2004 39 читать онлайн следующая страница 39 Мой Компьютер 2004 39 читать онлайн Домой Выключить/включить текст