Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Три принципа объектного программированияСодержание книги
Поиск на нашем сайте Наследование Чтобы наиболее эффективно повторно использовать ранее созданные классы, одного сочетания данных и методов в единой структуре недостаточно. Например, автомо- биль может быть легковым и грузовым, и соответствующие классы будут иметь как общие поля и методы, так и отличия (например, дополнительное свойство ≪гру- зовой кузов* и связанный с ним метод ≪разгрузить≫). Однако полностью заново определять новый тип данных, если требуется изменить или добавить несколько новых свойств к старому типу, нерационально. Это плохо еще и потому, что если в Клоссы и обьекты 85 метод, имеющийся в обоих классах, потребуется внести исправления, то их при- дется делать дважды, в двух одинаковых копиях подпрограмм. Чтобы избежать ненужной работы, в объектном программировании был введен принцип наследования свойств и методов. Программисту достаточно описать один базовый класс (например, ≪автомобиль*), а классы ≪легковой автомобиль≫ и ≪гру- зовой автомобиль* основывать на этом базовом классе. При этом будут наследо- ваться все поля, свойства и методы базового (или родительского) класса, а допол- нительно описывать их не требуется. Цепочки наследования могут быть неограниченной длины. Так, у класса ≪грузовой автомобиль≫ могут быть классы-наследники (или дочерние классы) ≪МАЗ* и ≪КА- МАЗ≫, обладающие дополнительными специфическими свойствами и методами (это классы, а не объекты; объектом будет конкретный грузовик МАЗ, а не марка этого автомобиля), у класса ≪кнопка* наследники — ≪графическая кнопка*, ≪круглая кнопка≫ и так далее. При этом различные методы для каждого из наслед- ников разрешается переопределять. Например, метод ≪двигаться≫ для классов ≪МАЗ≫ и ≪КАМАЗ≫ будет, хоть и немного, но отличаться: по-разному расходуется горючее (снижается значение соответствующего свойства), по-разному набирается скорость и так далее. Полиморфизм(у класса по сути полиморфным явл именно указатель.сама переменная типа Тобджект не явл полиморфной,поскольку она имеет фиксированный размер) Когда будет происходить обращение к переменной, относящейся к классу ≪КАМАЗ≫, и вызов унаследованного метода ≪двигаться≫, программе придется решить, какой конкретно метод надо вызвать: метод класса ≪автомобиль*, ≪грузовой автомобиль* или ≪КАМАЗ≫. В соответствии с принципом полиморфизма решение принимается в зависимости от типа переменной, вызывающей этот метод. То есть, если перемен- ная описана как относящаяся к типу ≪КАМАЗ*, будет вызван метод ≪двигаться≫, определенный именно для КАМАЗа. Инкапсуляция(инкапсуляция поддерживается как раз таки за счет того,что у нас есть области видимости членов классов,можно какие-то фрагменты кода скрыть от внешней программы и позволять работать только через методы.За счет того,что модули не дают доступа к implementation) Инкапсуляция позволяет разграничить доступ разработчиков к различным полям и свойствам класса, примерно так, как это сделано в модулях Delphi, когда из других модулей видима только интерфейсная часть. Точно так же и внутри классов неко- торые поля и методы можно сделать свободно доступными для использования {види- мыми) в любом месте программы, а другие поля и методы сделать доступными только внутри текущего модуля и собственных методов класса. Это позволяет скрыть внутри описания различные характеристики и возможности класса, чтобы сосредоточить внимание разработчиков, повторно использующих этот класс, на его важнейших свойствах. Кроме того, желательно не допускать бесконтрольного изменения значений свойств, так как это может привести к нарушению запланированной и сбалансиро- ванной взаимосвязи между этими свойствами. Например, нельзя бездумно изме- нить значение свойства ≪текущая скорость≫, просто записав в него новое число. Надо вызвать соответствующий метод, который учтет изменение потребления бен- зина и выполнит ряд дополнительных действий. Хорошим стилем программирова- 86 Урок 1. Язык Delphi (Object Pascal) и его использование ния считается недоступность всех полей и свойств объекта для прямого изменения. Вместо этого создаются методы, позволяющие получить значение поля и занести в него новое значение. Сами поля помещаются в скрытую часть класса. События Помимо этих трех фундаментальных возможностей объектно-ориентированного программирования, в среде Delphi реализована новая характеристика объекта — возможность обработки так называемых сообщений (или событий), получаемых от системы Windows или самой программы. Этот принцип лежит в основе работы всех визуальных компонентов Delphi, которые обрабатывают различные события, возникающие в процессе выполнения программы.
|
||
|
Последнее изменение этой страницы: 2017-02-21; просмотров: 281; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |