Similar presentations:
lec-4
1.
http://0861.ruПарадигмы программирования
Лекция 4
Объектно-ориентированное программирование
ст. препод. каф. ПОВТиАС
Голубничий Артем Александрович
[email protected]
Абакан, 2019
2.
Структура занятия• понятие ООП;
• история ООП;
• принципы ООП (по Алану Кэю);
• основные понятия;
• UML.
2
3.
Понятия ООПОбъектно-ориентированное программирование (ООП) – методология
программирования, основанная на представлении программы в виде
совокупности объектов, каждый из которых является экземпляром
определенного класса, а классы образуют иерархию наследования.
• ООП помогает справиться с нелинейно растущей сложностью
программ при увеличении их объема.
Класс – универсальный, комплексный тип данных, состоящий из
тематически единого набора «полей» (переменных более элементарных
типов) и «методов» (функций для работы с этими полями).
3
4.
История ООПScala
Simula 67
Python
Ruby
Smalltalk-80
Java
Sketchpad
C#
C++
Objective-C
Smalltalk – объектно-ориентированный язык программирования с динамической
типизацией, основанный на идее посылки сообщений.
Sketchpad – прообраз будущих CAD систем. Программа, построенная на принципах
объектно-ориентированного программирования с высоким (на тот момент) уровнем
человеко-машинного взаимодействия.
Simula – язык общего назначения, традиционно не считается объектно-ориентированным
языком, представляет расширение алгола «объектной» нотацией.
4
5.
Принципы ООППринцип 1. Все является объектом.
Объект 1
Объект 2
Класс
Объект 3
Объект 4
объект – абстракция данных;
объект – это отдельный
представитель класса,
имеющий конкретное состояние
и поведение, полностью
Алан Кёртис Кэй
определяемое классом;
объект – сущность в адресном пространстве вычислительной системы,
появляющаяся при создании экземпляра класса (например, после запуска
результатов компиляции и связывания исходного кода на выполнение).
5
6.
Принципы ООППринцип 2. Вычисления осуществляются путем взаимодействия (обмена
данными) между объектами, при котором один объект требует, чтобы
другой объект выполнил некоторое действие.
• объекты взаимодействуют,
Объект 1
Объект 1
посылая и получая
сообщения;
• сообщение – это запрос на
Сообщение
с набором
выполнение действия,
аргументов
дополненный набором
аргументов, которые могут
Объект 2
Объект 2
понадобиться при
выполнении действия.
6
7.
Принципы ООППринцип 3. Каждый объект имеет независимую память, которая
состоит из других объектов.
Объект 1
Параметр 1 = значение 1
Параметр 2 = значение 2
Класс
Объект 2
Кластер 1
Производительность = 64 GFLOPS
Количество узлов = 20
Кластеры
Параметр 1 = значение 3
Параметр 2 = значение 4
Кластер 2
Производительность = 32 GFLOPS
Количество узлов = 10
7
8.
Принципы ООППринцип 4. Каждый объект является представителем класса, который
выражает общие свойства объектов данного типа.
Производительность
Кластеры Количество узлов
Размер кэша
…
8
9.
Принципы ООППринцип 5. В классе задается функциональность (поведение объекта).
• все объекты, которые являются экземплярами одного класса, могут
выполнять одни и те же действия.
Класс копилка
Добавить монету
Количество монет
Забрать монету
Проверить вместимость
9
10.
Принципы ООППринцип 6. Классы организованы в единую древовидную структуру с
общим корнем, называемую иерархией наследования.
• память и поведение, связанное с экземплярами определенного класса,
автоматически доступны любому классу, расположенному ниже в
иерархическом дереве.
Материальные
объекты
Масса
Аппаратное
обеспечение
Люди
Производительность
Возраст
Студенты
Преподаватели
ЭВМ
ПК
Мобильные
устройства
10
11.
Основные понятия: абстрагированиеАбстрагирование – выделение значимой информации и исключение из
рассмотрения незначимой.
Значимая информация
• Производительность
• Количество узлов
• Размер кэша
Не значимая информация
• Место расположения
• Версия ОС
• Год сборки
11
12.
Основные понятия: инкапсуляция и сокрытиеИнкапсуляция – упаковка данных и функций в единый компонент;
Инкапсуляция – позволяет объединить данные и методы, работающие с
ними, в классе.
• механизм языка, позволяющий ограничить доступ одних компонентов
программы к другим;
• языковая конструкция, позволяющая связать данные с методами,
предназначенными для обработки этих данных.
Сокрытие – принцип проектирования, заключающийся в разграничении
доступа различных частей программы к внутренним компонентам друг
друга.
Отождествление понятий
С++, Java, Ruby
Отсутствие сокрытия
Smalltalk, Python
12
13.
Инкапсуляция на примере Javaclass A {
private int a;
private int b;
private void doSomething() { //скрытый метод
//actions
}
public int getSomething() { //открытый метод
return a;
}
}
13
14.
Основные понятия: наследованиеНаследование – свойство системы, позволяющее описать новый класс на
основе уже существующего с частично или полностью заимствующейся
функциональностью
Наследование – концепция ООП, согласно которой абстрактный тип
данных может наследовать данные и функциональность некоторого
существующего типа, способствуя повторному использованию
компонентов программного обеспечения.
• класс, от которого производится наследование, называется базовым,
родительским или суперклассом;
• класс, создаваемый на основе другого класса называется потомком,
наследником, дочерним или производным классом.
14
15.
Пример наследованияЧеловек
Студент
ОФО
Работник
ЗФО
Преподаватель
Штатный
Лаборант
Совместитель
15
16.
Основные понятия: полиморфизмПолиморфизм – свойство системы, позволяющее использовать объекты
с одинаковым интерфейсом без информации о типе и внутренней
структуре объекта.
Полиморфизм – свойство родственных объектов решать схожие по
смыслу задачи разными способами.
Абстрактный класс
Производный класс 1
Фигура
Квадрат
Круг
Производный класс 2
• вычисление площади – метод,
применимый к абстрактному классу.
16
17.
UML в ООПUML (унифицированный язык моделирования) – язык графического
описания для объектного моделирования в области разработки
программного обеспечения, моделирования бизнес-процессов,
системного проектирования и отображения организационных структур.
Диаграмма классов (Class diagram) – статическая структурная
диаграмма, описывающая структуру системы, демонстрирующая классы
системы, их атрибуты, методы и зависимости между классами.
17
18.
UML в ООПСтруктура диаграммы класса:
• Имя. Имя класса выравнивается по
центру и пишется полужирным
шрифтом. Имена классов
начинаются с заглавной буквы.
Если класс абстрактный – то имя
пишется полужирным курсивом.
• Атрибуты. Они выровнены по
левому краю и начинаются с
маленькой буквы.
• Методы. Они также выровнены по
левому краю и пишутся с
маленькой буквы.
18
19.
Видимость в UMLДля задания видимости членов класса (т.е. атрибутов или методов),
эти обозначения должны быть размещены перед именем участника
+
#
/
~
Публичный (Public)
Приватный (Private)
Защищенный (Protected)
Производный (Derived) (может быть совмещен с другими)
Пакет (Package)
public – внутри класса и вне класса;
private – внутри класса;
protected – внутри самого класса или внутри производных классов;
package – видимость внутри пакета.
19
20.
Взаимосвязи в UMLОбъекты классов
• зависимость
• ассоциация
• агрегация
• композиция
Классы
• наследование
• реализация
20