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

Содержание

Слайд 2

Проблема использования объекта Что внутри объекта? +

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

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

+

Слайд 3

Проблема использования объекта Что внутри объекта? А зачем вообще это знать! +

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

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

+

Слайд 4

Как нам работать с объектом? Использовать стандартный механизм доступа к объекту

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

Использовать стандартный механизм доступа к объекту -

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

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

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

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

элементами системы
Слайд 6

Интерфейс и его реализация Объект Скрытая реализация Доступ к объекту интерфейс

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

Объект

Скрытая
реализация

Доступ к объекту

интерфейс

интерфейс

КОНТРАКТ

Внешнее представление объекта (абстракция поведения)

Механизм, реализующий требуемое

поведение
Слайд 7

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

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

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

Слайд 8

Класс A Интерфейс Принцип инкапсуляции Принцип инкапсуляции: обеспечить независимость внутренней реализации

Класс A

Интерфейс

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

Принцип инкапсуляции: обеспечить независимость внутренней реализации объекта от остальных

частей системы
Как?
За счет изоляции контрактных обязательств (интерфейса) от их реализации
«Никакая часть сложной системы не должна зависеть от внутреннего устройства какой-либо другой части»

Скрытая реализация

Класс B

Интерфейс

Скрытая реализация

Слайд 9

Модификаторы видимости private SomeMethod1( ) public SomeMethod2( ) private Atribut1 public

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

private SomeMethod1( )

public SomeMethod2( )

private Atribut1

public Atribut2

SomeSub

Доступ возможен

Доступ невозможен

class Somebody


public –модификатор открытого доступа
private – модификатор закрытого доступа

Другая часть программы (модуль или класс)

Слайд 10

Инкапсуляция: реализация Обычно скрываются: поля классов (если они не представляют собой

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

Обычно скрываются:
поля классов (если они не представляют собой уже инкапсулированные

объекты)
реализация методов (тело метода)
методы, которые непосредственно связаны с внутренней реализацией
В языках программирования реализуется на основе ограничения доступа к атрибутам и операциям путем использования модификаторов видимости
Слайд 11

Обозначение модификаторов видимости в UML Для документирования ограничений по доступу в

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

Для документирования ограничений по доступу в UML

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

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

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

Слайд 13

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

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

Слайд 14

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

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

Обеспечивает создание иллюзии простоты при использовании за счет

скрытия «сложных» деталей реализации
Слайд 15

Класс А Интерфейс Скрытая реализация Следствие 2: защита внешнего кода от

Класс А

Интерфейс

Скрытая реализация

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

Обеспечивает защиту внутреннего

устройства объекта от ошибок

Класс В

Интерфейс

Скрытая реализация

Класс С

Интерфейс

Скрытая реализация

Локализация места ошибки

Слайд 16

Следствие 3: легкое изменение системы При инкапсуляции мы можем легко изменять

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

При инкапсуляции мы можем легко изменять внутреннюю

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

Пример: изменение алгоритмов поиска Google Интерфейс

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

Интерфейс