Я пытаюсь выучить объектно-ориентированное программирование, но мне трудно преодолевать мой опыт структурированного программирования (в основном C, но многие другие со временем). Я думал, что напишу простую программу проверки регистра в качестве упражнения. Я довольно быстро соединил что-то (python - отличный язык), с моими данными в некоторых глобальных переменных и множеством функций. Я не могу понять, можно ли улучшить этот дизайн, создав ряд классов для инкапсуляции некоторых данных и функций и, если да, то как изменить дизайн.
Мои данные - это в основном список счетов ['проверка', 'сохранение', 'Amex'], список категорий ['еда', 'жилье', 'транспорт'] и списки диктов, которые представляют транзакции [ {'date': xyz, 'cat': xyz, 'amount': xyz, 'description': xzy]. У каждой учетной записи есть связанный список диктовок.
Затем у меня есть функции на уровне аккаунта (create-acct (), display-all-accts () и т. Д.) И на уровне транзакции (display-records-in-account (), enter-a-транзакция ( ), редактировать транзакцию (), отображать записи между датами () и т. д.)
Пользователь видит список учетных записей, затем может выбрать учетную запись и просмотреть базовые транзакции с возможностью добавления, удаления, изменения и т. Д. Учетных записей и транзакций.
В настоящее время я реализую все в одном большом классе, чтобы я мог использовать всюду self.variable, а не явные глобальные переменные.
Короче говоря, я пытаюсь выяснить, была бы полезна реорганизация этого в некоторые классы и, если да, то как спроектировать эти классы. Я прочитал несколько книг о книгах (последний раз - объектно-ориентированный мыслительный процесс). Мне нравится думать, что мой существующий дизайн читается и не повторяется.
Любые предложения будут оценены.