你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

intellij idea 16 用IntelliJ IDEA教孩子学Java,12岁以上适用

发布时间:2026-04-20

浏览次数:0

今年较前时候,我收到了一封出乎意外的电子邮件,它来自于No出版社,问我是不是有心思写一本面向孩子的Java编程书籍?我紧接着再问了一回,“你们乐意彩印不?”,意想不到的是,他们立刻就应允了,而且还给我展示了好多他们出版的教导孩子编程的书籍,那可是其他语种的。时代已然改变啦……长话简而言之,我接纳了。一年很快就要过去,这本书将会在2015年春季进行付印。

用Java来教孩子编程好吗?

为了把这个问题回答出来,我们得先给“孩子”这个词下个定义。对于年龄在12岁以下的孩子而言,我觉得Java当作第一门编程语言有点太过复杂了。年龄更低一些的的孩子,刚开始的时候拿来搭建可视化程序,还是用一些写好的程序模块比较好。MIT创建了一个东西,对于8岁大的孩子来讲,那是一个能很好激发编程兴趣的工具。10岁的小孩可以再进一步,通过开始学习真正运用Java去编程。

然而我觉得,任何超过12岁的小孩,只要是对编程存有兴趣的,那就能够庄重认真地去开展Java编程的学习了,而且还能够运用专业的工具进行学习。在先前给孩子写的书籍内部,我选用作为IDE用的,可是在 这本全新的书籍里面,我挑选了IDEA社区版本,它同样是免费的。

教育成年人与教育小孩子学习Java的差别在于,小朋友们针对编写GUI程序的反应更为热烈,并且Java在这方面也具备很强的能力。我所表达的是,Swing框架已然过时,若想凭借Swing编写出较为出色的程序,需要非常专业的知识。

就能提供丰富多样的工具,而且极其优雅地将界面与应用逻辑分离开来。它自身带有"Scene",这是一个可视化的GUI设计工具,所这个工具可以生成用FXML描述的GUI ;FXML属于一种基于XML的语言,借助声明的手段能够创建GUI。不过无需担忧,孩子无需自己去编写FXML——他们仅需把UI控件拖拽到画布上即可,如此一来,Scene 便会生成FXML。

少儿Java教育家

倘若讲12年前的孩童对于编程并非那般感兴趣,那么现今好多孩子已然颇为喜爱编程了。时代发生了变化,所以,在世界各地都存在编程爱好者耗费时间与精力给孩子讲解编程。我们要向其致以敬意,他创立了运动,运用了一种具有创造性的方式去教孩子编程。

这项运动起始最早是在比利时,然而现今诸多国家都加了进来。在美国,旧金山分会的负责人是Arun Gupta,并且Matt负责运营丹佛分会。要是处于曼哈顿的公司乐意给孩子们开展活动提供场地,那我已准备好奉献我的时间,于纽约去创建一个分支机构。

我要为Chin送去掌声,他来自某地,他时常背着一个装满可编程设备的袋子在全球四处走动。今年早些时候,他开展啦一场演讲,名字叫“玛丽有个小小的表达式”,我参与了这场演讲,在演讲内,他借助演示复杂游戏的方式解析了Java,译者注,此英文名“Mary Had a ▲”,借用啦著名英语儿歌“Mary Had a Lamb”,lamb和词形相近。

今年的这个夏天当中,我置身参与了一场在希腊举办举行的“非会议”,这里要说明一下,它是一种和传统式会议完全不同的全新形式,在这种会议里,会议内容是由参与其中者依据自身情况自行制定的,并且它主张进行开放式的讨论交流。其他一同与会的人员都带着笔记本电脑前来,然而他却带来了两打硬件开发套件,随后他举行了一场研讨会,在这场研讨会上,孩子们动用Java编写出了一个机器人,这个机器人能够跳出希腊民间舞蹈那样的舞步。

存在于世界各地的其他若干好心人,正在开展给孩子们普及Java的行为,对此我表肯定。Java语言诞生至今已有20年时间,却正进行着越变越年轻这样一种变化。

本书节选

感激有如此态势可能性给InfoQ的读者展现本人即将推出的典籍“Java for Kids”里的两段摘取部分,于这本典籍之内我运用了IDEA社区版本,制造出来的免费且好用的IDE,第一段摘取部分是有关类以及对象的简易阐释,第二段源自于Tic - Tac - Toe译注:一种棋类游戏章节,讲授小孩之际,程序的可视化程度越高便越优质,这般便是为何我于总共12章中的5章都加以运用了。需要编写一个计算器的读者们,还要编写两个游戏,一个是Tic - Tac - Toe,另一个是Ping - Pong。

本书节选1:类和对象

于现实世界里,你会瞧见并运用各类对象,每个对象皆归属于某一“种类”,诸如玩具、食物、动物、电子产品等之类。于Java之中,我们不称一种对象,而是谓之一类对象。类仿若一个对象的蓝图。你即将编写的所有程序皆由各类组成。

各类的数据类型,被Java所定义,部分较为简单,例如int,其代表着整数,部分略微复杂,这般的它们便是类,比如说类,借助它能够用于在屏幕之上打印文字,还能够用来退出程序,并在清理 的情况下占据电脑的内存。

当你安装了Java之后,有数千个Java类被 到你的计算机里头。你所拥有的Java程序当中含有的类,也极有可能是代表着源自真实世界的对象。倘若讲类是一种数据类型的话,那么对象就意味着是一种特殊的类型。比如说,你瞅见街上有十只狗,它们每一只都代表着Dog这个类。

程序员于着手编写程序之前,得先判定所需用到的各类,每一个类所应创建对象的数量。举例而言,在游戏应用里面他们能够去定义类,凭借此来创建两个对象。

在程序员彼此进行交流之际,他们有可能会讲“针对类开展某些操作”或者“借助对象去做某些操作”,我们得去区分类以及对象这两个词汇所具有的不一样的含义。

咱们瞧瞧Java类究竟是以怎样的方式构成的,最基础的那种类说不定啥都不涵盖,瞅瞅下面这个类声明:

class {}

这是个类,它是空洞的,不带有任何信息,也干不了任何事情,因为两个大括号中间没有任何代码。从Java语法的角度来讲,这个类是合法的,计算机不会报错,因为class是一个有效的关键字,紧接着是名字,大括号要成对出现。但是要是我们的程序打算干点什么,我们就得定义有实际意义的类。所以我们得给类加装方法和属性:

针对类,我们填充其内容。此类具备一些方法,这些方法能告知我们该类对象可实施的行为,涵盖开始游戏、停止游戏、保存分数以及要求上点赞等。该类还拥有一些属性,此属性也称作域,包括颜色、价格以及其他方面。代表类的一个对象呈现出这样的状态:

class VideoGame { String color; int price; void start  { // 开始游戏的代码放在这里 } void stop  { // 停止游戏的代码放在这里 } void saveScore(String playerName, int score) { // 保存分数的代码放在这里 } }

这个类存在着两个属性,一个是color,还有一个是price。color属性具备特定类型,此类型专门用以保存文本。price属于int型,其目的在于保存整数。该类拥有三个方法,分别是start、 stop 以及。这些均为我们的视频游戏能够采取的动作。当下,这些方法仅仅有着以双斜杠//开头的一行字。

我们并不能够去打造出一款实实在在的视频游戏,这是由于我们才刚刚着手学习编程,然而,在本书后续部分,我们将会着手开发Tic-Tac-Toe以及Ping-Pong游戏。

然而,难道你未曾发觉所有游戏是存在共同点的吗?对于每个游戏而言,都需要具备一种用以开启、终止或者保存分数的方式。当你以面向对象的形式去编写一个程序时,就要着手思索怎样让类所拥有的属性以及方法维持数量是绝对最少的。而后,你能够以第一个类为基础去增添更多特别的功能——于本章节后面的部分你会学到有关继承的内容。这便是类仅仅拥有视频游戏所共有的属性和方法的缘故所在。

图1:视频游戏的对象

类还是对象

在这一节当中,我会对你展示,怎样依据类去创建对象实例,并且会向你讲解继承的概念。

为了能够复用你或者其他人已然写好的代码,你能够基于一个类去创建另外一个类intellij idea 16,它会继承先前那个类的所有属性以及方法。继承别的类而创建的类被称作“子类”,被继承的类则被称作“父类”。下面的代码呈现出了继承类的新类。

class PlayStation4 extends VideoGame{ String hardDiskSize; // 其他属性和方法可以在这里声明 // 方法shareOnFacebooks检查用户是否已经登录了 // 如果没有,它会显示一个窗口,带有以下信息 // “在分享你的分数之前请先登录Facebook” void shareOnFacebook{ // 在Facebook上分享的代码在这里 System.out.println("Hey, Facebook, I got PlayStation4 with " + hardDiskSize); } void shareOnTwitter{ // 在Twitter上分享的代码在这里 System.out.println("Hey, Twitter, I got PlayStation4 with " + hardDiskSize); } }

语句,表明类属于类的子类,我们还能够讲类继承了类,抑或是说“扩展”了类,这同样意味着子类,既能运用父类里定义下来的属性,又能够运用父类里定义好的所有方法,并且还能对其进行扩展,我会在书的后面部分作出解释。

若注意类并未设定属性price以及color,并且也没有定义方法start、stop,即便如此,该类的对象依旧能够运用所有这些属性与方法。它们是经由类继承而来的,这些代码无需被拷贝,亦无需粘贴至类中。

在我们创建一个对象的实例之举中,我们实际之所进行的作为乃是源自某个类的声明,于计算机内存里创建出一个对象,举例而言,下面之jects程序仰仗new运算符创建了两个类的实例。

它声明了两个型的变量,一个是和,另一个也是和,每个变量都指向了内存中的一个独立对象,要注意这些对象的属性有着不同的值,一个是500GB,另一个是1TB,这个程序对两个对象中的第一个调用了方法,对另一个对象也就是第二个调用了。

public class CreatePlayStation4Objects { public static void main(String[] args) { // 创建一个PlayStation4类的实例 PlayStation4 firstPlayStation = new PlayStation4; firstPlayStation.hardDiskSize = "500GB"; // 对第一个实例调用shareOnFacebook方法 firstPlayStation.shareOnFacebook; // 创建另一个PlayStation4类的实例 PlayStation4 secondPlayStation = new PlayStation4; secondPlayStation.hardDiskSize = "1TB"; // 对第二个实例调用shareOnFacebook方法 secondPlayStation.shareOnTwitter; }

运行jects会打印以下内容:

Hey, Facebook, I got PlayStation4 with 500GB Hey, Twitter, I got PlayStation4 with 1TB

设若有一个游戏公司打算制造一万个这般的游戏,那么程序员能够讲他们构筑了一万个的实例。游戏公司跟具实际意义的一个游戏之间的关联,就近似于Java类同其在内存当中的实例的关联。在现实生活里游戏公司打造一个名副其实的游戏,和Java编程领域中创立对象实例状况相仿。只是每一个实例会存有某些差异,像此例中的内部磁盘大小。

图2:一个类,两个实例

程序通常是先创建 Java 类的实体示例,之后才能够运用其属性还有方法。游戏公司的情形也是如此,他们会借助同一份原本产出几千个游戏副本。就算这些副本所代表的是同一个类,其属性依旧会存在差异,有些呈现黑色,而另外一些是银色。部分拥有 500GB 硬盘,还有些具备1TB。

本书节选2:改变样式和使用效果

此处是第十章的节选部分,当读者读到这个地方的时候,已经有了相应的基础,写过一个登录窗口,还写过一个计算器,并且清楚怎样在界面之上应用CSS样式,Tic - Tac - Toe游戏的基本功能也已然实现,然而呀,但要是能够让制胜的三颗棋子清晰地明摆在眼前那就会好了(译者注:Tic - Tac - Toe以三子在一直线上为胜)。

加亮制胜棋子

运行期间,那制胜棋子的样子应当能够动态地去改变。首先,得给CSS文件添上一个样式去呈现那制胜的X - O棋子。接着,类能够针对棋子调用方法,以此来判定制胜的棋子该采用哪种样式。

我期望改动作为决胜关键的棋子的背景,然而此次我不想采用单一颜色了,而是打算使用多种连续且逐渐变化的颜色。身处计算机图形领域里,所谓渐变色具体是指着得运用混合而成的色彩去充斥一个区域哟,并且相邻的那些颜色之间呈现如同流水般平滑移动、逐渐变化的状态。颜色渐变存在着呈直线蔓延式的和基于中心向四周扩散式的这两种类型,这整篇来自维基百科上边的文章是有着这两种不同类型渐变的示例的。

放射状渐变被运用在我们的游戏里,两种或更多种颜色能够用来构成渐变色,给制胜棋子用三种颜色,棋子的背景色从白色开始转变,先变成淡黄色,继而转为草绿色,棋子上的文字标签我们采用红色。

可以调用,要用它来动态改变GUI组件的样式,还能够指定颜色作为相应的参数,就比如:

myButton.setStyle("-fx-text-fill: red;");

然而,于你那Java程序之中将CSS规则写死可不是个妙策。要是你打算变更样式该如何是好呢(好比把颜色从红色转变为粉色)?你可不愿翻遍所有Java文件去寻觅所有运用此样式之处。并且,更改嵌入于代码里的样式,会致使程序不得不重新编译,哪有人会为了一桩简易修改而这般行事!故而将样式定义置于外部的CSS文件里会较为妥当,改动起来便会较为灵活。

到此为止,我们已然运用了CSS类型选择器,以对指定部件的样式作出改变。然而intellij idea 16,CSS准许你去限定一种样式,并且赋予其一个名称,如此一来,并非只有特定的组件类别能够运用它,各类组件均可借由指定该名称予以使用。于CSS里,此种样式称作类选取器(class),我们要给名为.css的文件添加一个被叫做.-的类选择器。

.winning-square { -fx-text-fill: red; -fx-background-color: radial-gradient( radius 100%, white, lightyellow, lawngreen); }

这里的样式选择器,包含了两条样式规则,一条是要令按钮的颜色被设置成红色,另一条是要将按钮的背景色设置为我们的放射状渐变色。我们的Java程序必须获取按钮现有样式的引用,接着再添加一个.-,此就会覆盖按钮原本的文字以及背景颜色。方法o看起来这般:

private void highlightWinningCombo(Button first, Button second, Button third){ first.getStyleClass.add("winning-square"); second.getStyleClass.add("winning-square"); third.getStyleClass.add("winning-square"); }

类添加完和o方法之后,尝试玩一玩这个游戏,使游戏胜利的棋子呈现出如下模样这样子:

图3:我们赢了!

涵盖了好些视觉方面呈现出的效果,还有各种各样变换着的动画,这些能够使得你所面对的界面变得更具趣味意味。

需运用这些效果以及动画,你得以于.scene.与.包里开展相应的挑选。我会为你演示一回怎样在我们的制胜棋子之上运用淡出的变换效果。每个制胜棋子持续不断地淡出,随后又恢复至初始状态。我们要给类增添一个方法。

private void applyFadeTransition(Button winningButton) { FadeTransition ft = new FadeTransition(Duration.millis(1000), winningButton); ft.setFromValue(1.0); ft.setToValue(0.1); ft.setCycleCount(10); ft.setAutoReverse(true); ft.play; }

这段代码构建出了一个动画类的对象实例,此动画会有着持续达1000毫秒的时长,而1000毫秒等同于1秒,之后将这个动画赋予给了制胜棋子,接着它又对淡出参数做了设定,把棋子由透明度为1改变到了0.1,其中0.0表示的是达到完全透明。

将样式数量设定为10意味着动画将要播放10次,由于调用了(true),此动画会于第一个周期内正向播放,在第二个周期里反向播放,这般循环不止,play方法会启动该动画,给o增添以下三行代码,这个动画便会在组件上播放。

applyFadeTransition(first); applyFadeTransition(second); applyFadeTransition(third);

下面的截屏告诉你动画播放结束后的样子。

图4:淡出的制胜棋子

把这张图拿来,与之前的那一张,相互比较一下。或者去运行书中所写的代码,瞧瞧动画呈现出来会是怎样的一种样子,如此便会更好一些了。

小Q讲,要是各位对于教导孩子进行编程存有自身的见解,欢迎于评论区留言告知我们。我决然不会向你透露在留言区刷脸混个眼熟是存在益处的!

如有侵权请联系删除!

13262879759

微信二维码