logo
Информатика 1 курс 2 семестр (2)

Лекция 13. Объектно-ориентированный подход к программированию.

План лекции:

Объектно-ориентированный подход к программированию. Массовое промышленное программирование и методы построения программ. Структурное программирование, процедура, процедурный стиль программирования, последовательная декомпозиция алгоритма решения задач, модульное построение программ. Требование ускорения разработки программного обеспечения и развитие объектно-ориентированного программирования. Понятие объекта, описание программной системы в виде взаимодействия объектов, данные объекта и действия над ними, свойства и методы объекта. Свойство наследования, повторное использование программного кода. Объединение данных и методов объекта, инкапсуляция и ее роль в отладке и модификации программ. Интерфейс объекта, защита от доступа к внутренним переменным объекта, связь с другими объектами. Полиморфизм, включение в данные информации о методах обработки данных. Классы объектов. Объединение состояния и интерфейса, понятие объекта "компонент", состояние компонентов. Интерфейс компонентов, интерфейс стадии проектирования и стадии выполнения объекта.

Краткий конспект лекции

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

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

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

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

Концепция ООП заключается в том, что каждый объект является экземпляром некоторого класса объектов.

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

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

ООП является наилучшим инструментом для построения иерархических деревьев или структур данных.

Характеристики ООП

Принципы ООП

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

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

Инкапсуляция является важнейшим свойством объекта, на котором строится ООП. Инкапсуляция заключается в том, что объект скрывает в себе детали, которые несущественны для использования. В традиционном подходе к программированию с использованием глобальных переменных программист не был застрахован от ошибок, связанных с использованием процедур, не предназначенных для обработки данных, но связанных с этими переменами. «Жесткое» связывание данных и процедур их обработки в одном объекте позволяет избежать многие неприятности. Инкапсуляция и является средством организации доступа к данным только через соответствующие методы.

Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (от английского interface — внешнее лицо, т. е. список декларируемых свойств и методов) класса и не вникать в его внутреннюю реализацию. Этот принцип (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.

Наследование – это еще одно базовое понятие ООП. Наследование позволяет определить новые объекты, используя свойства прежних, дополняя или изменяя их. Объект – наследник получает все поля и методы «родителя», к которым он может добавить свои собственные поля и методы или заменить («перекрыть») их своими методами.

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

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

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

Вопросы по данной теме:

  1. Что такое объект?

  2. Перечислите принципы ООП.

  3. Для чего создаются классы?

  4. Дайте определения инкапсуляции, наследования и полиморфизма.

Литература по теме:

  1. Информатика. Общий курс / Под ред. В.И. Колесникова. - 2-е изд. - М.: Дашков и К; Наука-Пресс, 2008. - 400 с.

  2. Игошин В.И. Математическая логика и теория алгоритмов: Уч. пос. - М.: Академия, 2004. - 448с.

  3. Микрюков В.Ю. Алгоритмизация и программирование: Учебн. пос.- Ростов н/Д: Феникс, 2007.