个人工具
名字空间
变换
操作

BlueJ/观察对象与组装

来自站长百科
跳转到: 导航, 搜索

BlueJ | BlueJ使用

在本条目中,我们将浏览一下另外一些经常在这个环境中需要做的事情。这些事情虽然不是必需的,但却是经常用到的。

目录

观察对象

当你执行一个对象的方法的时候,你可能会注意到查看对象这项操作,它可以应用于除用户定义的方法之外的所有对象。此操作可以查看对象的实例变量(“域”)的状态。试着用一些用户自定义的值创建一个对象(例如:以代参数的构造函数构造的一个Staff对象的实例)。然后从对象菜单中选择 查看对象 ,就会弹出一个对话框显示该对象的域,其类型和其值(如下图)。

BlueJ 9.jpg

查看对象对于快速检查那些改变对象状态的操作是否被正确的执行了是很有用的。因此“查看对象”功能是一个简单的调试工具。

在 Staff 这个例子中,所有的都是简单数据类型(要么是非对象类型,要么是字符串类型)。这些类型的值可以直接显示出来。这样你可以及时查看构造方法是否正确的完成了任务。

在更复杂的情况下, 域的值可能是对于用户自定义对象的引用。我们将用另一个工程来演示这样的例子:打开工程 people2,它同样包含在标准的 BlueJ 版本。People2 的界面如下 图所示。可以看到,第二个例子除了有前面看到的那些之外还有一个 Address 类。Person类的一个域就是用户自定义的类型 Address。

BlueJ 10.jpg

接下来我们要试验的是——查看对象的域——创建一个 Staff 对象并且调用它的setAddress 方法(你可以在 Person 子菜单中找到) 。输入一个地址,在内部,Staff 的代码创建Address类的一个对象并且储存在address域里。

现在查看 Staff 对象。查看结果的对话框如下图所示。此时,Staff 类内部的域包含 address。如你所见,他的值显示为 <object reference>—因为这是一个复杂的,用户自定义的对象,他的值不能直接被显示在列表中。

BlueJ 11.jpg

为了进一步检查 address,在列表中选择 address 域并且点击对话框中的查看对象按钮(你同样也可以双击 address 域)。这时就会弹出另一个查看窗口,其中显示了 address 对象的详细内容(如下图)。

BlueJ 12.jpg

如果选中的域是公共的,你同样可以选择address 域并且点击Get按钮而不是查看对象按钮。此操作将选中的对象放入对象槽中。你可以进一步的通过调用它的方法查看它.

小结:通过显示对象的内部状态,对象查看可以作为一些简单的调试手段。

组合

“组合”指的是将对象作为参数传递给其他对象的能力。让我们试验一个例子。创建一个Database的对象(你会注意到Database类只有一个不带参数的构造方法,所以构造一个对象只有这样一种方式). Database 对象有容纳一个 persons 列表的能力。它有相应的一些操作来添加 person 对象和显示所有当前储存的person.

如果你还没有在对象槽中建立一个 Staff 或者 Student 对象,首先创建它们中的一个。接下来,你在对象槽中同时需要一个 Database 对象和一个 Staff 或者 Student 对象。

现在调用 Database 对象的 addPerson 方法.提示告诉你需要一个 Person 类型的参数.(记住:Person 类是一个抽象类,因此没有任何对象是直接的 Person 类型.但是,作为自类型,Student 和 Staff 对象可以作为 Person 对象的替代.因此在需要 Person 的时候传送 Staff 或者Student 是合法的),为了将你的对象槽中的对象作为一个参数传送给你调用的方法,你可以在参数域中输入它的名字或者作为一种快捷方式,只需要点击你需要的对象,这将把它的名字输入到方法调用对话框中去.

点击确定之后调用就生效了。因为这个方法没有任何的返回值,我们不能立刻看到结果.你可以调用 Database 的 listAll 方法查看此操作确实被执行了.listAll 操作把个人信息写入到标准输出,你会注意到一个文本终端自动被打开来显示这些文本.

小结:通过点击一个对象的图标可以把一个对象作为参数传给一个方法调用。

参考来源

http://www.bluej.org/index.html

BlueJ使用手册导航

BlueJ安装

BlueJ安装与启动

BlueJ使用

编辑、编译、执行 | 观察对象与组装 | 创建一个新工程 | 调试 | 创建独立的应用程序与Applet | 其他操作

留言