【问题标题】:How can I get a friend to stop thinking global and start thinking relative? [closed]我怎样才能让朋友停止思考全局并开始思考相对? [关闭]
【发布时间】:2014-06-08 10:25:03
【问题描述】:

我有一个朋友正在努力学习 OO 编程(在计算机科学课上),我认为主要是因为他不理解“类型”和实际“实例”之间的相对性/差异。 "理解数据的存储方式似乎是个问题。

他知道变量、控制结构和相当多的算法,但我认为理解范围和 Java 中定义对象的方式让他感到困惑。最令人困惑的部分是“模板”部分,其中定义了方法和变量,但由每个对象“拥有”。

正如这篇文章所表明的那样,我不擅长解释这个概念,即使我知道我是在向人们解释它。

所以我想知道的是,如何向他清楚地解释实例和类(作为一种类型,而不是实际数据)。我认为他知道基本概念,但不知道完全理解类型和数据的区别,以及数据是如何传递的。


更多信息:

这是他正在经历的那种困惑。我们正在覆盖 GridWorld 中的 Critter 对象(设计糟糕的 AP 测试对象)。无论如何,我们应该重新定义一些方法。

他最终会尝试将方法用作属性(很可能是拼写错误,但也因为 GetLocation() 之类的东西可能会令人困惑),或者他会尝试对错误的变量使用方法,或者不使用正确的变量类型。

我认为“Integer nameHere”和“nameHere Integer”之间的区别让他感到困惑。当他应该执行 nameHere.equals() 时,他可能会尝试执行 Integer.equals()。我向他展示了 API,但我认为这只是令人困惑。

你如何解释类​​型和变量之间的区别,但不仅如此,还要说明一个变量如何可以在其中包含其他变量,如何写

public getSomething()
{
    return something;
}

您正在从您实例化的类中获取特定数据,哦,顺便说一下,每个对象都不同?

我怎样才能让他停止思考“全局”而开始思考“相对”? “亲戚”怎么解释?

【问题讨论】:

    标签: java oop variables pointers object


    【解决方案1】:

    我喜欢用电视来解释 OOP 概念。有“电视”作为一个班级,但是你的房子里有你的电视。它可以做一些所有电视都可以做的事情,比如显示图片、打开和关闭等等。

    但它也有一个本地定义的范围,因为它是世界上电视类的一个实例。如果您在纽约市的电视上进入第 32 频道,您会得到一件事。如果你在班加罗尔这样做,你会得到别的东西。进入频道就像调用电视的setChannel(int channel)方法。

    这样的现实世界对象的用户以这种方式工作并不奇怪。我对这个特定问题的建议是停止使用抽象和技术语言来描述基本概念。计算机科学中有很多东西无法用现实世界中的物质对象来解释,但这不是其中之一。

    【讨论】:

      【解决方案2】:

      可以将类视为模具,就像模具定义最终产品的外观,类定义所有数据可以存储的内容、如何检索、访问等。

      可以将原材料放入模具中,得到产品并开始使用。 同样,可以创建一个 Class 实例并开始使用它。

      每个对象可以保存不同的数据(比如在模具中你可以放绿色液体、红色液体等),但只有一种方法可以访问定义我的类语义的数据(比如模具产品的最终形状是相同的)。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-05
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 2018-05-30
        • 2020-12-06
        相关资源
        最近更新 更多