首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展类介绍

扩展类介绍
EN

Stack Overflow用户
提问于 2012-12-28 01:41:51
回答 2查看 770关注 0票数 0

我有一个类三角形和一个扩展三角形的类,称为IsoscelesRight。我从老师那里得到了写IsoscelesRight的指示和提示,但我仍然不知道该怎么做。

IsoscelesRight只取一个双值,但设置两边,从而形成等腰直角三角形。提示:通过将边a和b设置为相同的值来实现这一点,边c将等于1乘以2的平方根。确保构造函数适当地调用super()。

代码语言:javascript
复制
public class Triangle
{
    private double sideA;
    private double sideB;
    private double sideC;

public Triangle(double a, double b, double c)
{
    sideA = a;
    sideB = b;
    sideC = c;
}

public double getSideA()
{
    return sideA;
}

public double getSideB()
{
    return sideB;
}

public double getSideC()
{
    return sideC;
}
}

以下是需要更改的IsoscelesRight的全部内容。

代码语言:javascript
复制
public class IsoscelesRight extends Triangle
{
    public IsoscelesRight(double side)
    {
        super(side, side, side);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-12-28 01:49:43

你一定是在找:

代码语言:javascript
复制
public class IsoscelesRight extends Triangle {
  public IsoscelesRight(double side) {
    super(side, side, Math.sqrt(2) * side);
  }
}

我将把关于为什么的研究留给你,因为这显然是家庭作业。

请注意,如果您只是将此代码提交给您的教授,您几乎肯定会得到一个f的努力。

一个稍微好一点(当然更有启发性)的解决方案是:

代码语言:javascript
复制
public class Isosceles extends Triangle {
  public Isosceles(double side, double hypotenuse) {
    super(side, side, hypotenuse);
  }
}

public class Right extends Isosceles {
  public Right(double side) {
    super(side, Math.sqrt(2) * side);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2012-12-28 02:03:52

在任何三角形中,边都受到Pyphagorean定理的约束,因此,如果你打算存储边的长度,只需要存储2,而第三个边(即次元)总是被计算出来的。这将占用较少的空间,但需要更多的时间来检索低音值,因为SQRT需要时间进行计算。因此,修改您的模型,因为它不能只为逻辑上有效的三角形存储3个长度(不需要为3个值取内存),而无需在.ctor中进行任何检查。

只需存储侧A和B,按公式A^2 + B^2 = C^2计算低音值。如果存储所有三面,则检查按公式加起来的值,否则三角形将存储逻辑损坏的数据。

如果我是你的老师,我至少会希望听到这些担忧。实际的类设计可能是应用程序所需的一切--无论是速度、性能、数据的逻辑一致性,还是上述所有组合。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14063544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档