gpt4 book ai didi

java - 家谱程序的逻辑

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:17 25 4
gpt4 key购买 nike

我正在用 Java 创建一个家谱程序,或者至少正在尝试这样做。我开发了几个类:

  • 人 - 名称的 getter 和 setter性别年龄等
  • FamilyMember - 扩展 Person setter/getter 和设置 parent 的设置者和 children
  • 家庭 - 由多个人组成家庭成员及添加方法删除成员
  • FamilyTree 是主类用于建立关系。

我有两个主要问题:

1) 我需要设置人与人之间的关系。目前我在做:

FamilyMember A, FamilyMember B
B.setMother(A);
A.setChild(B);

上面的例子是设置母子关系。

这看起来很笨重。实现所有关系变得非常冗长。关于如何以较少程序化的方式实现多重关系的任何想法?

2) 我必须能够显示家谱。我怎样才能做到这一点?是否有任何自定义类(class)可以让生活更轻松?

感谢您的宝贵时间...

最佳答案

关于画结构,如果显示超过2代,难免会出现碰撞(线交叉)。因此,如果您的应用程序允许您将其减少到两个,那就太好了。我已经编写了许多使用这种表示的程序,无论是垂直的:

alt text

或横向:

alt text

如果您需要一次显示更多世代,则需要想出其他表示法,并且它们可能会开始变得非常稀疏,这样您就可以在同一级别显示同一世代中的每个人。

关于如何将关系表示为数据结构 - 好吧,它很困惑。最简单、最干净的是,任何两个分别是同一个人的母亲和父亲的人都是“结婚的”。但是你想如何代表多个合作伙伴、继子女等?如果不进一步了解您的程序应该做什么,就很难回答这个问题。也许您的数据集没有这些并发症。但是,如果确实如此,最好首先考虑棘手的情况 - 简单的表示不适合轻松扩展以涵盖困难的情况。

(用手)画出您预计的一些最困难的案例;这将建议您需要记录什么样的数据,以及如何组织这些数据。您在绘制时所做的选择(谁先出现,在每个节点使用什么符号和文本等)将为您的数据结构决策提供信息。

同时设置 B 的母亲和 A 的 child 似乎是多余的 - 冗余会导致错误 - 选择一个。哪一个?嗯,当你设置 B 的母亲(A 的性别)时会有更多信息,我们知道任何人都需要恰好有两个 parent ,而不是 0 个或更多的 child 。所以我倾向于 just 设置 B 的母亲;您总是可以通过遍历所有对象来找出任何人的 child ,以找出其 parent 等于所讨论的个人的集合。并且实际存储母亲和父亲关系(相对于简单的 parent 关系)可能会减少重复(假设您正在存储个人的性别)。

关于java - 家谱程序的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com