Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




ОСНОВНЫЕ ПОНЯТИЯ

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД

ТЕХНОЛОГИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

В основу структурного подхода положены структури­зация и декомпозиция окружающего мира. Задача любой сложно­сти разбивается на подзадачи, а те, в свою очередь, разбиваются далее, пока каждая подзадача не станет простой, соответствующей модулю (подпрограмме), выполняющему строго одно действие. Методы структурного проектирования используют модули в каче­стве строительных блоков программы, а структура программы представляется иерархией подчиненности модулей.

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

Объектно-ориентированный анализ (object-oriented analysis) -это методология, при которой требования к системе воспринима­ются с точки зрения классов и объектов, выявленных в предметной области. Объектно-ориентированный анализ направлен на создание моделей реальной действительности на основе объектно-ориенти­рованного подхода.

Объектно-ориентированное проектирование (object-oriented design) - это методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления моде­лей, отражающих логическую (классы и объекты) и физическую структуру системы (процессы и деление на компоненты, файлы или модули), а также ее статические и динамические аспекты.

Объектно-ориентированное программирование (object-oriented programming) - это технология реализации программ, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы об­разуют иерархию наследования.

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

Понятие объектно-ориентированного программирова­ния определяет три основные концепции, при соблюдении которых программа будет объектно-ориентированной:

объектно-ориентированное программирование использует в каче­стве базовых элементов классы, порождающие объекты;

в процессе выполнения программы может одновременно ис­пользоваться несколько объектов, порожденных от одного класса (экземпляров реализации класса);

классы организованы иерархически (иерархия означает «быть частью»).

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

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

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

Объект, как логическая единица, содержит следующие данные и операции (методы с кодом алгоритма) в отдельном участке памяти:

поля объекта (или атрибуты исходных данных), значения кото­рых определяют текущее состояние объекта;

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

свойства — часть методов, которые определят поведение объек­та, то есть его реакцию на внешние воздействия.

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

Объекты в программах воспроизводят все оттенки явлений ре­ального мира: «рождаются» и «умирают»; меняют свое состояние; запускают и останавливают процессы; «убивают» и «возрождают» другие объекты.

4.3. ПРИНЦИПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ: ИНКАПСУЛЯЦИЯ, НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ

В основе классов лежат три фундаментальных принци­па - инкапсуляция, наследование и полиморфизм.

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

Принцип инкапсуляции использовался в технологии модульно­го программирования. В модуле в явной форме введена инкапсуля­ция путем разделения его на секции интерфейса и реализации.

В объектно-ориентированном программировании принцип ин­капсуляции используется для изоляции класса от остальных частей программы, чтобы сделать его самодостаточным для решения кон­кретной задачи. Например, класс TForm в среде Delphi содержит (инкапсулирует в себе) все необходимое для создания Windows-окна, класс ТМето представляет собой полнофункциональный тек­стовый редактор, класс TTimer обеспечивает работу программы с таймером и т. д.

Инкапсуляция достигается путем совмещения в одной записи языка программирования структур данных с процедурами и функциями, которые манипулируют полями данных этой записи, для получения нового типа данных ~ класса. Инкапсуляция позволяет защитить по интерфейсу доступ к полям и методам. Доступ разре­шается лишь к открытым методам и полям. Полная совокупность методов и тонкости их реализаций являются скрытыми.

type

TMyClass = class

IntField: Integer;

function MyFunc(a: Integer): Integer;

procedure MyProc; end;

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

Наследование. Число абстракций в сложных программных системах намного превышает наши возможности их осознания. Инкапсуляция частично помогает устранить это препятствие, уби­рая из поля зрения внутреннее содержание абстракций.

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

Принцип наследования оперирует с понятиями «предок - потомок» и предусматривает расширение набора свойств наследника за счет принятия всех свойств предка.

Любой класс может быть порожден от другого класса. Для это­го при его объявлении указывается имя класса-родителя:

TChildCIass = class (TParentClass)

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

Все классы в Object Pascal порождены от единственного роди­теля - класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов - от их создания до уничтожения. Поэтому программист не может создать класс, кото­рый не был бы дочерним классом TObject. Следующие два объяв­ления идентичны.

TaClass = class(TObject) <==> TaClass = class

Принцип наследования приводит к созданию ветвящегося дере­ва классов. Каждый потомок дополняет возможности своего роди­теля новыми и передает их своим потомкам. Например, класс TPersistent обогащает возможности своего родителя TObject тем, что он умеет сохранять данные в файле и получать их из него, в резуль­тате это умеют делать и все его потомки. Класс TComponent, в свою очередь, умеет взаимодействовать со средой разработчика и пере­дает это умение своим потомкам. TControl не только способен ра­ботать с файлами и средой разработчика, но он еще умеет созда­вать и обслуживать видимые на экране изображения, а его потомок TWinControl может создавать Windows-окна и т. д.

В Object Pascal возможно только так называемое одиночное на­следование, но в реальном мире у потомка два родителя, поэтому в ряде языков (например, в C++) предусмотрен механизм множест­венного наследования. Множественное наследование более логич­но с точки зрения моделирования реального мира, однако, оно ус­ложняет реализацию языков программирования.

Полиморфизм. Одним из базовых понятий технологии объектно-ориентированного программирования является полимор­физм. Этот термин имеет греческое происхождение и приблизи­тельно означает «много форм» (poly — много, morphos — форма).

Полиморфизм - это средство для придания различных значений одному и тому же событию в зависимости от типа обрабатываемых данных. Этот принцип определяет различные формы реализации одноименного действия.

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

В рамках Object Pascal поведенческие свойства класса опреде­ляются набором входящих в него методов. Этот принцип используется, когда требуется расширить свойства класса не путем добав­ления новых методов, а путем достраивания одного из методов или набора методов. Изменяя алгоритм того или иного метода в потом­ках класса, программист может придавать этим потомкам отсутст­вующие у родителя специфические свойства.

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

Кроме этого, в Object Pascal полиморфизм достигается не толь­ко механизмом наследования и перекрытия методов родителя, но и их виртуализацией, позволяющей родительским методам обра­щаться к методам своих потомков.




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


Дата добавления: 2014-12-16; Просмотров: 703; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.