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

Содержание

Слайд 2

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

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

+

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

Слайд 3

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

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

+

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

Слайд 4

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

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

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

Слайд 5

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

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

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

Слайд 6

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

Объект

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

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

интерфейс

интерфейс

КОНТРАКТ

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

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

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

Слайд 7

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

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

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

Слайд 8

Класс A

Интерфейс

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

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

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

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

Класс B

Интерфейс

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

Слайд 9

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

private SomeMethod1( )

public SomeMethod2( )

private Atribut1

public Atribut2

SomeSub

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

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

class Somebody

Модификаторы видимости private SomeMethod1( ) public SomeMethod2( ) private Atribut1 public Atribut2
public –модификатор открытого доступа
private – модификатор закрытого доступа

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

Слайд 10

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

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

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

Слайд 11

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

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

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

Слайд 12

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

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

Слайд 13

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

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

Слайд 14

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

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

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

Слайд 15

Класс А

Интерфейс

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

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

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

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

Класс В

Интерфейс

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

Класс С

Интерфейс

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

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

Слайд 16

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

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

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

Слайд 17

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

Интерфейс

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