【问题标题】:Translate a shape into 2d space将形状转换为二维空间
【发布时间】:2015-09-18 18:34:50
【问题描述】:

我正在完成一个大学实验室,但我对讲师要我做什么有点困惑,我们刚刚开始学习 C#,实验室希望我们使用多态性编写控制台应用程序,有 4 个类:Vertex、Shape、Line、Circle 和一个测试。

我的所有课程和大多数方法都实现得很好,但我无法弄清楚他希望我们在 Translate 方法中做什么,下面是实验表上出现的问题:

在Shape中实现2个方法,一个返回Shape的细节 (ToString() ) 和一个允许在 2D 空间中转换形状 (翻译(..))。要翻译的金额应作为 translate 方法的参数(作为对 Vertex 对象的引用 即对象相对于 X 的平移量 和 Y 轴)。

我很确定他不是在寻找像这里给出的解决方案那样复杂的东西:How to Draw Box,Rectangle in a C# Console application

任何建议表示赞赏。

编辑

这是我目前的代码:

 public override void Translate(ref Vertex v)
    {


    }

该方法在 Shape 类中实现为虚方法,并在 Line 和 Circle 类中被覆盖。

【问题讨论】:

    标签: c# polymorphism


    【解决方案1】:

    在这种情况下的翻译意味着“转变”(你会看到这个概念出现在 GUI 框架中,例如TranslateTransform

    例如,以原点为中心的Circle 向上平移 2 个单位,向右将变为以 (2,2) 为中心的圆。

    由于翻译需要2条信息(左右和上下多少),您可以重用Vertex对象(大概将这两条信息存储为XY properties) 来传递翻译参数,如下所示:

    public virtual void Translate(Vertex translation)
    {
        //Implementation left to you
    }
    

    每个类都会覆盖这个方法来进行自己的翻译。请注意,这里实际上不需要传递 by 引用(正如您的代码所具有的),该对象总是 传递 作为 引用。

    【讨论】:

    • 是的,Vertex 类有一个 x 和 y 字段,我知道我必须在 Translate 方法的实现中使用它们,但这是我苦苦挣扎的实现,我在打印值吗?或尝试绘制形状?抱歉,如果我在这里遗漏了一些小东西。
    • @Johntk 如果我不得不猜测,您应该只修改将在调用ToString 时打印的内部属性。这就是我可以假设的所有内容,但没有看到整个作业。真的,你可以而且应该问你的导师一个问题。
    • 我会问他,但要到星期一才能见到他,我现在渴望学习:) 谢谢你的帮助。
    • @Johntk 没问题。您是否理解我关于此处不通过引用传递的评论?
    • 是的,我早该知道,去年暑假和做c++有点生疏了,总是创建一个对象作为引用,或者堆上对象的指针,而不是按值传递,例如堆栈上的 int?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多