答案 0 :(得分:2)
你的第一个问题让我困惑。 UML让我想到了对象,“Posts-table”让我想起了关系数据库。你的意思是哪一个?我假设你想要对象。
您需要一个代表问题和答案的界面或抽象 - 也许这就是Post界面。它将具有文本和作者等属性以及发布时的时间戳。
由于问题永远不会出现在答案之前,如果你有一个Post实例的集合,如果按时间戳排序,它将按照正确的顺序排列。
更新:UML意味着面向对象的编程。 Python既是面向对象的又是一种功能语言。这意味着你将首先考虑对象的问题。
根据对象进行思考意味着不考虑用户界面和数据库。您可以设计对象以提供所需的行为。您最初可以拥有一个简单的文本界面,而对象序列化将用于持久性。但是先把对象弄好。
当你说“接口”时,我会想到Java接口。他们声明了该类的签名,但对实现没有任何说明。所以你的Post接口可能有问答实现。
什么包含所有Post实例?他们拥有什么?我有另一个名为KnowledgeExchange的对象来拥有帖子的集合。让它隐藏所有实现细节,并为getQuestion和getAnswers提供方法。不要强迫您的客户必须知道所有这些细节,甚至是否将其实现为堆栈或列表。
就像我说的那样,不要担心桌子或持久性。想想对象。最好用对象而不仅仅是Post,Question和Answer来解决整个问题。