Объектно-ориентированное программирование
Другие рефераты
1. Введение
Концепция объектно-ориентированного программирования подразумевает,
что основой управления процессом реализации программы является передача
сообщений объектам. Поэтому объекты должны определяться совместно с
сообщениями, на которые они должны реагировать при выполнении программы. В
этом состоит главное отличие ООП от процедурного программирования, где
отдельно определённые структуры данных передаются в процедуры (функции) в
качестве параметров. Таким образом, объектно-ориентированная программа
состоит из объектов – отдельных фрагментов кода, обрабатывающего данные,
которые взаимодействуют друг с другом через определённые интерфейсы.
Объектно-ориентированный язык программирования должен обладать
следующими свойствами:
1. абстракции – формальное о качествах или свойствах предмета путем
мысленного удаления некоторых частностей или материальных объектов;
2. инкапсуляции – механизма, связывающего вмести код и данные, которыми
он манипулирует, и защищающего их от внешних помех и некорректного
использования;
3. наследования – процесса, с помощью которого один объект приобретает
свойства другого, т.е. поддерживается иерархической классификации;
4. полиморфизма – свойства, позволяющего использовать один и тот же
интерфейс для общего класса действий.
Разработка объектно-ориентированных программ состоит из следующих
последовательных работ:
- определение основных объектов, необходимых для решения данной
задачи;
- определение закрытых данных (данных состояния) для выбранных
объектов;
- определение второстепенных объектов и их закрытых данных;
- определение иерархической системы классов, представляющих
выбранные объекты;
- определение ключевых сообщений, которые должны обрабатывать
объекты каждого класса;
- разработка последовательности выражений, которые позволяют
решить поставленную задачу;
- разработка методов, обрабатывающих каждое сообщение;
- очистка проекта, то есть устранение всех вспомогательных
промежуточных материалов, использовавшихся при проектировании;
- кодирование, отладка, компоновка и тестирование.
Объектно-ориентированное программирование позволяет программисту
моделировать объекты определённой предметной области путем программирования
их содержания и поведения в пределах класса. Конструкция «класс»
обеспечивает механизм инкапсуляции для реализации абстрактных типов данных.
Инкапсуляция как бы скрывает и подробности внутренней реализации типов, и
внешние операции и функции, допустимые для выполнения над объектами этого
типа.
2. Что такое объектно-ориентированное программирование
Элементы объектно-ориентированного программирования (ООП) появились в
начале 70-х годов в языке моделирования Симула, затем получили свое
развитие, и в настоящее время ООП принадлежит к числу ведущих технологий
программирования.
Основная цель ООП, как и большинства других подходов к
программированию – повышение эффективности разработки программ. Идеи ООП
оказались плодотворными и нашли применение не только в языках
программирования, но и в других областях Computer Science, например, в
области разработки операционных систем.
Появление ООП было связано с тем наблюдением, что компьютерные
программы представляют собой описание действий, выполняемых над различными
объектами. В роли последних могут выступать, например, графические объекты,
записи в базах данных или совокупности числовых значений. В традиционных
методах программирования изменение данных или правил и методов обработки
часто приводило к необходимости значительного изменения программы. Всякое
существенное изменения программы – это большая неприятность для
программиста, так как при этом увеличивается вероятность ошибок, вследствие
чего возрастает время, необходимое для «доводки» программы. Использование
ООП позволяет выйти из такой ситуации с минимальными потерями, сводя
необходимую модификацию программы к её расширению и дополнению. Необходимо
заметить, что ООП не является панацеей от всех программистских бед, но его
ценность как передовой технологии программирования несомненна. Изучение
идей и методов ООП может существенно упростить разработку и отладку сложных
программ.
Мы уже привыкли использовать в своих программах процедуры и функции
для программирования тех сложных действий по обработке данных, которые
приходится выполнять многократно. Использование подпрограмм в своё время
было важным шагом на пути к увеличению эффективности программирования.
Подпрограмма может иметь формальные предметы, которые при обращении к ней
заменяются фактическими предметами. В этом случае есть опасность вызова
подпрограммы с неправильными данными, что может привести к сбою программы и
её аварийному завершению при выполнении. Поэтому естественным обобщением
традиционного подхода к программированию является объединение данных и
подпрограмм (процедур и функций), предназначенных для их обработки.
3. Объекты
Базовым в объектно-ориентированном программировании является понятие
объекта. Объект имеет определённые свойства. Состояние объекта задаётся
значениями его признаков. Объект «знает», как решать определённые задачи,
то есть располагает методами решения. Программа, написанная с
использованием ООП, состоит из объектов, которые могут взаимодействовать
между собой.
Ранее отмечалось, что программная реализация объекта представляет
собой объединение данных и процедур их обработки. Переменные объектного
типа называют экземплярами объекта. Здесь требуется уточнение – экземпляр
можно лишь формально назвать переменной. Его описание даётся в предложение
описания переменных, но в действительности экземпляр – нечто большее, чем
обычная переменная.
В отличие от типа «запись», объектный тип содержит не только поля,
описывающие данные, но также процедуры и функции, описания которых
содержится в описании объекта. Эти процедуры и функции называют методами.
Методам объекта доступны его поля. Следует отметить, что методы и их
параметры определяются в описании объекта, а их реализация даётся вне этого
описания, в том мест программы, которое предшествует вызову данного метода.
В описании объекта фактически содержаться лишь шаблоны обращения к методам,
которые необходимы компилятору для проверки соответствия количества
параметров и их типов при обращении к методам. Вот пример описания
объекта[1]:
Type
Location = object
X,Y: Integer;
Procedure Init(InitX, InitY: Integer);
Function GetX: Integer;
Function GetY: Integer;
End;
Здесь описывается объект, который может использоваться в дальнейшем,
скажем, в графическом режиме и который предназначен для определения
положения на экране произвольного графического элемента. Объект описывается
с помощью зарезервированных слов
object…end, между которыми находиться описание полей и методов. В нашем
примере объект содержит два поля для хранения значений графических
координат, а так же для описания процедуры и двух функций - это методы
данного объекта. Процедура предназначена для задания первоначального
положения объекта, а функция – для считывания его координат.
4. Инкапсуляция
Инкапсуляция является важнейшим свойством объектов, на котором
строится объектно-ориентированное программирование. Инкапсуляция
заключается в том, что объект скрывает в себе детали, которые несущественны
для использования объекта. В традиционном подходе к программированию с
использованием глобальных переменных программист не был застрахован от
ошибок, связанных с использованием процедур, не предназначенных для
обработки данных, связанных с этими переменными. Предположим, например, что
имеется «не-ООП» программа, предназначенная для начисления заработной платы
сотрудникам некой организации, а в программе имеются два массива. Один
массив хранит величину заработной платы, а другой – телефонные номера
сотрудников (для составления отчёта для налоговой инспекции). Что
произойдёт, если программист случайно перепутает эти массивы? Очевидно, для
бухгалтерии начнутся тяжёлые времена. «Жёсткое» связание данных и процедур
их обработки в одном объекте позволит избежать неприятностей такого рода.
Инкапсуляция и является средством организации доступа к данным только через
соответствующие методы.
В нашем примере описание объекта процедура инициализации Init и
функции GetX и GetY уже не существуют как отдельные самостоятельные
объекты. Это неотъемлемые части объектного типа Location. Если в программе
имеется описание нескольких переменных указанного типа, то для каждой
переменной резервируется своя собственная область памяти для хранения
данных, а указатели на точки входа в процедуру и функции – общие. Вызов
каждого метода возможен только с помощью составного имени, явно
указывающего, для обработки каких данных предназначен данный метод.
5. Наследование
Наследование – это ещё одно базовое понятие объектно-ориентированного
программирования. Наследование позволяет определя
| | скачать работу |
Другие рефераты
|