Объектно-ориентированное программирование
1
Если бы
строители сооружали здания также,
как программисты
пишут свои программы,
первый же
дятел разрушил бы человеческую
цивилизацию.
Цитата недели
вопрос 1
1. Что такое класс?
- Это модуль, сохраненный в файле
- Это функция
- Это библиотека
- Это тип данных
- Это специальная программа
2
вопрос 2
2. Что такое методы класса?
- Это инкапсулированные в классе данные
- Это функции для работы с полями класса
- Это специальные функции в составе ОС Windows
3
вопрос 3
2. Что такое полиморфизм?
- Это переключатель
- Это спец.функция для работы с полями класса
- Это одно имя – разный функционал
4
Абстрактные и реальные объекты
- Абстрактный объект это описание реального объекта минус подробности
- Пример 1:
- Абстрактные человек-это описание человека, которое содержит атрибуты и варианты поведения:
- Реальный человек определяет значения атрибутов:
- Майкл
- Джексон
- 180 см
- 80 кг
5
Пример 2: формочки для печенья
Почему объекты?
- Фокусирование на объектах упрощает для нас понимание сложных вещей.
- Уделяем внимание лишь важным аспектам
- Пример : преподаватель - студент
6
Концепция
Класс и Объект
- Класс - принципиально новый тип данных.
- Класс представляет собой множество объектов
- имеющих общую структуру
- обладающих одинаковым поведением.
- Класс является дальнейшим развитием типа структура (запись)
7
Концепция
- Объект является представителем (экземпляром) какого-либо класса.
- Объект обладает
- состоянием
- поведением
- идентичностью.
- Состояние объекта характеризуется
- набором его свойств (атрибутов)
- текущими значениями каждого из этих свойств.
- Поведение объекта - выполнения определенной последовательности характерных для него действий.
- Идентичность объекта – это свойство (или набор свойств) объекта, которое позволяет отличить его от всех прочих объектов того же типа (класса).
8
Класс
простое объяснение
- Класс – это шаблон который определяет атрибуты и методы реального мира.
- Пример: форма для печенья в виде буквы «А» - это не буква А, она лишь определяет , как буква А выглядит.
- Если вам необходим объект, представляемый классом, создаете экземпляр.
- Каждый экземпляр содержит те же самые атрибуты и методы, которые определены в классе. У каждого экземпляра своя копия.
- Метод – поведение объекта. (опять про печенье, но в форме собаки)
9
Этапы разработки программ с использованием ООП
ООП представляет собой систематизированный подход к алгоритмической формализации сложных предметных областей.
ООП предполагает этапы разработки программ:
- Первый этап: абстрагирование
- Второй этап: инкапсуляция
- Третий этап: модульность
- Четвертый этап: иерархия
10
Этапы разработки программ с использованием ООП
Абстрагирование
- Выделение абстракций. Это - анализ предметной области, для которой составляется программа, с целью определения
- основных объектов этой предметной области,
- их свойств,
- отношений между объектами,
- возможных операций над объектами или их составляющими.
Различие:
Процедурное программирование нацелено на моделирование действий, выполняемых компьютером.
ООП нацелено на моделирование предметной области решаемой задачи.
11
Этапы разработки программ с использованием ООП
Инкапсуляция
- Типизация объектов и синтез абстрактных типов данных. Определение новых типов данных и наборов специфических функций и операций, применяемых к этим типам данных.
Модульность
- Объектная декомпозиция. Выделение подтипов (подобъектов) для каждого из типов и их составляющих.
Иерархия
- Композиционная иерархизация объектов. Т.е. выделение родовитых и композиционных отношений над объектами.
12
Парадигмы ООП:
- инкапсуляция
- наследование
- полиморфизм
13
Инкапсуляция (encapsulation)
- это объединение производного типа данных с набором функций, используемых при работе с этим типом данных, в единый класс.
- Функции, включенные в класс, называют методами класса
- Данные – элементами или полями класса,
- Конкретные представители класса – объекты, экземпляры.
Класс (объект) - это то, что поддерживает инкапсуляцию
- Инкапсуляция позволяет сделать класс «самодостаточным» для решения конкретной задачи.
- Класс всегда несет в себе некоторую функциональность.
- Это мощное средство обмена готовыми к работе программными заготовками
14
Инкапсуляция и ограничение доступа к данным
- Инкапсуляция предполагает возможность ограничения доступа к данным (полям) класса.
- Это позволяет
- упростить интерфейс класса, показав наиболее существенные для внешнего пользователя данные и методы.
- обеспечить возможность внесения изменений в реализацию класса без изменения других классов (важно для дальнейшего сопровождения и модернизации программного кода).
- При сокрытии полей объекта доступ к ним осуществляется только посредством методов класса. Это защищает данные от внешнего вмешательства или неправильного использования
15
Инкапсуляция
16
ID
F_Name
L_Name
Graduation
Write()
Display()
Student
A_Major
A_School
YearGraduated
Write()
Display()
Aspirant
Управление доступом
Ключи доступа
- private - элементы данных могут использоваться только функциями-методами класса, к которому принадлежат эти элементы данных
- public - элементы данных могут использоваться любыми функциями программы
- protected - элементы данных могут использоваться функциями-методами того же класса, к которому принадлежат эти элементы данных, а также функциями- методами производных классов
(классов-потомков)
По умолчанию ключ доступа private. Т.е. если ключи доступа не указаны, то все элементы класса являются скрытыми (недоступными).
Попытка обратиться в программе к скрытым данным или методам вызывает сообщение:
<имя элемента класса> is not
accessible
17
Наследование (inheritance)
- это возможность определять новые классы посредством добавления полей, свойств и методов к уже существующим классам.
- Такой механизм получения новых классов называется порождением.
- При этом новый, порожденный, класс (потомок) наследует все поля, методы и свойства своего базового, родительского класса.
- Наследование поддерживает концепцию иерархии классов (hierarchical classification).
- Применение иерархии классов делает управляемыми большие потоки информации.
- Наследование обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов
18
Полиморфизм (polymorphism)
19
Полиморфизм (polymorphism)
- Это возможность заменить в классе потомке метод класса родителя, сохранив при этом имя метода.
- Это свойство классов решать схожие по смыслу проблемы разными способами.
Цель полиморфизма - использование одного имени для задания общих для класса действий.
- Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия.
- В результате объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу.
- Концепция полиморфизма - идея «один интерфейс - множество методов».
- Полиморфизм позволяет манипулировать объектами различной степени сложности путем создания общего для них стандартного интерфейса для реализации похожих действий.
20
Описание класса в Delphi