Similar presentations:
Инкапсуляция
1. Инкапсуляция
ИНКАПСУЛЯЦИЯ2. Понятие инкапсуляции:
■ Инкапсуляция – это скрытие реализацииобъекта от конечного пользователя, которое
в С## осуществляется при помощи
модификаторов доступа (private, public…).
Конечным пользователем объекта здесь
выступает либо объект наследник, либо
программист.
3. Виды модификаторов уровня доступа:
- public – доступ к члену возможен из любого места однойсборки, либо из другой сборки, на которую есть ссылка;
- protected – доступ к члену возможен только внутри
класса, либо в классе-наследнике (при наследовании);
- internal – доступ к члену возможен только из сборки, в
которой он объявлен;
- private – доступ к члену возможен только внутри класса;
- protected internal - доступ к члену возможен из одной
сборки, либо из класса-наследника другой сборки.
4. Принципы эффективной инкапсуляции:
■ Использование абстракции;■ Сокрытие реализации;
■ Разделение ответственности.
Эффективная инкапсуляция = абстракция +
сокрытие реализации + ответственность.
5. Абстракция - это процесс упрощения сложной задачи.
У абстракции есть два преимущества:■ Абстракция упрощает решение задачи;
■ Благодаря абстракции компоненты
программного обеспечения можно
использовать повторно.
6. Примеры абстракции:
■ очередь людей к кассиру в банке. Когда кассир освобождается,первый в очереди клиент подходит к его окошку. И таким образом
они один за другим продвигаются к окошку кассира. Очередь
продвигается согласно алгоритму "первым пришел - первым
обслужен".
■ конвейер с гамбургерами в закусочной. Когда новый гамбургер
попадает на конвейер, он занимает место рядом с последним в
ряду гамбургером. Поэтому гамбургер, который снимают с
конвейера, пролежал там дольше остальных. Можно сказать, что
рестораны работают по алгоритму "первым пришел - первым
обслужен".
7. Сокрытие реализации защищает программу от внешних воздействий.
Сокрытие реализации дает два преимущества:■ защищает объекты от пользователей;
■ защищает пользователей от объектов.
Сокрытие реализации способствует созданию
слабосвязанного кода.
8. Слабосвязанный код – это код, не зависящий от реализации других компонентов.
Зависимый код зависит от существованияопределенного типа. Зависимости избежать
нельзя.
В сильносвязанной(зависимой) программе
теряются преимущества инкапсуляции: создание
независимых, повторно используемых объектов
невозможно.
9. Распределение ответственности:
Чтобы создать слабосвязанную программу,нужно должным образом распределить
ответственность.
При надлежащем распределении
ответственности каждый объект выполняет
одну функцию, за которую он несет
ответственность и выполняет эту функцию
хорошо.
10. Задание 1 вариант
Описать класс «Автомобиль», в котором хранитсяинформация о возрасте и имени автомобиля.
Написать метод, который запускает двигатель,
останавливает его. Описать заданные свойства.
Изменить имя на новое.
11. Задание 2 вариант
Описать класс «Автомобиль», в котором хранитсяинформация о цвете и имени автомобиля.
Написать метод, который поворачивает автомобиль
налево и направо (учтите, что автомобиль может
ехать только если запущен двигатель). Описать
заданные свойства.