2

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


您如何总结“字段”、“类”和“包”以及“它们的关系”?

4

5 回答 5

2

自从我教 C、C++ 和 Java 以来,我也遇到过类似的问题。这是我所做的:

首先,我将包分开保存并在最后进行解释。

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

然后,您过渡到类、方法和字段,并证明它们在本质上(除了继承和一些轶事)在许多方面都是 ADT 的语法糖。

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

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

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

总而言之:类构成了对象的基础,这些对象是多个字段和对其进行操作的相关方法的内存排列。包是具有另一种访问限制机制的类的集合。

于 2008-09-27T23:20:51.867 回答
1

我描述它的方式是:

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

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

于 2008-09-27T23:34:40.087 回答
1

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

于 2008-09-27T23:44:27.753 回答
1

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

类是用户定义数据类型的模板。类比原始数据类型更高级,因为它们既有状态又有行为。

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

于 2008-09-27T23:52:39.530 回答
1

有趣的是,您处理 OO 编程时没有提到对象。我认为这可能是你的问题。

这是我使用的。

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

对象也参与行为,称为方法、方法功能或操作。

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

一类对象共有的特征——嗯——可以被收集到一个类定义中。类定义描述了作为类成员的对象的属性和方法。

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

于 2008-09-28T01:31:22.350 回答