Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOSY / 1 блок-все.doc
Скачиваний:
162
Добавлен:
09.05.2015
Размер:
1 Мб
Скачать
☆

8. Объектно-ориентированное программирование – общая характеристика и сравнительный анализ. Объект и класс. Базовые принципы ооп – инкапсуляция, полиморфизм и наследование.

Программирование объектов в структурном программировании очень запутанная задача. Это привело к появлению нового стиля программирования – объектно-ориентированное. Это произошло в конце 80-х годов, когда в Паскале появилось понятие «объекты», а в Си – «класс». Начиная с 5 версии Паскаля, появляются объекты и библиотека. Это была попытка создать для Паскаля визуальную среду программирования – Turbo Vision. В Си доминировал Си + +.

Появление объектно-ориентированной парадигмы программирования неразрывно связано с созданием систем визуального программирования. Это связано с двумя процессами:

  1. появлением графического интерфейса в ОС;

  2. в этом интерфейсе появились пиктограммы – визуальные объекты, связанными с какими-то действиями.

Эти объекты имели набор свойств, которые можно было настраивать. Появилась необходимость провести аналогию между объектами ОС и объектами в программировании. Начался процесс автоматизации программирования, появились генераторы – программы, которые генерируют стандартные процедуры и функции в интерактивном режиме (управление работой с помощью мышки, окон и элементов ввода). Наиболее удобным интерфейсом для генератора стала среда визуального программирования.

Первоначально название типа и его значения в Паскале было одинаковым – object, что создавало путаницу при использовании и описании. Это дало основание для заимствования из языка Си понятия класс (class) для названия типа объектов. Поэтому в Object Pascal уже определена специальная пользовательская структура данных – класс.

Основная цель ООП повышение эффективности разработки программ. В традиционных методах программирования изменение данных или правил и методов их обработки часто приводило к необходимости значительного изменения программы, что приводило к увеличению вероятности ошибок и возрастает время, необходимое для отладки программы. Использование ООП позволяет выйти из такой ситуации с min потерями, сведя необходимую модификацию программы к её расширению и дополнению.

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

<Имя потомка> =

object<имя предка>

поле;

…

поле;

метод;

…

метод;

end;

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

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

Класс является как бы шаблоном, на основе которого создаются экземпляры класса или объекты.

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

1)Инкапсуляции – объединение записей с процедурами и функциями, работающими с этими записями. Работа с данными и детали её реализации скрыты от внешнего пользователя объекта. Преимущества инкапсуляции заключается в модульности и изоляции кода объекта от другого кода программы.

Инкапсуляция –это скрытие полей внутри класса и оьъединение в классе информационных полей и процедур их обработки: методов и свойств.

По принципу инкапсуляции для обращения к информационным полям объета нужно либо использовать метод, либо сделать это поле свойством. Произвольный доступ к информационным полям как бы запрещён.

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

Т.о. объекты получают возможность реагировать на события и субытийно управляемое программирование упрощается.

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

Виртуальные объекты- это объекты, которые имеют несколько вариантов и в различной ситуации действуют разные варианты. Виртуальными делают свойства и методы, есть просто в виртуальные, а есть динамические.

Инкапсуляция имеет следующие достоинства:

  1. объект класса, у которого есть методы, обладает особыми свойствами, которыми недоступны другим типам данных. Особенно удобны методы для описания действий самого объекта. Например, объект кошка может догонять, убегать, подпрыгивать и т.д. и все это можно сделать в виде методов.

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

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

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

2)Наследование – задание объекта, затем использование его для построения иерархии порожденных объектов с наследованием доступа каждого из порожденных объектов к коду и данным предка.

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

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

Построение такой иерархии-это нововведение.

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

  1. часто объект достаточно сложен, что мешает спроектировать его свойства;

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

Для решения данных проблем строят дерево наследования, начиная с определения корневого класса.

Главная идея при построении дерева наследования – это разделение свойств, методов и полей по уровням иерархии. Если дерево наследования уже существует, то изменение любого свойства или метода автоматически переносится на все потомки. После того, как определена структура иерархии наследования, можно приступать к проектированию. Проектирование берется от корня к листьям. Сначала проектируется корневой класс, а затем все ниже лежащие. Дерево наследования обладает свойством накопления, т.е. можно разрабатывать новые уровни иерархии, создавая новых потомков. При этом, в отличие от библиотек процедур и функций, необязательно помнить о тонкостях программирования выше лежащих классов.

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

3)Полиморфизм – задание одного имени действию, которое передается вверх и вниз по иерархии объектов, с реализацией этого действия способом, соответствующим каждому объекту в иерархии. Означает «много форм». Это свойство объектов переопределять методы наследуемого класса. Это значит, что вызов метода объекта для переменной приведёт к выполнению кода, конкретного экземпляра класса, соответствующего данной переменной. Работает, главным образом, через указатели.

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

Соседние файлы в папке GOSY