Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭ-2013-анн-130515.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

6.2. Классы в современных системах программирования. Общие, собственные и защищенные области. Свойства, их назначение, описание и использование. Владелец и родитель класса

Объектно-ориентированный подход к программированию даже в обычном, классическом варианте обладал большим потенциалом применения и развития в силу того, что программа зачастую представляет собой модель реальной среды. Но наиболее бурное развитие он получил с изобретением визуального программирования. Первый такой язык и визуальная среда – это Visual Basic, создание графического пользовательского интерфейса в котором стало под силу даже новичку. В среде Visual Basic можно быстро создать приложение для операционной системы Windows со всеми присущими графическому пользовательскому интерфейсу элементами. Однако применение в практическом программировании у этого языка было минимальное из-за отсутствия связи с базами данных. Первая визуальная среда, позволившая работать с базами данных – это Borland Delphi.

В настоящее время, когда объектно-ориентированная парадигма стала доминирующей, практически все языки программирования реализованы именно в ней. Конечно, они отличаются рядом внешних признаков, но ключевые идеи у них одинаковы. Будем рассматривать структуру современных языков на примере Delphi.

Инкапсуляция (encapsulation) – это механизм, который объединяет данные и код, манипулирующий этими данными, в один объект, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта и недоступны для частей программы, которые существуют вне объекта. Если коды и данные открыты (public), то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы.

{нужно добавить про защищённые области (protected), про описание свойств (property), а также про владельцев класса}

Каждому классу, за исключением самого первого в иерархии классов, предшествует класс-родитель. В свою очередь, любой класс можно использовать для создания других классов, и он в этом случае будет являться их родителем. В Delphi у класса бывает только один родитель. В Delphi классы образуют иерархическое дерево с классом TObject в роли корня. Иерархическое дерево реализуется довольно просто: при определении в среде-разработке нового класса указывается класс-предок:

TMyListBox=class(TListBox)

end;

Разрешается не указывать класс-предок. В этом случае по умолчанию считается, что предком является TObject. Код вида

TMyClass=class

end;

эквивалентен записи

TMyClass=class(TObject)

end;

Такое объявление однозначно определяет место нового класса в иерархии классов. Кроме того, оно означает, что все переменные и методы класса-предка копируются в новый класс. Объявлением TMyListBox=class(TListBox) мы получили новый класс, который обладает всеми свойствами списка: в него можно добавлять строки, он будет показан на форме, при необходимости на нем автоматически появится вертикальная полоса прокрутки и т.д. Таким образом, при продвижении по ветвям иерархического дерева происходит накопление переменных и методов. Например, класс TWinControl имеет все переменные и методы, определенные в классах TControl, TComponent, TPersistent и TObject. Самый простой класс – TObject – не имеет предка. Он также не имеет полезных при обычном написании приложений методов и переменных. Однако он играет важнейшую роль в поведении объектов.