💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • 1. Антивирус – шаблон "Фасад" (Facade)
  • 2. Социальная сеть ВК – шаблон "Компоновщик" (Composite)

16-я Практическая

21.02.2025

1. Антивирус – шаблон "Фасад" (Facade)

Описание: Антивирусная система включает классы:

  • Файл (содержит имя файла)

  • БазаВирусов (хранит известные вирусы)

  • Сканер (проверяет файлы на вирусы)

  • Антивирус (фасад, который управляет всей системой)

Код на Python:

class Файл:
    def __init__(self, имя):
        self.имя = имя

class БазаВирусов:
    def __init__(self):
        self.вирусы = ["virus1.exe", "trojan.exe", "malware.exe"]

    def проверить_на_вирус(self, файл):
        return файл.имя in self.вирусы

class Сканер:
    def __init__(self, база_вирусов):
        self.база_вирусов = база_вирусов  # Агрегация

    def сканировать(self, файл):
        if self.база_вирусов.проверить_на_вирус(файл):
            return f"Файл {файл.имя} заражён!"
        return f"Файл {файл.имя} безопасен."

class Антивирус:
    def __init__(self):
        self.база = БазаВирусов()  # Композиция
        self.сканер = Сканер(self.база)

    def проверить_файл(self, имя_файла):
        файл = Файл(имя_файла)
        return self.сканер.сканировать(файл)

# Пример работы антивируса
антивирус = Антивирус()
print(антивирус.проверить_файл("virus1.exe"))
print(антивирус.проверить_файл("clean_file.txt"))

2. Социальная сеть ВК – шаблон "Компоновщик" (Composite)

Описание: Структура пользователей и их друзей.

  • Пользователь (содержит имя, друзей и может отправлять сообщения)

  • СоциальнаяСеть (управляет пользователями)

Код на Python:

class Пользователь:
    def __init__(self, имя):
        self.имя = имя
        self.друзья = []  # Композиция

    def добавить_друга(self, друг):
        if друг not in self.друзья:
            self.друзья.append(друг)
            друг.друзья.append(self)  # Двусторонняя связь (агрегация)

    def отправить_сообщение(self, друг, сообщение):
        if друг in self.друзья:
            return f"{self.имя} -> {друг.имя}: {сообщение}"
        return f"{друг.имя} не является другом!"

class СоциальнаяСеть:
    def __init__(self):
        self.пользователи = {}

    def зарегистрировать(self, имя):
        пользователь = Пользователь(имя)
        self.пользователи[имя] = пользователь
        return пользователь

# Пример работы ВКонтакте
вк = СоциальнаяСеть()
user1 = вк.зарегистрировать("Алексей")
user2 = вк.зарегистрировать("Марина")

user1.добавить_друга(user2)
print(user1.отправить_сообщение(user2, "Привет, как дела?"))
Previous15-я ПрактическаяNextGraphviz Online

Last updated 3 months ago