您好,欢迎访问三七文档
以下资料为java培训为大家整理发布:了解有关Java包、变量的概念,以及对象通过方法相互交互的方式。在Wombat对象基础知识和Wombat类基础知识这两篇文章中,您学习了关于对象、类、方法,以及语言和语法的基础知识。在初级开发人员系列的第3部分,您将学习:如何编写依赖其他Java类(或JavaAPI)的Java应用程序、什么是变量、如何使用变量,以及对象通过方法相互交互的方式。本文中,需要在计算机中安装以下软件:JavaSE软件Greenfoot本文面向对Java编程感兴趣的任何读者,无需编程经验。在开始阅读本文之前,建议您阅读并遵循Wombat对象基础知识和Wombat类基础知识中的有关说明。在Ants中查看包和变量在本教程中,通过Scenario菜单打开Ants场景,然后选择Open。应该可以看到scenarios文件夹。选择ants并单击Open,如图1所示:图1.打开Ants场景Ants场景将显示在新窗口中。如果您在画面中没有看到沙色的界面,单击场景主画面底下的CompileAll按钮。单击Run,当蚂蚁离开蚁丘寻找食物堆时,请仔细观察。当蚂蚁发现食物并运回蚁丘时,它们就创建了气味路径,或者相当于pheromone路径,随着更多的蚂蚁发现了食物的路径并返回蚁丘,气味路径变得越来越清晰。和Wombat场景一样,可以在场景中放置更多的蚂蚁或蚁丘。在ants场景中单击Run,应该能看到如图2所示的内容。图2.运行Ants场景导入声明和包右键单击Actor类下方的Ant对象,并选择OpenEditor。注意代码的第一行:importgreenfoot.*;//(World,Actor,GreenfootImage,andGreenfoot)importjava.util.Random;importjava.util.List;importjava.util.Collection;importjava.util.Iterator;这些语句称为导入声明。使用导入声明,Java应用程序可以使用JavaAPI中已有的类、其他开发人员或自己创建的类。第一个声明表明此应用程在greenfootpackage中。Java类通过包组织在一起。您可以使用很多包,这就如同类可以处理数学问题、可在Collection对象中组织数据和可用于过程的迭代或循环一样。换句话说,包通过函数对类进行分类。基础类在java.lang包中,读取和写入类(输入和输出)在java.io包中,等等。必须在类的第一行声明包。JavaAPI库非常庞大,其中提供了许多包供您使用。并且,您需要自己熟悉有哪些类可用。为此,最好的方式是花些时间去阅读API文档。在本文中,查阅java.utilpackage。在该页面的左侧列表中,请注意Random、List、Collection和Iterator类。单击这些类的链接并阅读有关内容。看看您能否指出它们在此应用程序中所完成的功能。注意为每个类所列出的方法,看看您能否在AntsActorClasses的代码中找出那些使用过的方法。您也可以在Java教程中阅读更多有关这些类的信息。变量和字段随后,Ant类中将出现publicclassAntextendsActor行。从前面的文章可知,这是类声明语句,它告诉您,此类名称为Ant,并且是从Actor类继承下来的。随后,你将在类中看到常规的语句,它在代码行之间用/**和*/符号标记。用/**和*/标记的语句是开发人员插入的注释,这样,就能更容易理解代码。必须用/**和*/或//符号标记注释,这样,编译器就不会尝试将这些语句读取为Java代码。请看以下代码块,阅读注释,该注释对代码描述的功能作出说明:/**Randomnumbergenerator*/privatestaticfinalRandomrandomizer=AntWorld.getRandomizer();/**Everyhowmanystepscanweplaceapheromonedrop?*/privatestaticfinalintMAX_PH_LEVEL=18;/**Howlongdowekeepdirectionafterfindingpheromones?*/privatestaticfinalintPH_TIME=30;/**Thespeedatwhichtheantmoves--inpixelsperupdate*/privatestaticfinalintSPEED=3;//CurrentmovementprivateintdeltaX=0;privateintdeltaY=0;/**Locationofhomeanthill*/privateAntHillhomeHill;/**Indicatewhetherwehaveanyfoodwithus.*/privatebooleancarryingFood=false;/**Howmuchpheromonedowehaverightnow?*/privateintpheromoneLevel=MAX_PH_LEVEL;/**Howwelldowerememberthelastpheromone--largernumber:morerecent.*/privateintfoundLastPheromone=0;所有的代码行都使用变量,并且这些特殊的变量在此Ant类中定义了field。字段声明由三个部分构成,依次是:零个或多个修饰符,例如public或private字段类型字段名称但在理解字段之前,需要了解更多有关变量的内容。变量是什么?在程序设计中,variable需要被赋值,该值要么改变,要么不改变。因为它们表示的值经常发生改变,故称为变量。在上面的代码中,变量SPEED被赋值为3。赋给变量的值写在等号的右边,变量写在左边。这些特殊的变量定义了对象的状态。这就如同现实世界中的对象,现实中,球的状态要么是红色的,要么是直径为3英尺。您也许会将变量dog的状态赋值为睡着或醒的。对Ant类而言,所指的状态为:每只蚂蚁在某个方向的移动速度为3个像素。蚂蚁用Pheromones气味寻找食物,并提示其他蚂蚁哪里能收集食物。在此应用程序中,Ant类定义了有关信息素的层次信息,以及蚂蚁在碰面时通过字段变量如何操作。例如,MAX_PH_LEVEL字段定义了滴下一个信息素时,蚂蚁能移动的最大步数;foundLastPheromone定义:通过使用高或低的编号,蚂蚁如何适当地记忆信息素。通常,将变量的初始值设为0,或为空。然后,随着用户运行程序,这些值将发生改变。变量类型您也许已经注意到,在该类和其他类的变量前面的关键字private、static和final。这些关键字定义了变量的类型。无关键字的变量称作instancevariables,该变量的值与类中的每个instance值都不相同——对每个对象而言,也是这样。另一方面,staticvariable说明即使对类进行了多次实例化,或者创建了实例,此变量仅存在一个副本。Localvariables是那些仅在一个方法或代码块中使用的变量,这在本文的前面已经提到了。Accessmodifiers声明变量要么是public类型,要么是private类型。在Food中,所有的变量都被声明为private类型,这说明仅能在Food类中访问这些变量。如果变量被声明为public类型,则可以从所有类中访问该变量。Ant对象通过方法与Food对象进行交互现在已经声明了变量,接下来就可以在方法中使用变量,为场景做些工作。在Ant类中向下滚动,浏览已定义的方法。您将注意到,现在,已经在方法中使用了类开头所设置的变量。还可以看到,新变量可能仅用于某个特定的方法。前面已经提到,这些变量称为localvariables。蚂蚁场景中的点用于收集食物并将其运回蚁丘。注意Ant类中的checkFood方法:publicvoidcheckFood(){Foodfood=(Food)getOneIntersectingObject(Food.class);if(food!=null){takeFood(food);}}在此方法中,声明了一个Food型变量food。在Java编程中,类名通常用大写字母表示,变量名用小写字母表示。通过方法,ants对象就能与food对象交互,如图3.所示:图3.Ants与Food文件看一下Food类。在Ants场景中,右键单击ActorClasses下面的Food类列表,选择OpenEditor。实际上,food类只是放在那儿,并不起什么作用,只是通过自身的变量定义Food。privatestaticfinalintSIZE=30;privatestaticfinalintHALFSIZE=SIZE/2;privatestaticfinalColorcolor1=newColor(160,200,60);privatestaticfinalColorcolor2=newColor(80,100,30);privatestaticfinalColorcolor3=newColor(10,50,0);privateintcrumbs=100;注意:这些字段建立了food的size和color。通过Color类定义Color,说明每个color都是一个对象,确切的color是通过RGBcolormodel定义的。用整数(int)创建food堆的size,表示某个特定color的像素数目。所有的变量都是private类型,说明它们仅能在此类中使用,同时它们又是static类型,因此,即使对此类进行多次实例化,也仅存在一个副本。向下滚动Color类,注意此类中的方法。场景运行后,蚂蚁发现并搬运食物,食物的外观必须发生变化。为创建蚂蚁和食物堆之间的交互作用,takeSome方法定义搬运食物的数量,并调用updateImage方法,这样,食物堆的外观就会发生变化,同时我们也能看到这些变化。randomCoord方法在食物堆图像上随机撒播彩色点,越来越多的彩色点向中心聚集。此方法在食物堆中产生随机位置(放置小绿点表示食物个体小块)。这是基于随机数的Gaussian分布函数(nextGaussian),该方法使数字与0逼近的可靠性更高(也称作“常态分布”或“正态分布”)。结果,食物小块并不是均匀地分布在矩形画面表面,很可能是向中间聚集,这样就形成了更多的堆。结束语在本文中,您学习了包如何组织类,以及如何在类的头部包含import语句。还学习了有关变量及其类型,以及对象如何通过方法与其他类交互的内容。在Greenfoot中打开其他场景,了解了每个场景对象的类代码。目睹了什么是变量定义、什么是方法之间的交互,以及通过查看代码学习了其他一些内容。尝试并改变其中的一些方法,看看您能否改变对象的行为。您也可以在Internet上查看有关Greenfoot更多场景的信息,有些场景非常复杂且精致,不妨把它们下载下来。
本文标题:Ants基础知识
链接地址:https://www.777doc.com/doc-2901468 .html