教学:Field,Class&包关系

时间:2008-09-27 23:11:59

标签: theory

总的来说,我认为我可以很好地传达大多数与编程相关的概念 然而,我仍然觉得很难总结字段,类和包之间的关系。


如何总结“字段”,“类”和“包”以及“他们的关系”?

5 个答案:

答案 0 :(得分:2)

自从我教C,C ++和Java以来​​,我遇到了类似的问题。 这是我的工作:

首先,我将包分开并最后解释。

理想情况下,在我看来,学生应首先了解ADT,最好是C语言。他们有结构,他们对其进行单独的操作。字段只是结构中的“槽”,您甚至可以显示内存布局来演示它。函数是对这些结构进行操作的独立实体。

然后你转换到类,方法和字段,并在本质上表明(除了继承和一些轶事)它们在很多方面都是ADT的语法糖。

如果需要,您可以教授对象布局,继承和虚拟表(根据我的经验,它可以帮助学生更好地理解继承以查看内存布局)。

最后,您将了解如何组织课程的主题。如果你教C ++,你实际上没有包,但你可以解释命名空间并讨论组织和单独的编译。

如果您使用的是Java,那么您只需解释这些是同一名称空间中的类集合,它们具有特殊的访问规则并显示它们。无论如何,Java中的包系统都是破碎的,所以我通常会经历模式(例如,将UI包与C分离)。

总结:类构成了对象的基础,这些对象是几个字段的内存排列以及对它们进行操作的相关方法。包是具有一个访问限制机制的类的集合。

答案 1 :(得分:1)

我描述的方式是:

  • 对象是插槽的集合,持有数据的插槽是字段,持有代码的插槽是方法。公共插槽位于对象的外部,私有插槽位于内部。方法应该主要是公共的,因为对象向客户端提供服务,字段应该是私有的,因此客户端不知道服务如何工作。因此,字段是对象的实现细节。
  • 类名必须是唯一的,以便您可以将代码与第三方库结合使用。简单/简短的类名是不够的,因为可能有数千个名为“List”,“Customer”等的类......因此,类被放置在包中以创建更长,更难复制的名称。只有包中的一部分类需要对客户端可见,因此两个访问级别为public和default。这允许包作为库。

因此字段是对象的实现细节,其类存在于包中以保证唯一名称并提供类似库的模块化。

答案 2 :(得分:1)

根据您尝试解释的人的年龄,可以使用一个简单的类比:税表。税表(例如1040EZ)就像一个类,表单中填写的每个空格都是表单的一个字段。税表甚至包含有关如何对字段中的信息进行操作的说明,就像类包括要对字段中的数据执行的成员函数一样。正如一套完整的税表不仅包括主要税表,还包括可能需要填写的其他税表(例如附加计划),因此包不仅包含主类,还包含其他可能需要交互的类用。

答案 3 :(得分:1)

字段是属于该类的变量,或属于该类的对象实例的变量。局部变量和字段之间的区别在于字段的范围更广。

类是用户定义数据类型的模板。类比原始数据类型更先进,因为它们同时具有状态和行为。

包用于对类进行分组并解决潜在的命名冲突。对于多个开发人员和公开可用的代码库,我们中的一些人很可能会将我们的类命名为相同(Math,LinkedList,FileUtils等)。具有前缀类名的唯一包名允许编译器(和其他开发人员)确定您打算使用哪个类。

答案 4 :(得分:1)

有趣的是,您在不提及对象的情况下解决了OO编程问题。我想这可能是你的问题。

这是我使用的。

对象就是事物。它们具有属性(测量,存在状态等)。属性可以称为字段。 [我经常使用我在教室里找到的东西 - 杯子,标记,帽子,外套等来说明这一点。]

对象还涉及行为,称为方法,方法函数或操作。

对象的特征(属性和操作,字段和方法,等等)提供了一种对对象进行分类的方法。

一类对象共有的特性 - 好 - 可以收集到类定义中。类定义描述作为类成员的对象的属性和方法。

包是类定义的集合。虽然 - 理想情况下 - 一个包中的类有一些共同点,但这不是一个要求,也不是一个有用的区别。