Объектно- ориентированное программирование систем защиты информации
Принципы дизайна
Принципы SOLID
Принципы SOLID определяют, как объединять функции и структуры данных в классы и как эти классы должны сочетаться друг с другом.
2/44
Цель принципов — создать |
|
программные структуры среднего |
|
уровня, которые: |
|
• |
терпимы к изменениям; |
• |
просты и понятны; |
• |
образуют основу для компонентов, |
|
которые могут использоваться во |
|
многих программных системах. |
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
Принципы SOLID
SRP |
• |
Single Responsibility Principle |
• |
Принцип единственной |
|
|
ответственности |
|
OCP |
• Open-Closed Principle |
|
• |
открытости/закрытостиПринцип |
|
LSP |
• |
Liskov Substitution Principle |
• |
Принцип подстановки |
|
|
Барбары Лисков |
3/44
ISP |
• |
Interface Segregation Principle |
• |
Принцип разделения |
|
|
интерфейсов |
|
|
• |
Dependency Inversion Principle |
DIP |
• |
Принцип инверсии |
|
зависимости |
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
Принципы
дизайна
SRP - Принцип единственной ответственности
5/44
SRP – определение и пример нарушения
Пример нарушения |
Определения |
Модуль должен иметь одну и только одну причину для изменения.
Альтернативное определение:
Актор – группа, состоящая из одного или нескольких лиц, желающих изменения системы.
Модуль должен отвечать за одного и только за одного актора
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
6/44
SRP – примеры решения
Решение 1 |
Решение 2 |
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
Принципы
дизайна
OCP – Принцип открытости/закрытости
8/44
OCP – определение и пример нарушения
Пример нарушения
Использование if/else или switch для выбора унаследованного клааса
Определения
Программные сущности должны быть открыты для расширения и закрыты для изменения
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
9/44
SRP – примеры решения
Решение 1
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
Принципы
дизайна
LSP – Принцип подстановки Барбары Лисков
11/
44
LSP – определение и пример нарушения
Пример нарушения |
Определения |
|
Необходимо, чтобы подклассы могли |
|
бы служить заменой для своих |
|
суперклассов |
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики
12/
44
LSP – примеры решения
Решение 1 |
Решение 2 |
Не использовать наследование |
Выделить общую часть в новый |
|
базовый класс и унаследовать от него |
|
Rect и Square |
Москва, весна 2021 г. Объектно-ориентированное программирование систем защиты информации | Кафедра «Информационная безопасность» | © Московский технический университет связи и информатики