BlueJ/编辑、编译、执行
打开BlueJ的发布版本中的工程 people。你能够在 BlueJ 安装目录下的 example 目录下找到这个工程。打开工程后你因该可以看到和下图相似的窗口,这个窗口可能看上去和下图不完全一样,但区别应该很小。
创建对象[ ]
BlueJ的一个很基本的特点是你不仅仅能够执行一个完整的应用程序,而且能直接和任何类的对象交互并执行其中的公共(public)方法。在 BlueJ 中一个执行过程通常通过创建一个对象, 然后调用其中的方法来完成。 这种模式在开发一个应用软件的过程中是十分有帮助的-你可以单独测试每个类一旦它被写完。这样就没有必要一开始就把整个应用程序写完。
旁注:静态方法能够被直接调用而不需要先创建一个类。main()是一个静态方法,因此我们可以做和通常在一个Java应用程序中发生事件的相同的事情-通过执行静态方法main()启动一个应用程序。我们会在后面继续讨论。现在,我们来做一些其他有趣的不能在一般的 Java 环境中做到的事情。
你看到的主窗口中间的方块(标注了数据库,人,教员和学生)是代表了在这个应用程序中用到的类的图标。右键单击类的图标, 你会得到一个包含能够应用到该类的操作的一个菜单(如下图)。图中显示的操作由 new 操作符和类中定义的各个构造函数的组合,以及 BlueJ环境提供的一些操作组成。
我们希望创建一个教员对象,所以你应该右键单击教员图标(会弹出上图中显示的菜单)。这个菜单显示了两个构造函数可以用来构造教员类。一个有参数一个没有。首先,选择没有参数的构造函数。弹出的对话框应该如下图所示.
这个对话框要求你输入一个被创建对象的名字。同时提供了一个缺省的名字(staff_1)。这个缺省的名字对我们来说足够好了。所以马上点击 OK。一个教员对象就会被创建。一旦一个对象被创建,它会被放在窗口底部的对象槽里(如下图)。
你可能已经注意到 Person 类被标注为<<abstract>>(它是一个抽象类)。你会发现(如果你试一试)你不能创建抽象类的对象(就跟 Java 语言定义的规则一样)。
小结:要创建一个对象,从类菜单中选择一个构造函数
执行[ ]
现在你已经创建了一个对象,你可以执行它的公共(public)方法。用右键单击对象图标,就会弹出一个包含对象操作的菜单(如下图) 。这个菜单显示了该对象所有可执行的方法和两个 BlueJ 环境提供的操作(查看对象和删除对象)。
你可以看到菜单里有两个方法 getRoom 和 setRoom,分别设置和返回这个教员的房间号。试着调用 getRoom。只要简单的从菜单里选择它,它就会被执行。一个对话框会出现向你显示调用的结果(下图)。在上面的情况下,结果是“(unknown room)”,因为我们还没有为这个人指定房间号。
从父类继承而来的方法在一个子菜单中。在对象弹出菜单的顶部有两个子菜单。 一个包含从Object 继承而来的方法,另一个包含从 Person 继承而来的方法.你可以调用的Person的方法(比如:getName),通过选择子菜单中的函数名。试一下。你会发现结果同样的奇怪:它返回“(unknown name)” ,因为我们还没有给这个人取一个名字。
现在让我试着来指定一个房间号。这个操作演示了如何调用有参数的方法(调用getRoom和getName 有返回值,但没有参数) 。通过选择菜单中相应的项调用 setRoom。一个对话框会出现提示你输入参数(如下图) 。
在这个对话框的最上端显示的是被调用方法的接口声明(包括注释和定义)。下面是一个文本框,你可以在里面输入参数。上面的定义告诉我们需要一个 String 类型的参数。在文本框里输入新的名字作为一个 String(包括引号),然后点击 OK。这样就结束了-因为这个方法没有返回值,所以没有结果对话框。再一次调用 getName 来检查名字是否真的改变了。
对对象的创建和方法调用练习一段时间。然后试着调用有参数的构造函数和更多的方法直到你对这些操作熟悉为止。
小结:要执行一个方法,从对象菜单中选择它
编辑一个类[ ]
到目前为止,我们只涉及到了一个对象的接口。现在是时候窥探一下对象内部了。你能够看到一个类的实现通过在类菜单里选择“编辑类实现”(提示:右键单击类图标就会跳出类菜单). 双击类图标可以实现同样的功能。
现在,打开Stuff 类的实现。找到 getRoom 方法的实现。正如函数所说的那样,它会返回该教员的房间号。让我们改变这个方法,在函数返回值的前面加上一个“room”前缀(这样这个方法就会返回,“room G..4.24”而不是“G..4.24”)。我们通过修改下面这一行做到这一点。
return room;改为return “room ” + room;BlueJ 完全支持 Java,所以没有什么特殊的要求关于你如何修改你的类实现。只要遵循Java 规范即可。
小结:要编辑类的源码,双击类图标
编译[ ]
改变代码之后(在你做任何其他事情之前),检查工程的全貌(主窗口)。你会发现教员的图标改变了:现在图标出现了条纹。条纹的出现意味着类文件还没有被重新编译过,自从上次修改以来。返回编辑器。
旁注:你可能正在怀疑为什么那些类图标没有条纹在工程第一次被打开的时候。这是因为那些 people 工程中发布的类都是已经被编译过的。通常情况下随 BlueJ 一起发布的工程是没有被编译过的。所以做好看到大多数类都有条纹的准备,如果你是第一次打开工程的话.
在编辑器顶端的工具条包含一些经常使用的功能按钮,其中一个是 编译.你可以使用这个按钮直接编译当前打开的类文件。现在点击 编译 按钮。如果你没有犯任何错误,那么在编辑器最下方的消息区会出现一条消息提示你这个类已经被编译完。如果你犯了一个错误导致语法出错,错误行会高亮显示,并且在消息区会有相应的错误提示。(假设你第一次进行编译是没有出错,现在试着造成一个语法错误-比如漏写分号-然后再次编译,看看会出现什么效果?)在你成功的编译完之后,关闭编辑器。
旁注:你没有必要显式的去保存一个类文件。源文件会自动保存在某些合适的时候(比如当编辑器关闭时或者类文件被编译时)。你也可以显式的保存文件如果你愿意(在编辑器的工具栏上有相应的按钮),但是这种操作真的没什么必要,除非你的系统相当不稳定,随时都有崩溃的危险,你又很担心你会丢失你的工作成果。
工程窗口的工具条上同样也有编译按钮。 这个编译操作会编译整个工程(实际上它判断 哪些类需要重新编译然后按照正确的顺序重新编译这些类)。你可以试着修改2个或多个类(这样会有 2 个或多个类的图标出现条纹),然后点击 编译 按钮,如果在被编译的几个类中出现错误,编辑器就会被打开,错误位置和错误信息会显示出来。
你可能注意到了对象槽又被清空了。旧的对象会被删除每次实现改变之后。
小结:要编译一个类,单击编辑器里编译按钮。要编译一个工程,单击工程窗口里的编译按钮
使用编译器错误帮助[ ]
一个很普遍的现象是:初学者对理解编译器错误总是有很大的困难。再次打开编辑器,在源文件里制造一个错误,然后编译。一个错误信息会出现在编辑器的消息区。在它的右端有一个问号,你可以点击它来得到更多的关于这个类型错误的信息(如下图)。
在这种情况下, 并不是所有的错误信息都有相应的帮助文档。一些帮助文档仍然需要被编写。但是还是值得一试的——许多错误已经有了相应的解释。 剩下的那些错误信息将会被 编写并包含在 BlueJ 将来的版本中。
小结:要得到编译器错误的帮助,单击错误信息旁边的问号图标。
参考来源[ ]
http://www.bluej.org/index.html
BlueJ使用手册导航 | ||||
---|---|---|---|---|
|