我开始开始我的第一个大项目了。它将是一个与Rosetta Stone非常相似的程序。它将是一个程序,用于学习外语,使用Swing用Java编写。在我的计划中,我计划用户能够选择下载的课程来学习。因为我是母语为英语的人,所以我将能够创建一门英语课程。但是,我希望说其他语言的人能够编写课程供用户使用(这是我的课程工作的重要部分)。
由于我希望用户能够下载他们想要的语言课程,因此将其硬编码到程序中是不可能的。需要在运行时解释课程。此外,由于我希望其他人与我的工作合作(即制作课程),我需要让他们这么做。
这样做最好的方法是什么?
我想出的想法是有一个严格的空课程大纲(硬编码)和一个简单的xml文件,详细说明了要使用的文本和声音。这样做的缺点是它极大地限制了作者。不同的语言可能需要从学习不同的部分开始。
对于手头的问题以及整个项目的任何建议将不胜感激。任何相关资源或信息的链接也将不胜感激。
想想你的时间和精力,
Joseph Pond
答案 0 :(得分:5)
简单地说,您应该将程序基于Eclipse RCP或Netbeans Platform等系统。这两个系统都已经完全解决了这个问题,两者都完全适合这项任务。它们不只是用于IDE。
这是一个更大的第一步,因为您需要学习其中一个平台,而不仅仅是Swing。
但是,他们解决了这个问题,无论如何,他们的整体组织和技术将很好地为您的计划服务。
不要重新发明这个轮子,只需学习其中一个。
答案 1 :(得分:1)
如果您从头开始这样做(Will的想法还不错),我要做的是首先放下最容易创建语言课程的文件格式。它可以是XML,纯文本或你自己想出的其他一些格式。
您可能需要一些语言格式的灵活性,因为您希望能够实际指定问题和答案等内容。由于所有额外的终结符,XML是一种痛苦,但它提供了大量的元数据。如果您喜欢XML,可以考虑使用YML定义语言文件,它会为您提供XML数据,但使用空格描绘符而不是尖括号。
您可能还希望使用其创建的语言定义文件,因此您可能希望也可能不希望将英语单词作为键。如果您不想要任何英语,您可能必须跳过XML和YML并提出自己的文件格式 - 可能是布局和/或特殊符号定义流和“功能”的地方。
一旦定义了文件格式,您就不必担心硬编码任何东西......您将无法进行硬编码,因为它已经存在于文件中。
插件功能也很不错......这是您的定义文件还包含的信息,它告诉您要实例化(反射性地)的类以及用于解析/显示数据的类。通过这种方式,您可以通过提供新的jar文件来添加新类型的问题。
如果这令人困惑,抱歉,这在单向论坛中很难,因为我看不到你的脸,看看你是否跟着我,或者我是否朝着正确的方向前进。如果您认为我走在正确的轨道上并想要更多详细信息(我之前已做过一些这样的事情),请随时在评论中留下后续问题(或电子邮件地址),我会很高兴与你进一步讨论。
答案 2 :(得分:1)
如果我这样做,我会认真考虑使用Eclipse EMF来模拟用于定义课程的“语言”。 EMF起初相当令人生畏,但它给了你:
相关的Eclipse插件提供:
我在一些大型项目中使用了EMF,让我回归更多的主要观点是模型演变的简易性......与在较低抽象层次上构建所有内容相比。如果我的模型(语言)需要扩展/更改,我可以使用EMF模型编辑器进行必要的更改,重新生成代码,扩展我的自定义代码以使用扩展来做正确的事情,而且我已经完成了(存储实例的模数转换。)