Слайд 1Объектно-ориентированное программирование
Автор: профессор Никишев В.К.
Объектно-ориентированное программирование
Автор: профессор Никишев В.К.
Объектно-ориентированное программирование
Слайд 2
Структурное программирование
Слайд 4Объектно-ориентированное программирование
Слайд 5Методология ООП
В последнее время развитие аппаратных средств существенно опережало развитие систем
и средств программирования. Чтобы выправить положение, в 70-80-х годах были предложены различные подходы к увеличению производительности труда программиста. Среди этих попыток выделяется такое популярное направление, как объектно-ориентированный подход к конструированию и кодированию программ. Особую роль в популярности этого подхода сыграло как его тесна связь с интерфейсами пользователя (особенно графическими), так и включение элементов этого подхода в популярные (на персональных компьютерах фирмы IBM) реализации гибридных языков программирования C++ и Pascal with Objects фирмы Borland.
До сих пор большинство используемых программных систем построены на принципах структурного подхода, суть которого состоит в декомпозиции системы на ряд модулей, процедур, функций и структур данных, связанных общим алгоритмом функционирования. Но распространение мощных персональных компьютеров (сравнимых с рабочими станциями 70-80-х годов) создало в 90-х годах основу для широкого применения объектно-ориентированного подхода на практике. В последнее врем более широко начинают использоваться языки программирования, созданные в рамках объектно-ориентированной методологии, такие как Smalltalk и Java. Новая методология ориентирована, прежде всего, на создание больших систем, коллективную их разработку
Слайд 6Методология ООП
Новая методология ориентирована, прежде всего, на создание больших систем, коллективную
их разработку, последующее активное сопровождение при эксплуатации и регулярные модификации. Среди типовых задач, для которых ООМ является перспективной, можно выделить такие:
автоматизация эксперимента, робототехника;
диспетчеризация, планирование;
интерфейс пользователя, анимация;
коммуникации, связь;
медицина, экспертные системы;
обработка коммерческой информации;
операционные системы;
системы управления;
тренажеры, моделирование.
Слайд 7Сущность объектно-ориентированного программирования
В основе объектно-ориентированной методологии программирования (ООМ) лежит объектный подход,
когда прикладная предметная область представляется в виде совокупности объектов, которые взаимодействуют между собой посредством передачи сообщений. Под объектом понимается некоторая сущность (реальная или абстрактная) конкретной предметной области, обладающая состоянием, поведением и индивидуальностью. Состояние объекта характеризуется перечнем всех его возможных (обычно статических) свойств и значениями каждого из этих свойств (обычно динамических). Состояние объекта описывается его переменными. Поведение объекта (или его функциональность) характеризует то, как объект взаимодействует с другими объектами или подвергается взаимодействию других объектов, проявляя свою индивидуальность. Индивидуальность - это такие свойства объекта, которые отличают его ото всех других объектов. Поведение объекта реализуется в виде функций, которые называют методами. При этом структура объекта доступна только через его методы, которые в совокупности формируют интерфейс объекта.
Слайд 8Свойство инкапсуляции
Такой подход позволяет локализовать принимаемые решения рамками объекта, объединяя в
нем и структуру и поведение, а следовательно, снижая сложность отдельной программы (реализующей объект). Эта идея объединения структуры и поведения в одном месте и сокрытия всех данных внутри объекта, что делает их невидимыми для всех, за исключением методов самого объекта называется инкапсуляцией. Это позволяет объектам функционировать совершенно независимо друг от друга, скрывая за интерфейсом детали реализации. Инкапсуляция позволяет рассматривать объекты, как изолированные "черные ящики", которые знают и умеют выполнять определенные действия. С этой точки зрения, внутреннее устройство "черных ящиков" для нас значения не имеет, нам все равно, что происходит внутри. Важно только знать, что надо положить в ящик при обращении к нему и что мы при этом из него получим. Таким образом, объекты объектно-ориентированных систем - это минимальные единицы инкапсуляции.
Слайд 9Классы
Но как управлять таким миром объектов, когда их становиться достаточно много?
Ведь многие из них будут очень сильно отличаться друг от друга, как например, объекты, описывающие принтер и черепаху Тортиллу, а другие объекты будут очень похожи друг на друга, как например, объекты, описывающие автомобиль марки "Форд" и автомобиль марки "Опель". Здесь на сцену выходит одна из ключевых концепций объектно-ориентированного программирования - идея группировки объектов в классы, в соответствии с тем как они устроены и действуют. Такая идея впервые была реализована еще в 60-ые годы в языке Simula. Под классом понимается множество объектов, связанных общностью структуры и поведения. Таким образом, класс можно сравнить с шаблоном, по которому создаются объекты. Именно класс вначале описывает переменные и методы объекта, то есть структуру и поведение объекта, и определяет механизмы создания реально существующего в системе объекта, который, когда создается, представляет собой экземпляр класса.
Слайд 10Свойство наследования
Наведение с помощью классов порядка в мире объектов - большое
достижение, но можно пойти дальше, определяя некоторый порядок и среди классов. Достигается это с помощью введения механизма наследования - пожалуй, самого мощного средства в любой объектно-ориентированной системе, поскольку оно позволяет многократно использовать однажды созданный код. Механизм наследования очень прост: один класс, называемый в рамках этих отношений суперклассом, полностью передает другому классу, который называется подклассом, свою структуру и поведение, то есть все свои переменные и все методы. Что далее делать с этим богатством определяет только подкласс: он может добавить в структуру что-то свое, что-то из наследуемого интерфейса он может использовать без изменений, что-то изменить, и, разумеется, может добавить свои собственные методы. То есть класс с помощью подклассов расширяется, и как результат, создаваемые объекты становятся все более и более специализированными. Классы, расположенные по принципу наследования, начиная с самого общего, базового класса, образуют иерархию классов.
Слайд 11Свойства ООП
Инкапсуляция.
Концепция сокрытия в как бы "капсуле" всей информации об
объекте, то есть объединение в некое целое данных и процедур (методов) их обработки. Единицей инкапсуляции в OOD является объект, в котором содержатс и данные состояния объекта и сообщения, которые объект может обрабатывать.
Наследование.
Получение от предшественника - такое соотношение между классами, находящимис в некоторой определенной иерархии, при которой один класс моделирует поведение и свойства другого класса, добавляя свою специфику. Класс поведение которого наследуется называется суперклассом, а класс, который наследует поведение, называется подклассом.
Полиморфизм.
Возможность единообразного обращения (посылки объектам одноименных сообщений) при сохранении уникального поведения объектов. Другими словами, поскольку поведение объектов определяется методами, метод, ассоциированный с одним и тем же именем сообщения, допускает различные реализации для разных классов.
Слайд 12Язык программирования называется объектно-ориентированным
, если
есть поддержка объектов как абстракций данных,
имеющих интерфейсную часть в виде поименованных операций, и защищенную область локальных данных;
все объекты относятся к соответствующим типам (классам);
классы могут наследовать от суперклассов.
любые данные хранятся как объекты, размещаемые с автоматическим выделением и освобождением памяти. Объект существует с системе до тех пор, пока его можно именовать.
Последний принцип отличает чистые объектно-ориентированные языки такие как Smalltalk, Actor, от гибридных языков программирования, выросших из ранее существовавших процедурных языков (Object Pascal, C++). Эти подходы - как бы крайности в семействе объектно-ориентированных языков. Ближе к середине лежит совершенно новый, полностью построенный на принципах объектно-ориентированной идеологии, но все же нарушающий последний принцип, язык Java.