Концепция объектно-ориентированного программирования

Поскольку все современные средства разработки программного обеспечения, языки и технологии создания программ продолжают основываться на объектно- ориентированном программировании, предлагаем ознакомиться с основными положениями этого подхода. Объектно-ориентированное программирование бази­руется на четырех основных принципах: абстракции, наследовании, инкапсуляции и полиморфизме.

19.3.1. Абстракция


 

Классы представляют собой абстрактные описания структур данных, но сами данные они не содержат. Данные появляются тогда, когда по описаниям классов в памяти программы выделяется необходимое пространство и в нем создаются экземпляры класса, или объекты. Тогда для каждого поля класса отводится необ­ходимая область памяти и в эту область можно поместить нужное значение.


Пример. Предположим, у нас есть три измерительных прибора: термометр, ба­рометр и весы. Чтобы описать эти приборы внутри программы, мы абстрагируем важные для программы свойства этих приборов и создаем три класса (рис. 19.4).

Рис. 19.4. Классы

 

По названиям в соответствующих ячейках видно, что поля класса содержат в себе данные, описывающие состояние класса. Методы класса представляют реализа­цию некоторых действий, то есть описывают поведение класса. Например, метод класса «термометр», который носит название «измерить температуру», призван помещать значение температуры в поле с именем «температура». На рис. 19.5 представлены объекты (экземпляры класса).


 

 


Экземпляр класса «термометр»
Инв. номер
Название TRM
Цвет белый
Исполнение оконный
Температура
Измерить температуру

 

Экзмпляр класса «весы»
Инв. номер
Название VSV
Цвет серый
Исполнение напольные
Вес
Измерить вес

 

Экземпляр класса «барометр»
Инв. номер
Название DRM
Цвет хром
Исполнение настенный
Давление
Измерить давление

Рис. 19.5. Экземпляры классов
19.3.2. Наследование

 

 


Пример. В рассмотренном примере у трех разных классов есть одинаковые поля: Инв. номер, Название, Цвет, Исполнение. Каждый раз при создании нового класса из­мерительного прибора приходится снова и снова создавать эти поля. Данная ситу­ация значительно упрощается за счет наследования: мы создаем класс Измеритель, в который помещаем эти повторяющиеся поля, а затем наследуем от него наши классы Термометр, Весы и Барометр (рис. 19.6).


класс «измеритель»


 

 


. Инв. -номер' :

'Название-'

.Цвет.'

,Исполнение :


 

 


класс «весы» наследник класса «измеритель» класс «барометр» наследник класса «измеритель»


 

 


Давление•

Температура

ШШШШШШ^йиш

Рис. 19.6. Наследование

Широкая кривая на рисунке показывает, что при наследовании поля и методы базового класса включаются в состав класса потомка.

19.3.3. Полиморфизм

Полиморфизм основывается на двух свойствах, которые реализуют объектно- ориентированные языки программирования: способности трактовать объект клас­са-наследника как тип базового класса и способности класса иметь виртуальные методы. Особенность виртуального метода состоит в том, что он надежно связан с созданным экземпляром класса.

Пример. Если добавить в каждый из классов (в класс Измеритель и каждый из его наследников) метод Сигналить, а в реализации этого метода описали бы для каждо­го класса свой способ подавать сигнал (для термометра — мигать, для весов — из­давать звук сирены, а для барометра — свистеть), то мы могли бы всем объектам, потомкам класса Измеритель, дать команду: измерители, сигналить! И каждый из них подал бы сигнал: термометры бы замигали, весы издали звук сирены, а баро­метры засвистели. Это и есть результат работы виртуальных методов.

19.3.4. Инкапсуляция


 

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








Дата добавления: 2016-04-14; просмотров: 535;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.