💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №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: Логин и покупка в маркетплейсе (Шаблон "Цепочка обязанностей")
  • Пример 2: Очередь задач (Шаблон "Команда")
  • Пример 3: Управление пользователями (Шаблон "Стратегия")

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

03.03.2025

Пример 1: Логин и покупка в маркетплейсе (Шаблон "Цепочка обязанностей")

Python
class User:
    def __init__(self, username: str, password: str):
        self.username = username
        self.password = password

class AuthSystem:
    def __init__(self):
        self.users = {}

    def register(self, user: User):
        self.users[user.username] = user.password

    def login(self, username: str, password: str) -> bool:
        return self.users.get(username) == password

class Marketplace:
    def __init__(self):
        self.items = {"Телефон": 500, "Ноутбук": 1000}

    def purchase(self, username: str, item: str, balance: int) -> str:
        if item in self.items and balance >= self.items[item]:
            return f"{username} купил {item}"
        return "Недостаточно средств или товар отсутствует"

auth = AuthSystem()
market = Marketplace()

user = User("admin", "1234")
auth.register(user)

if auth.login("admin", "1234"):
    print(market.purchase("admin", "Телефон", 600))

Пример 2: Очередь задач (Шаблон "Команда")

Python
class Task:
    def execute(self):
        pass

class DownloadTask(Task):
    def __init__(self, filename):
        self.filename = filename

    def execute(self):
        print(f"Загрузка {self.filename}")

class ConvertTask(Task):
    def __init__(self, filename):
        self.filename = filename

    def execute(self):
        print(f"Конвертация {self.filename}")

class TaskQueue:
    def __init__(self):
        self.tasks = []

    def add_task(self, task: Task):
        self.tasks.append(task)

    def execute_all(self):
        while self.tasks:
            self.tasks.pop(0).execute()

queue = TaskQueue()
queue.add_task(DownloadTask("video.mp4"))
queue.add_task(ConvertTask("video.mp4"))
queue.execute_all()

Пример 3: Управление пользователями (Шаблон "Стратегия")

Python
class AuthStrategy:
    def authenticate(self, user, credential):
        pass

class SimpleAuth(AuthStrategy):
    def authenticate(self, user, password):
        return user == "admin" and password == "1234"

class TokenAuth(AuthStrategy):
    def authenticate(self, user, token):
        return token == "secure_token"

class UserAuth:
    def __init__(self, strategy: AuthStrategy):
        self.strategy = strategy

    def login(self, user, credential):
        if self.strategy.authenticate(user, credential):
            print(f"{user} вошел в систему")
        else:
            print("Ошибка входа")

auth1 = UserAuth(SimpleAuth())
auth1.login("admin", "1234")

auth2 = UserAuth(TokenAuth())
auth2.login("admin", "secure_token")
PreviousGraphviz OnlineNextВведение в теорию программирования: Объектно-ориентированный подход

Last updated 2 months ago