Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Особенности и применимость объектно-ориентированного программирования




Объектно-ориентированный подход к программированию имеет 4 важных аспекта:

1) модульность; она позволяет:

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

- изменять локальные подпрограммы, не изменяя других программных моду­
лей;

2) абстракция данных; абстрактный тип данных определяется на основе неко­
торого их представления и множества подпрограмм для обработки данных
абстрактного типа;

3) динамическая связка подпрограмм программы; это позволяет не переком­
пилировать всю программу при внесении изменений в отдельные модули,
что увеличивает гибкость языка, позволяя вводить новые классы объектов
без модификации всей программы;

4) наследование; оно позволяет создавать классы объектов, на которые может
ссылаться порожденный класс, который наследует все свойства порож­
дающего класса и может задавать дополнительные свойства и новые под­
программы обработки данных порожденного класса.

Это позволяет создавать компактные программы: при определении нового объекта, незначительно отличающегося от объекта-предка, не надо заново описывать свойства, общие с объектом-родителем, достаточно определить только различия.

ООП обладает рядом преимуществ при создании больших программ:

1) использование более естественных понятий и простота введения новых
понятий;

2) некоторое сокращение размера программ за счет того, что повторяющиеся
(наследуемые) свойства и действия можно не описывать многократно;
применение динамических объектов позволяет более эффективно использовать ОП;

3) возможность создания библиотек объектов;

4) сравнительно простая возможность внесения изменений в программу без
изменения написанных частей, а в ряде случаев без перекомпиляции написанных и скомпилированных программ (библиотек); при этом используются свойства наследования и полиморфизма; это упрощает модификацию программ, придает им гибкость; одно из главных достоинств ООП - возможность расширять область применения программ, не переделывая про­грамму, а лишь добавляя в нее новые уровни иерархии;

5) возможность использования подпрограмм с различными наборами формальных параметров, но имеющих одно и то же имя, применяя свойство
полиморфизма;

6) более четкая локализация свойств и методов объекта (с помощью свойства
инкапсуляции);

7) возможность разделения доступа к различным объектам программы.

Однако ООП имеет ряд недостатков и эффективно не всегда.

ООП требует изучения большого количества встроенных подпрограмм объектов порождающих классов.

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

Попытки использовать ООП для программирования несложных алгоритми­ческих действий, связанных, например, с вычислениями по готовым форму­лам, чаще всего выглядит искусственным нагромождением ненужных языко­вых конструкций. Их проще разрабатывать традиционными средствами Пас­каля. А при разработке сложных диалоговых программ программист вынуж­ден структурировать программу, т. е. разбить ее на ряд взаимосвязанных и взаимозависимых подпрограмм. Это фактически ведет к разработке собствен­ной библиотеки подпрограмм; в этом случае целесообразноиспользовать средства ООП.

















Свойства объектов

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

Определение объекта

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

1) декларативной части программы (описания объектов);

2) исполняемой части программы (основной программы и подпрограмм).

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

Объединение декларативных (данных) и исполняемых (процедурных) эле­ментов при описании объекта называется инкапсуляцией.

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

TYPE Имя-объекта = OBJECT

Поля-данных;

Заголовки-методов;

END;

При описании объекта сначала определяются все данные объекта, а затем -заголовки методов их обработки - как опережающие описания подпрограмм. Далее - тексты всех методов, написанные так же, как подпрограммы в моду­лях. Методы всегда используют дальний тип вызова независимо от состояния директивы $F.

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

Конкретная переменная или константа объектного типа называется экзем­пляром - переменною или константою этого типа. Вызов метода для обработ­ки данных экземпляра состоит из составного имени в виде: имя-экземпляра-объектного-типа . имя-метода;

Пример программы с объявлением объекта и его использованием приведен в листинге 1.

Листинг 1. Объявление и использование экземпляров объектного типа.

Program Ex1;

Type ObName = object { - начало объявления объекта } Fl1 : integer;

Fl2 : real;

Procedure MetName( Param1 : integer; Param2 : real) ;

end; { - конец объявления объекта }

Procedure ObName.MetName;

Begin Fll := Param1;

F12 := Param2;

End;  { Объявление и инициализация экземпляра -

типизированной константы объектного типа: }

Const ObCon : ObName = ( Fl1 : 5; Fl2 : 2.5 );

{ Объявление экземпляра - переменной объектного типа :}

Var ObVar : ObName;

Begin

{ Вывод значения объектной константы с помощью составного имени: }

Writeln ('ObCon.Fl1= ', ObCon.Fll);

{ Присоединение к экземпляру объектной константы: }

With ObCon do Writeln ('Fl1 = ',Fl1,'F12 = ',F12:10);

ObVar.MetName ( 7, 3.8 ); { - вызов метода }

{ Вывод значения объектной переменной с помощью составного имени: }

Writeln ( 'ObVar.Fl1 = ', ObVar.Fll);

{ Присоединение к экземпляру объектной переменной: }

With ObVar do Writeln ('Fl1 = ',Fl1,'F12= ',F12:10);

End.

В программе объявлены:

ObName - объектный тип . Он содержит 2 элемента (поля):

Fl1 - типа integer;

Fl2 - типа real.

В состав объекта входит MetName - метод инициализации значений экзем­пляра объекта данного типа.










Последнее изменение этой страницы: 2018-05-10; просмотров: 162.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...