Инкапсуляция
Проблема использования объекта
Проблема использования объекта
Как нам работать с объектом?
Определение интерфейса системы
Интерфейс и его реализация
Понятие инкапсуляции
Принцип инкапсуляции
Модификаторы видимости
Инкапсуляция: реализация
Обозначение модификаторов видимости в UML
Пример инкапсуляции
Пример инкапсуляции
Следствие 1: простота использования
Следствие 2: защита внешнего кода от ошибок
Следствие 3: легкое изменение системы
Пример: изменение алгоритмов поиска Google
Резюме: рассмотренные вопросы
1.53M
Category: informaticsinformatics

Инкапсуляция

1. Инкапсуляция

1.
2.
3.
4.
5.
6.
Проблема использования объекта
Понятие интерфейса. Каким должен быть интерфейс у класса
Понятие инкапсуляции. Принцип инкапсуляции. Примеры
Реализация инкапсуляции: модификаторы видимости
Обозначение инкапсуляции в UML
Следствия применения инкапсуляции
Преподаватель:
Ботов Дмитрий Сергеевич

2. Проблема использования объекта

Что внутри объекта?
+
2

3. Проблема использования объекта

Что внутри объекта?
А зачем вообще это знать!
+
3

4. Как нам работать с объектом?

• Использовать стандартный механизм доступа к
объекту - интерфейс
• Стандартный механизм доступа к объекту должен:
Должен быть универсальным
Должен быть достаточно простым
Должен полностью обеспечивать выполнение
контракта - спецификации внешнего проявления
объекта
4

5. Определение интерфейса системы

Интерфейс (interface) — совокупность средств,
методов и правил взаимодействия между
элементами системы
5

6. Интерфейс и его реализация

Внешнее представление
объекта
(абстракция поведения)
интерфейс
Доступ
к
объекту
Механизм, реализующий
требуемое поведение
Объект
Скрытая
реализация
интерфейс
6

7. Понятие инкапсуляции

Инкапсуляция – сокрытие
внутреннего устройства
объекта (реализации)
7

8. Принцип инкапсуляции

Класс B
Принцип инкапсуляции: обеспечить
независимость внутренней реализации
объекта от остальных частей системы
Как?
o За счет изоляции контрактных
обязательств (интерфейса) от их
реализации
Интерфейс
Скрытая
реализация
Класс A
Интерфейс
«Никакая часть сложной системы не
должна зависеть от внутреннего
устройства какой-либо другой части»
Скрытая
реализация
8

9. Модификаторы видимости

class Somebody
Другая часть программы
(модуль или класс)
private Atribut1
SomeSub
public Atribut2
private SomeMethod1( )
public SomeMethod2( )
• public –модификатор открытого доступа
• private – модификатор закрытого доступа
Доступ возможен
Доступ невозможен
9

10. Инкапсуляция: реализация

Обычно скрываются:
• поля классов
(если они не представляют собой уже инкапсулированные объекты)
• реализация методов (тело метода)
• методы, которые непосредственно связаны с
внутренней реализацией
В языках программирования реализуется на основе
ограничения доступа к атрибутам и операциям путем
использования модификаторов видимости
10

11. Обозначение модификаторов видимости в UML

• Для документирования ограничений по доступу в UML
атрибуты и операции обозначаются символами слева от
от имен
«+» (открытый доступ/public)
«-» (только из операций этого же класса/private)
«#» (только из операций этого же класса и классов создаваемых
на его основе/protected)
11

12. Пример инкапсуляции

Пластиковая карта VISA
- Номер счета: длинное целое
- Пин-код: целое
- Сумма: финансовый
- Дешифрация(пин)
+ Авторизация(пин)
+ Остаток( )
+ Снятие(сумма)
+ Зачисление( )
12

13. Пример инкапсуляции

Телевизор
-НастройкиКаналов
-ДешифраторСигнала
-Преобразователь
-Самодиагностика()
+Включить()
+Выключить()
-ДекодерСигнала()
+ПереключениеКанала()
13

14. Следствие 1: простота использования

Обеспечивает создание иллюзии простоты при
использовании за счет скрытия «сложных» деталей
реализации
14

15. Следствие 2: защита внешнего кода от ошибок

Обеспечивает защиту внутреннего устройства объекта от ошибок
Класс В
Интерфейс
Локализация места ошибки
Скрытая
реализация
Класс С
Класс А
Интерфейс
Интерфейс
Скрытая
реализация
Скрытая
реализация
15

16. Следствие 3: легкое изменение системы

При инкапсуляции мы можем легко изменять внутреннюю
реализацию классов (модулей) системы (гибкость)
Интерфейс проще расширять, чем изменять!
16

17. Пример: изменение алгоритмов поиска Google

Интерфейс
17

18. Резюме: рассмотренные вопросы

• Почему знание о внутреннем устройстве объекта является
проблемой при его использовании?
• Что такое интерфейс? Каким должен быть интерфейс у
класса? Как связано с интерфейсом понятие контракта?
• В чем заключается принцип инкапсуляции?
• Как реализуется отделение интерфейса от реализации?
• Как обозначаются модификаторы видимости в языке
UML?
• Какие следствия дает грамотное применение
инкапсуляции?
18
English     Русский Rules