我怎样才能让朋友停止思考全球并开始思考亲戚?

时间:2014-04-23 14:04:48

标签: java oop variables pointers object

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

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

正如这篇文章所展示的那样,我很难解释这个概念,即使我知道我会向人们解释这个概念。

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


更多信息:

这是他正在经历的那种混乱。我们正在使用在GridWorld中重写Critter对象(可怕的AP测试对象)。无论如何,我们假设要重新定义一些方法。

他最终会尝试使用方法作为属性(很可能是一个错字,但也因为像GetLocation()这样的东西可能会让人感到困惑),或者他会尝试在错误的变量上使用方法,或者不使用正确类型的变量。

" Integer nameHere"和" nameHere Integer"我认为,这让他感到困惑。当他应该使用nameHere.equals()时,他可能会尝试做Integer.equals()。我向他展示了API,但我认为它只是让人感到困惑。

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

public getSomething()
{
    return something;
}

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

我怎样才能让他停止思考"全球"并开始思考"亲戚"?你如何解释"亲戚"?

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

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

可以将原材料放入模具中并获得产品并开始使用。 类似地,可以创建Class的实例并开始使用它。

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

希望有所帮助