Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Объектно-ориентированное программирование. Абстрагирование. Инкапсуляция, наследование, полиморфизм



Под объектом (Object) понимается осязаемый или видимый предмет. Также объектом может быть нечто, воспринимаемое мышлением (например, облако инертного газа), или то, и что направлена мысль или действие. Итак, объект — это опознаваемый предмет, блок или сущность (реальная или абстрактная), имеющие важное функциональное значение в определенной области. Объект обладает состоянием, поведением и индивидуальностью. Состояние (State) объекта характеризуется перечнем всех возможных (обычно статических) его свойств (Property) и их текущими значениями (обычно динамическими, т.е. изменяющимися во времени). Поведение. Объекты не существуют изолированно друг от друга. Между ними идет передача сообщ ний. Состояния этих объектов могут изменяться. Поэтому очень важно взаимодейств] объектов в процессе их функционирования. Поведение характеризует то, как один объе воздействует на другие объекты или как он подвергается их воздействию в постоянно м няющихся условиях. У людей разного возраста это понятие ассоциируется с очень разными представления!. Ребенок, услышав слово «класс», сразу подумает о школе. Человек, изучавший когда-«Диалектический материализм», возможно, с содроганием вспомнит о революционн борьбе. Не пугайтесь. В нашем случае вы избавлены от неприятных ассоциаций. В«в программировании в общий класс (Class) просто объединяются объекты, близкие по си ей структуре и поведению, хотя каждый из них может отличаться от других объектов это класса своим поведением и состоянием. Итак, каждый объект - это представитель (экзем ляр) класса. Поэтому термины экземпляр класса и объект являются взаимозаменяемы!* Синонимом понятия класс является также понятие тип (Туре). ООП – это методология, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией собственного класса, которые в свою очередь образуют иерархию на принципах наследования. Иерархия – это ранжирование или упорядоченная система абстракций. Иерархические системы обычно состоят из нескольких подсистем, причет то, что на одном уровне абстракция является элементом системы, на более низком уровне является системой. Инкапсуляция. Предпологает защиту данных и методов обьекта с целью предотвращения доступа к ним конечных пользователей самого обькета. Для осущ защиты данных и методов обьекта исп-ся директивы: Private приватные данные и методы Protected – защищенные д и м Public – общедоступные д и м Данные и методы помещенные в раздел privatee могут испся только в пределах модуля, в котором описывается данных обьект. Программа или другой модуль исп-я данный модуль не могут испть приватные данные и методы.. приватные данные и методы применяются в других методах данного обьекта которые могут быть доступны конечному юзеру, но составляют внутреннюю закрытую часть обьекта. Защищенные данные и методы примся для частного их сокрытия, доступными они становятся только для других оьектов создаваемых конечным юзером на базе исходного обьекта путем наследования. (вот дА! Дура я такая пишу обьекта с мягким знаком. Можете смеяться!!! Ха ха ха) общедоступные данные и методы составляют внешний интерфейс обьекта они доступны для любого конечного юзера исп-го данный обьект. Наследование. Наз передача данных и методов созданного обьекта вновь создаваемому обьекту. Помимо унаследованных данных обьект наследник может вводить новые данные и методы и может переопределять унаследованные методы. Для обьектов наследников можно использовать сокрытие методов и данных. Наследник может испть в составе своих методов методы предка обьявленные под дерективой public и protected. Доступа к методам у предка под дерективой private наследник не имеет если он размещается в другом методе. Испе наследования позволяет значит сократить трудозатраты на разработку прог обесп за счет исп-я автовключ в обьект наследник методы и данные от родителя. От того как будет организована структура обьекта родитея будет зависеть возможность его наследования. Поэтому любой обьект не должен писаться сам для себя, а должен предусматривать возможность его наследования. наследование может продолжаться неограниченно. тогда создаются иерархии обьектов. Полиморфизм. Это обеспечение корректности вызовов методов принадлежащих указанным экземплярам обьектов.

Type objA=object

Procedure M1;

Procedure M2;

End;

Procedure ObjA.M1;

Begin…

M2

End;

Наследник наследует обьект А

Type ObjB=object(ObjA);

Procedure M2;

End

Procedure ObjA.M2;

Begin

Writeln(‘this is object A’);

End;

Procedure ObjB.M2;

Begin

Writeln(‘Yhis is object B’);

End;

……..

var A:objA;

B: ObjB;

Begin

B.M.;

End;

В р-те вызова М1 будет выведена фраза это обьект А, в примере испся ранее связывание обьектов при котором ссылки на вызываемые методы устанавливаются на стадии компиляции проги. Для того чтобы вызывался корректный метод М2 обьекта В необходимо испть не раннее а поздние связывания при к-ом пердача управления вызываемым методом осущ не на стадии компиляции а на стадии выполнения программы. Позднее связывание Реализуется посредством виртуальных методов для которых создается спец таблица виртуальных методов в к-е заноситься информация о типе вызываемого обьекта и поиск нужного метода производиться путем обращения к этой таблице. Если мы сделаем виртуальные методы вызываемыми т.е сделаем позднее связываение то при вызове метода В.Ь1 должен вызываться метод Ь2 обьекта В. Type ObjA=Object; Для реализации вирт механизма вводиться особый метод задачей которого явл создание таблицы вирт методов этот метод конструктор Constructor init; И всегда должен вызываться первым в состав действия по инифиализации обьекта. Методы вкл в эту таблицу должны иметь директиву виртуал procedure M1; virtual Это правило и для наследников выполняется как обычные методы. Статистические методы раннего связываения всегда работают быстрее чем виртуальные т.к. в вирт-х методах осущ доп операция обращения в таблице вирт методов. Эти методы внутри обькта надо сочетать. Абстрагирование. Один из главных способов решения сложных задач. 4 вида абстракции: 1 аб-я сущности обьекта 2 аб-я поведения обьекта 3 аб-я в виде виртуальных машин 4 аб-я произвольная в первом и втором виде абстракция представляет собой описание самого обьекта и его поведения (операции которые он может выполнять и которые могут выполняться над ним) в различ языках прогр-я операции наз по разному: операция, метод, функция элемент. Полный набор операций которые обьект может осуш над другим обьектом наз протоколом. Абстракция – это операция выделения наиболее важных компонентов (составляющих) обьекта с точки зрения того кто производит этот процесс. На основании наиболее важных компонентов строиться идеализированная модель обьекта, отражающая процесс абстракции. Класс – множество обьектов связанных обьщностью структуры и поведения. Объектно-ориентированное программирование. В настоящее время наиболее привлекательные для программистов языки базируются на так называемой объектной модели, которая имеет четыре главных элемента: абстрагирование, инкапсуляция, модульность, иерархия. Абстрагирование — выделения абстракций (abstraction), под которыми понимаются существенные характеристики объекта, которые отличают его от всех других объектов и четко определяют его концептуальные границы для наблюдателя. Инкапсуляция (encapsulation) — разделение элементов абстракции, которые образуют ее структуру и поведение Модульность (modularity) — разделение системы на модули (module), под которыми понимаются единицы кода, служащие блоками физической структуры системы. Иерархия (hierarchy) — подчинение или упорядочение абстракций. Две типичных иерархии в сложной системе — иерархия наследования «общее/частное», присущая, обычно, типам (классам) и иерархия агрегирования «целое/часть», присущая, обычно, элементам (объектам). Иерархия присуща также модулям и другим частям системы. Наиболее явно эти черты присутствую в языках, реализующих концепции объектно-ориентированного программирования. Под последним понимается методология реализации, при которой программа организуется как совокупность сотрудничающих объектов, каждый из которых является экземпляром какого-либо класса, а классы образуют иерархию наследования. При этом классы обычно статичны, а объекты очень динамичны, что поощряется динамическим связыванием и полиморфизмом. Для ООП характерны понятия наследования и полиморфизма. Наследование (inheritance) — отношение между классами, при котором класс использует структуру или поведение другого (одиночное наследование) или других (множественное наследование). Наследование вводит иерархию «общее/частное». Полиморфизм (polymorphism) — положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты разных (но имеющих общего родителя) классов. Следовательно, любой объект (метод), обозначаемым полиморфным именем, может по-своему реагировать на некий общий набор операций (аргументов).





Дата публикования: 2015-02-03; Прочитано: 1135 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...