我正在尝试学习面向对象编程,但是由于我主要有结构化编程背景(主要是C语言,但随着时间的推移还有其他语言),所以很难克服这个问题。我想写一个简单的支票登记程序来练习一下。我很快就写了一个东西(Python是一种很棒的语言),我的数据存储在一些全局变量中,并且有许多函数。我不知道是否可以通过创建一些类来封装一些数据和函数来改进这个设计,如果可以的话,如何更改这个设计。
我的数据基本上是账户列表['checking','saving','Amex'],类别列表['food','shelter','transportation']和代表交易的字典列表[{'date':xyz,'cat':xyz,'amount':xyz,'description':xzy]。每个账户都有一个相关联的字典列表。
然后我在账户级别(create-acct(),display-all-accts()等)和交易级别(display-entries-in-account(),enter-a-transaction(),edit-a-transaction(),display-entries-between-dates()等)上有函数。
用户看到账户列表,然后可以选择一个账户并查看底层交易,具有添加、删除、编辑等账户和交易的功能。
我目前在一个大类中实现所有内容,以便可以使用self.variable,而不是显式的全局变量。
简而言之,我正在尝试弄清楚是否将其重新组织成一些类会有用,如果是这样,如何设计这些类。我已经读了一些面向对象编程的书籍(最近是《面向对象思考过程》)。我认为我的现有设计很易于阅读,并且不会重复自己。
欢迎提出任何建议。
我的数据基本上是账户列表['checking','saving','Amex'],类别列表['food','shelter','transportation']和代表交易的字典列表[{'date':xyz,'cat':xyz,'amount':xyz,'description':xzy]。每个账户都有一个相关联的字典列表。
然后我在账户级别(create-acct(),display-all-accts()等)和交易级别(display-entries-in-account(),enter-a-transaction(),edit-a-transaction(),display-entries-between-dates()等)上有函数。
用户看到账户列表,然后可以选择一个账户并查看底层交易,具有添加、删除、编辑等账户和交易的功能。
我目前在一个大类中实现所有内容,以便可以使用self.variable,而不是显式的全局变量。
简而言之,我正在尝试弄清楚是否将其重新组织成一些类会有用,如果是这样,如何设计这些类。我已经读了一些面向对象编程的书籍(最近是《面向对象思考过程》)。我认为我的现有设计很易于阅读,并且不会重复自己。
欢迎提出任何建议。