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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Наследование

Чтобы наиболее эффективно повторно использовать ранее созданные классы, одного

сочетания данных и методов в единой структуре недостаточно. Например, автомо-

биль может быть легковым и грузовым, и соответствующие классы будут иметь

как общие поля и методы, так и отличия (например, дополнительное свойство ≪гру-

зовой кузов* и связанный с ним метод ≪разгрузить≫). Однако полностью заново

определять новый тип данных, если требуется изменить или добавить несколько

новых свойств к старому типу, нерационально. Это плохо еще и потому, что если в

Клоссы и обьекты 85

метод, имеющийся в обоих классах, потребуется внести исправления, то их при-

дется делать дважды, в двух одинаковых копиях подпрограмм.

Чтобы избежать ненужной работы, в объектном программировании был введен

принцип наследования свойств и методов. Программисту достаточно описать один

базовый класс (например, ≪автомобиль*), а классы ≪легковой автомобиль≫ и ≪гру-

зовой автомобиль* основывать на этом базовом классе. При этом будут наследо-

ваться все поля, свойства и методы базового (или родительского) класса, а допол-

нительно описывать их не требуется.

Цепочки наследования могут быть неограниченной длины. Так, у класса ≪грузовой

автомобиль≫ могут быть классы-наследники (или дочерние классы) ≪МАЗ* и ≪КА-

МАЗ≫, обладающие дополнительными специфическими свойствами и методами

(это классы, а не объекты; объектом будет конкретный грузовик МАЗ, а не марка

этого автомобиля), у класса ≪кнопка* наследники — ≪графическая кнопка*,

≪круглая кнопка≫ и так далее. При этом различные методы для каждого из наслед-

ников разрешается переопределять. Например, метод ≪двигаться≫ для классов

≪МАЗ≫ и ≪КАМАЗ≫ будет, хоть и немного, но отличаться: по-разному расходуется

горючее (снижается значение соответствующего свойства), по-разному набирается

скорость и так далее.

Полиморфизм(у класса по сути полиморфным явл именно указатель.сама переменная типа Тобджект не явл полиморфной,поскольку она имеет фиксированный размер)

Когда будет происходить обращение к переменной, относящейся к классу ≪КАМАЗ≫,

и вызов унаследованного метода ≪двигаться≫, программе придется решить, какой

конкретно метод надо вызвать: метод класса ≪автомобиль*, ≪грузовой автомобиль*

или ≪КАМАЗ≫. В соответствии с принципом полиморфизма решение принимается

в зависимости от типа переменной, вызывающей этот метод. То есть, если перемен-

ная описана как относящаяся к типу ≪КАМАЗ*, будет вызван метод ≪двигаться≫,

определенный именно для КАМАЗа.

Инкапсуляция(инкапсуляция поддерживается как раз таки за счет того,что у нас есть области видимости членов классов,можно какие-то фрагменты кода скрыть от внешней программы и позволять работать только через методы.За счет того,что модули не дают доступа к implementation)

Инкапсуляция позволяет разграничить доступ разработчиков к различным полям

и свойствам класса, примерно так, как это сделано в модулях Delphi, когда из других

модулей видима только интерфейсная часть. Точно так же и внутри классов неко-

торые поля и методы можно сделать свободно доступными для использования {види-

мыми) в любом месте программы, а другие поля и методы сделать доступными только

внутри текущего модуля и собственных методов класса. Это позволяет скрыть внутри

описания различные характеристики и возможности класса, чтобы сосредоточить

внимание разработчиков, повторно использующих этот класс, на его важнейших

свойствах.

Кроме того, желательно не допускать бесконтрольного изменения значений

свойств, так как это может привести к нарушению запланированной и сбалансиро-

ванной взаимосвязи между этими свойствами. Например, нельзя бездумно изме-

нить значение свойства ≪текущая скорость≫, просто записав в него новое число.

Надо вызвать соответствующий метод, который учтет изменение потребления бен-

зина и выполнит ряд дополнительных действий. Хорошим стилем программирова-

86 Урок 1. Язык Delphi (Object Pascal) и его использование

ния считается недоступность всех полей и свойств объекта для прямого изменения.

Вместо этого создаются методы, позволяющие получить значение поля и занести

в него новое значение. Сами поля помещаются в скрытую часть класса.

События

Помимо этих трех фундаментальных возможностей объектно-ориентированного

программирования, в среде Delphi реализована новая характеристика объекта —

возможность обработки так называемых сообщений (или событий), получаемых

от системы Windows или самой программы. Этот принцип лежит в основе работы

всех визуальных компонентов Delphi, которые обрабатывают различные события,

возникающие в процессе выполнения программы.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 178; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.12.240 (0.007 с.)