Объектно-ориентированное программирование © Казиев В.М. StudKVM@mail.ru Тема 1. Введение в ООП
339.50K
Категория: ПрограммированиеПрограммирование

Лек01-ВедениеООП-Казиев В.М

1. Объектно-ориентированное программирование © Казиев В.М. StudKVM@mail.ru Тема 1. Введение в ООП

2.

Программирование понимается и как ремесло (умение кодировать,
тестировать), и как искусство (создавать эффективные, «красивые»
программы), и как знания (о методах, принципах, языках и др.).
Все, в принципе, верно. Всем нужно владеть.
Программирование прошло много исторических этапов:
• программирование в кодах ЭВМ;
• программирование в автокодах;
• программирование процедурное (чаще вычислительных задач);
• программирование непроцедурное (например, логических задач);
• программирование функциональное (с помощью аппарата «лямбда»функций);
• программирование «на лету» (потоковое);
• программирование экстремальное и др.
Нам нужно пока процедурное программирование и немного непроцедурное.
Это сфера применений компетенций прикладного математика и
информатика.

3.

Структура программного обеспечения (ПО) – ниже на рисунке.

4.

Классификация ПО проводится и по другим критериям, например по
удобству, комфортности использования (говорят, дружественности ПО
пользователю), по предоставляемому набору возможностей, по типу
использования (профессиональные - физические, экономические,
математические, биологические и др., педагогические, бытовые) и т.д.
ПО - дорогой, сложный, гибкий, изменчивый и быстро развивающийся
элемент ВС, позволяющий использовать конкретную вычислительную
систему, компьютер.
Пример. Распределение стоимостей ТО и ПО в ВС: ПО - примерно 70-80%,
ТО - 20-30% от всей стоимости ВС. В некоторых специализированных,
например, сетевых системах, это соотношение может быть совсем другим.
ПО – это гибкая интерфейсная система между решаемыми задачами
(разрабатываемыми моделями, методами, алгоритмами, технологиями их
исследования, использования) и ТО ЭВМ конкретного вида и назначения.
Программу называют также приложением (к более крупной среде,
например, к операционной системе).

5.

Системный программист разрабатывает системное ПО (ОС, драйверы и
т.д.), прикладной программист – прикладное ПО (решения научнотехнических и иных важных задач). Оба часто разрабатывают и
инструментальное ПО (инструментарий программирования).
Пример. Рассмотрим программную систему – ОС Windows. Она имеет
развитые средства обеспечения безопасности, надежную файловую
систему с регистрационным журналом. Windows-приложения могут
выполняться в защищенных адресных пространствах или в общем
пространстве, если требуется их взаимодействие. Архитектура Windows
надежна и устойчива, восстанавливаема после сбоев, правда, это
достигается за счёт некоторого снижения производительности.
Приложения изолированы друг от друга и могут общаться в отдельной или
общей памяти, синхронно или асинхронно, под управлением диспетчера.
Точнее диспетчеров:
• диспетчера объектов (Object Manager);
• диспетчера виртуальной памяти (Virtual Memory Manager);
• диспетчер процессов (Process Manager);
• диспетчера ввода-вывода (I/O Manager) и др.

6.

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

7.

ООП используется, чтобы:
• структурировать информацию и не допускать путаницы;
• точно определять взаимодействие одних элементов с другими;
• повышать управляемость программы;
• быстрее масштабировать код под различные задачи;
• лучше понимать написанное;
• эффективнее поддерживать готовые программы;
• внедрять изменения без необходимости переписывать весь код.
Возможности ООП поддерживает большинство популярных языков
программирования, например, Python и др.
Объект — набор переменных и функций.
Атрибуты — переменные, конкретные характеристики объекта, такие как
цвет поля или имя пользователя.
Методы — функции, которые описаны внутри объекта или класса. Они
относятся к определенному объекту и позволяют взаимодействовать с
ними или другими частями кода.

8.

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

9.

10.

Каждый объект обладает определенным набором свойств, первоначальные
значения которых можно установить. Значения свойств объектов можно
изменять и в программном коде:
Объект.Свойство := ЗначениеСвойства
Метод в ООП — функция или процедура, принадлежащая какому-то классу
или объекту. Метод состоит из операторов и имеет набор входных
аргументов.
Есть простые и статические методы (методы класса): простые методы
имеют доступ к данным объекта (конкретного экземпляра данного
класса), статические методы не имеют доступа к данным объекта и для
их использования не нужно создавать экземпляры (данного класса).
Методы предоставляют интерфейс, при помощи которого осуществляется
доступ к данным объекта некоторого класса, тем самым, обеспечивая
инкапсуляцию данных.
Есть открытый (public) интерфейс — общий интерфейс для всех
пользователей класса, защищѐнный (protected) — внутренний интерфейс
для всех наследников данного класса; закрытый (private) — интерфейс,
доступный только изнутри данного класса.
10

11.

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

12.

Событие может создаваться пользователем (щелчок мышью или
нажатие клавиши) или быть результатом воздействия других
объектов. В качестве реакции на событие вызывается определенная
процедура, которая может изменять свойства объекта или вызывать
его методы.
Визуальное программирование позволяет делать графический
интерфейс разрабатываемых приложений на основе форм и
управляющих элементов. В роли основных объектов при визуальном
программировании выступают формы (Forms).
Форма - окно, в котором размещаются управляющие элементы.
Управляющие элементы — командные кнопки (CommandButton),
переключатели, «флажки» (Checkbox), поля выбора, «радиокнопки»
(OptionsButton), списки (ListBox), текстовые поля (TextBox) и др.
Все основанные на объектах языки (C#, Java, С++, Smalltalk, Visual
Basic и т.п.) должны отвечать трем основным принципам ООП:
Инкапсуляция, Наследование, Полиморфизм.

13.

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

14.

15.

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

16.

17.

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

18.

Домашнее задание.
1. Подготовить письменно кратко ответ на вопросы:
А) ООП и его преимущества и недостатки на примерах.
Б) Развитие ООП в современных языках программирования.
2. Привести пример ООП-программы и охарактеризовать ее (можно из
Интернет).
3. Как используется ООП, например, в играх (геймификации)?
English     Русский Правила