我确实需要你的宝贵帮助。 几个星期前,我开发了一个Java小程序。 可能是一个错误的方法,但我并没有考虑到UML的问题,而是基于一个给定的想法我 构建了一个功能齐全的软件,符合预期。
程序本身由两个类和几个方法组成。
现在我需要绘制相应的UML类图,对我来说这似乎是一个非常棘手的问题。
由于UML类图旨在显示类之间的源代码依赖关系,我想知道 我如何根据以下代码绘制类图。
............................................... ..................
import javax.swing.JPanel; WavPanel类扩展了JPanel {
List<Byte> audioBytes;
List<Line2D.Double> lines;
public WavPanel() {
super();
setBackground(Color.black);
resetWaveform();
}
public void resetWaveform() {
audioBytes = new ArrayList<Byte>();
lines = new ArrayList<Line2D.Double>();
repaint();
}
}
............................................... .................
简而言之,WavPanel类是继承的一个例子。 JPanel类(包的一部分)充当超类。 我该如何解决这个问题? 我担心的是,JPanel是一个包的一部分。
此外,为了绘制一个好的类图,我错了 我想我可能先做UML图然后再编写 相关代码?
我写了几个方法(而不是类)和几个类, 这可能是UML的问题吗? 如果是这样,那将意味着再次重新设计整个软件。
提前致谢。任何帮助将受到高度赞赏。
答案 0 :(得分:1)
是的,您应该在编程之前始终进行规划。但是,一切都不会丢失。
您仍然可以在UML中使用JPanel,只显示使用JPanel的子类的继承(使用白色菱形)。我喜欢使用UMLet绘制我的所有UML图,特别是因为(将来,当你首先执行UML时),你可以将图表导出到Eclipse中!
方法及其参数在UML图中的类中指定。你并不真正关心每个方法对于类图的作用,只是它的大部分特征。专注于展示类之间的关系,即使它们是库。不要担心库中的所有单个方法,但某些API可能已经处理过了。
您是否需要有关UML本身的更多帮助?让我知道,我可以添加这个答案来澄清您对UML的任何其他问题,或咨询this Wikipedia article on class diagrams。
答案 1 :(得分:1)
你没有正确考虑UML。
如果您的应用程序有效,那么UML导致您遇到困难的事实不应该成为一个问题。
UML是一种通信符号,仅此而已。
在编码之前不要求使用UML。 UML根本不是必需的。需要思考。如果创建UML可以帮助您思考,请务必去做。但这不是必需的。
您的解决方案很简单:将JPanel导入UML模型并将继承添加到类图中,或者为图表创建替身。
该计划本身包括两个 课程和几种方法。
不,该程序包含两个由您编写的类以及几个核心Java类(例如,JPanel,List等)。您是否建议在类图中包含每个类,甚至Java核心都很重要班?我不同意这一点。也许注意到你的WavPanel继承自JPanel会很有用,但我不会将java.lang.String添加到我创建的任何UML图中。
我不认为UML值得为包含五个或更少类的解决方案付出努力。那些我可以留在我脑海里的人。当我遇到比五个类更大的问题时,UML往往会提供更多帮助。