了解OO类定义

时间:2018-03-28 10:43:22

标签: class oop

这是摘自IB计算机科学高级论文2010年11月2日,Q1b

我试图了解以下类定义中“Node”和“item”的“角色”是什么 <<来自问题>>

class Node (1)
{
public int item; (2)
public Node next: (3)

public Node(int d) (4)
{
item = d; (5)
next = null; (5)
}
public void displaynode()
{
output(Item + “ “);
}

<<问题摘录的结尾>>

在类定义中的某些行之后的括号中的数字是我在以下问题中使用的引用。

以下是否正确?

(1)Node是我想通过发布创建新的单个节点时使用的类的名称 节点x =新节点(5) 这导致一个新的节点包含值5,存储在(4,5)。

(2,3)这些是带有标签项和next的数据项,分别是integer(2)和Node(3)类型(我不明白具有类型Node的含义)???? 公开我可以使用以下参考x.item,x.Node ???

来访问和更改内容

(4)这是Node接受名为d。

的单个整数参数的方法

(5)输入参数“d”放入对象变量“item”中,当创建新节点时,“next”设置为值Null。

1 个答案:

答案 0 :(得分:1)

  

(1)Node是我想通过发出Node x = new Node(5)来创建新的单个节点时使用的类的名称,这节点导致包含值5的新节点存储在( 4,5)。

这是一个合理的解释。

  

(2,3)这些是带有标签项和next的数据项,分别是integer(2)和Node(3)类型(我不明白具有类型Node的含义)????公开我可以使用以下参考x.item,x.Node ???

来访问和更改内容

请将它们称为变量而不是“数据项”。 itemnext是实例变量,由于next的类型为Node,我们可以说类Node是递归定义的。这是一个链表的实现,其中每个元素都包含一个整数值和对下一个元素的引用。

你对public的含义是正确的。

  

(4)这是Node接受名为d。

的单个整数参数的方法

重要的是要认识到这是一个构造函数方法,它会在实例化时自动调用以初始化Node的状态。

  

(5)输入参数“d”放入对象变量“item”中,当创建新节点时,“next”设置为值Null。

我宁愿说输入参数d的值被赋给变量item。我不会将其称为对象变量 - 在某些语言中,int被视为对象,而其他语言则不被视为对象。在某些观点中,变量本身被视为原始对象,与其值不同。无论如何,我认为这会使得“对象变量”的清晰度降低。

有待进一步研究,请查看以下区别:

  • 变量与值:变量是保存值的元素。变量允许我们编写可以在不同值上运行的代码。值可以是任何值 - 数字,文本,数组,记录,对象,函数等等,具体取决于语言。

  • 类vs对象:类是状态机的蓝图,而对象是一个特定的实例。对象具有在该状态下运行的状态和方法。

  • 类与类型:类声明状态机内部发生的事情。类型声明(已知)一组值。值类型与可以在这些类型的值上调用的运算符相关联。对象类型声明可以在这些类型的对象上调用的方法(但不是那些方法所做的)。

在许多OOP语言和讨论中,类和类型是混合的。即使变量和价值通常也会混淆。作为计算机科学家,您应该了解并理解这些差异。