Архитектура карточной игры в ООП

oop

#1

Добрый день. Новичок в ООП; пишу с использованием SwiftUI карточную игру “Дурак” с ИИ. Собственно движок изначально написал на Python, но с ООП был практически не знаком, поэтому есть некое недопонимание вопроса. Подскажите, пожалуйста, кое-что по архитектуре приложения. Я изначально создал несколько классов: колода (где хранятся переменные, связанные с множествами карт для анализа ИИ), игра (где прописаны методы, описывающие правила игры), ии (который анализирует ситуации в игре и принимает решения). Начались какие-то странные ошибки, которые даже сложно идентифицировать, и в сети инфа по ним очень мутная… Вопрос следующий. Как выстроить архитектуру подобного приложения с точки зрения создания объектов? Как разбить этот функционал на объекты? Должны ли они вызывать методы друг друга, или это что-то принципиально неверное? Как бы вы подошли к этой задаче? А то у меня получается какая-то мешанина; один объект вызывает методы другого и в таком роде. Есть интуитивное ощущение, что я что-то делаю неправильно. Извиняюсь за сумбурное изложение мыслей. Был бы благодарен за любую помощь.