我刚刚开始学习带Java的OOP并遇到了一个问题,这使我开始思考,尽管可能太多了。我已经搜索了一段时间,但是找到正确的问题往往是最大的挑战。
我用两个方法isTriangle()和typeOfTriangle()创建了一个Class Triangle。我的构造函数有3个参数(side1,side2,side3)。
这是我的第一次经历,我意识到用户可以传入参数来创建实际上不是Triangle的对象,就像两个边加起来的边小于第三个边的情况一样。我向构造函数添加了逻辑,该逻辑将检查实际参数是否为三角形。这似乎根本不是正确的方法。
题:
Triangle类是否应该负责确定实际参数是否创建可行的Triangle?如果可以,怎么办?逻辑实际上会与构造函数一起使用吗?
您是否需要先创建对象(非三角形),然后使用myTriangle.isTriangle()确定所创建的对象是否可行? ?
似乎客户/用户不应负责确定Triangle类是否返回了可行的Triangle。不应该这样吗?尽管我一直都听到假设是所有麻烦的根源。
我没有将代码包括在内,因为它相当基本,我相信大家都明白。只是不确定该检查应该在“哪里”进行。如果类不是Triangle,似乎该类不应返回任何内容。我最有可能对此进行过度思考。
感谢您抽出宝贵的时间阅读我的帖子。
最佳答案
允许还是禁止“无效”三角形更有意义,这取决于您;例如,如果您要进行计算,则禁止这样做可能很有意义。
如果您具有这些先决条件,则应在构造函数中检查它们并引发异常(IllegalArgumentException
或它的自定义子类通常是正确的选择)。
另一方面,如果允许“无效”三角形在某种程度上有意义,那么您肯定可以使用isValid()
方法进行检查。
关于java - 类应该负责检查是否创建了可行的对象吗?如果可以,怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34774488/