Файл: Тема 1 основы объектноориентированного программирования (ооп) Объектноориентированное программирование (ооп).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.04.2024

Просмотров: 15

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Тема 3.1 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО
ПРОГРАММИРОВАНИЯ (ООП)
Объектно-ориентированное программирование (ООП) – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений (рис.1).
Рисунок 1 - Взаимодействие программных объектов
Системы объектно-ориентированного программирования (ООП) дают возможность визуализировать процесс создания графического интерфейса разрабатываемого приложения. Взаимодействие программных объектов между собой и их изменения описываются с помощью программного кода. Создание программного кода в ООП базируется на использовании алгоритмических структур различных типов (линейной, ветвления, цикла), исполнителями которых выступают программные объекты.
В основе объектно-ориентированного язык программирования лежат два основных понятия: объект и класс.
Объект – это структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии.
Класс – это описание множества объектов программирования (объектов) и выполняемых над ними действий.
Пример, допустим, нам в программе необходимо работать со странами. Страна
– это абстрактное понятие. У нее есть такие характеристики, как название, население, площадь, флаг и другое. Для описания такой страны будет
использоваться класс с соответствующими полями данных. Такие страны, как
Россия и Украина будут уже объектами (конкретными представителями типа страна).
Объект в программировании — некоторая сущность в виртуальном пространстве, обладающая определенным состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними, т.е. объект имеет состояние, поведение и идентичность.
Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущими (обычно динамическими) значениями каждого из этих свойств. Каждый объект обладает определенным набором свойств, первоначальные значения которых можно установить. Свойства – это характеристики объекта.
Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений. Иными словами, поведение объекта - это его наблюдаемая и проверяемая извне деятельность.
Операцией называется определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию.
C одной стороны, поведение объекта изменяет его состояние. С другой – поведение зависит от состояния. Поведение объекта строится из его операций.
Существует три вида операций
- Модификатор - операция, которая изменяет состояние объекта;
- Селектор - операция, считывающая состояние объекта, но не меняющая состояния;
- Итератор - операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности.
Идентичность - это такое свойство объекта или такой набор свойств, который отличает его от всех других объектов.
Программные объекты обладают свойствами, могут использовать методы и реагируют на события.
Каждый объект обладает определенным набором свойств, первоначальные значения которых можно установить. Значения свойств объектов можно изменять и в программном коде:
Объект.Свойство := Значение Свойства
Метод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту. Метод состоит из некоторого количества операторов для выполнения какого-то действия и имеет набор входных аргументов.
Различают простые методы и статические методы (методы класса):
- простые методы имеют доступ к данным объекта (конкретного экземпляра данного класса),
- статические методы не имеют доступа к данным объекта и для их использования не нужно создавать экземпляры (данного класса).
Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных. В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют:
- открытый (public) интерфейс — общий интерфейс для всех пользователей данного класса;


- защищѐнный (protected) интерфейс — внутренний интерфейс для всех наследников данного класса;
- закрытый (private) интерфейс — интерфейс, доступный только изнутри данного класса.
Событие в объектно-ориентированном программировании — это сообщение, которое возникает в различных точках исполняемого кода при выполнении определенных условий. События предназначены для того, чтобы иметь возможность предусмотреть реакцию программного обеспечения. Для решения поставленной задачи создаются обработчики событий: как только программа попадает в заданное состояние, происходит событие, посылается сообщение, а обработчик перехватывает это сообщение.
Событие, по сути, сообщает об изменении состояния некоторого объекта.
Событие может создаваться пользователем (щелчок мышью или нажатие клавиши) или быть результатом воздействия других объектов. В качестве реакции на событие вызывается определенная процедура, которая может изменять свойства объекта или вызывать его методы.
Основные принципы объектно-ориентированного программирования
ООП сочетает лучшие принципы структурного программирования с новыми мощными концепциями, базовые из которых называются инкапсуляцией, полиморфизмом и наследованием
1) Инкапсуляция — это объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта
(свойствами), а алгоритмы - объектными методами или просто методами.
2) Наследование - способности языка позволять строить новые определения классов на основе определений существующих классов. По сути, наследование позволяет расширять поведение базового (или родительского) класса, наследуя основную функциональность в производном подклассе
(также именуемом дочерним классом) Т.е. наследование представляет собой процесс, в ходе которого один объект приобретает свойства другого объекта.
3) Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В общем смысле, концепцией полиморфизма является идея "один интерфейс, множество методов". Это означает, что можно создать общий интерфейс для группы близких по смыслу действий. Выбор конкретного действия, в зависимости от ситуации, возлагается на компилятор.
ООП также характеризуется следующими принципами:
- все является объектом;
- вычисления осуществляются путем взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие; объекты взаимодействуют, посылая и получая сообщения; сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия;
- каждый объект имеет независимую память, которая состоит из других объектов;
- каждый объект является представителем класса, который выражает общие свойства объектов данного типа;


- в классе задается функциональность (поведение объекта); тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия;
- классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования; память и поведение, связанное с экземплярами определенного класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.
Проект. Этапы разработки проекта
Результатом процессов программирования и проектирования является проект, который объединяет в себе программный код и графический интерфейс.
Графический интерфейс необходим для реализации интерактивного диалога пользователя с запущенным на выполнение готовым проектом.
Визуальное программирование позволяет делать графический интерфейс разрабатываемых приложений на основе форм и управляющих элементов. В роли основных объектов при визуальном программировании выступают формы (Forms).
Форма представляет собой окно, на котором размещаются управляющие элементы.
Управляющие элементы
— это командные кнопки
(CommandButton), переключатели, или «флажки» (Checkbox), поля выбора, или «радиокнопки»
(OptionsButton), списки (ListBox), текстовые поля (TextBox) и др.
Этапы разработки проекта:
1) Определяется цель проекта (что в конечном итоге должно получиться).
2) Разрабатывается алгоритм решения задачи.
3) Определяется перечень входных и выходных данных, формулы расчета.
4) Определяются имена и типы используемых в проекте переменных.
5) Определяются способы ввода и вывода данных в проекте.
6) Разрабатывается интерфейс формы, и задаются свойства и методы для неё.
7) На форме размещаются элементы управления и задаются для них свойства и методы управления.
8) Записываются процедуры в окне кода программы.
9) Выполняется запуск, тестирование и отладка программы.
10) Выполняется сохранение проекта.
Компиляция проекта в приложение. Сохраненный проект может выполняться только в самой системе программирования. Для того чтобы преобразовать проект в приложение, которое может выполняться непосредственно в среде операционной системы, необходимо выполнить компиляцию проекта, в процессе которой приложение сохраняется в исполнимом файле (с расширением ехе).
Объектно-ориентированные языки
Многие современные языки специально созданы для облегчения объектно- ориентированного программирования. Однако следует отметить, что можно применять техники ООП и для не-объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.
Как правило, объектно-ориентированный язык (ООЯ) содержит следующий набор элементов:
- Объявление классов с полями (данными — членами класса) и методами
(функциями — членами класса).


- Механизм расширения класса (наследования) — порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООЯ поддерживают только единичное наследование.
- Полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той же переменной экземпляры различных классов.
- Полиморфное поведение экземпляров классов за счёт использования виртуальных методов. В некоторых ООЯ все методы классов являются виртуальными.
Некоторые языки добавляют к указанному минимальному набору те или иные дополнительные средства. В их числе:
- Конструкторы, деструкторы, финализаторы;
- Свойства (аксессоры);
- Индексаторы;
- Средства управления видимостью компонентов классов (интерфейсы или модификаторы доступа, такие как public, private, protected, feature и др.).
Одни языки отвечают принципам ООП в полной мере — в них все основные элементы являются объектами, имеющими состояние и связанные методы. Примеры подобных языков — Smalltalk, Eiffel. Существуют гибридные языки, совмещающие объектную подсистему в целостном виде с подсистемами других парадигм как «два и более языка в одном», позволяющие совмещать в одной программе объектные модели с иными, и размывающие грань между объектно-ориентированной и другими парадигмами за счёт нестандартных возможностей, балансирующих между
ООП и другими парадигмами (таких как множественная диспетчеризация, параметрические классы, возможность манипулировать методами классов как самостоятельными объектами, и др.).
Примеры таких языков: CLOS, Dylan, OCaml, Python, Ruby, Objective-C.
Однако, наиболее распространены языки, включающие средства эмуляции объектной модели поверх более традиционной императивной семантики. Алан Кэй назвал такие языки
«склеиванием возможностей» (англ. agglutination of features) в противовес «чистоте стиля» (англ. crystalization of style) языков, воплощающих некую парадигму непосредственно.
Примеры таких языков — Симула, C++, Visual
Basic, Delphi, Модула, Модула-2, Java, C#, PHP.