课程思政教案Java程序设计教案Word文档格式.doc
《课程思政教案Java程序设计教案Word文档格式.doc》由会员分享,可在线阅读,更多相关《课程思政教案Java程序设计教案Word文档格式.doc(45页珍藏版)》请在冰点文库上搜索。
教学目标
(含思政育人目标)
1、要求学生了解Java程序语言概述;
2、要求学生掌握Eclipse工具的使用,并能独立搭建Java开发环境;
3、要求学生掌握Java程序的开发,并动手开发HelloWorld程序;
4、了解计算机软件从业人员应当具备的职业道德守则,为进军软件行业做准备;
5、理解并敬重工匠精神,在学习中努力发扬工匠精神;
6、了解Java语言强大的生态体系,与华为孟晚舟事件相联系。
7、新时代与个人成才的关系;
8、通过软件行业发展前景,引发学生对未来的职业愿景,激发学生对社会主义核心价值观的认同感。
教学重点
难点
1、教学重点:
搭建Java开发环境;
2、教学难点:
搭建Java开发环境。
教学过程
设计
多媒体教学2学时,实验课教学2学时
作业布置
及辅导
1、见教材第1章课后习题
课后小结
通过本项目的学习,让学生对Java的发展历史有一定了解,并对Java程序的结构和编程风格与惯例有一个初步的认知,让学生学会如何安装与搭建Java开发平台,并能简单使用该开发平台。
l思政元素的融入(德育点)
1、新时代与个人成才的关系;
2、通过软件行业发展前景,引发学生对未来的职业愿景,激发学生对社会主义核心价值观的认同感。
l课程思政教学素材
1、世界上十大黑客的经历—引出:
计算机软件从业人员应当具备的职业道德规范;
2、Java的发展历程—引出:
工匠精神;
3、美国的芯片垄断—引出:
民族认同感。
4、工匠精神,敬业求精
工匠精神是一种职业精神,它是职业道德、职业能力、职业品质的体现,是从业者的一种职业价值取向和行为表现。
应告诉学生在学好程序设计技术之后,走上工作岗位会成为程序员、软件系统运维人员、软件测试员、售前售后服务人员等。
在这些职位岗位上,要发挥工匠精神,精益求精地将程序开发、系统运维、程序测试、需求分析及技术问题处理等工作内容完成好,保证软件系统运行时正确、稳定,保证客户的需求被精确采集和纳入软件开发计划,保证软件运行时遇到问题能被及时解决。
引导学生在学习时,将知识夯实、精技强能,方能在今后工作中本领过硬,不出纰漏,工作成果令用户满意。
引导学生认识到,作为职业人,其专注、敬业、责任担当对完成好本职工作,进而促进软件行业整体的高水平、优质化发展具有重要意义。
l知识导入
1.1Java语言的历史
1.2Java语言的特点
1.3Java程序及其实现
1.3.1JavaApplication程序举例
1.3.2JavaApplication程序的结构特点
一、Java语言的历史
Java面世:
1995年3月
二、Java语言的特点
1.简单(Simple)
2.面向对象(Objectoriented)
3.解释性(Interpreted)
4.平台独立和可移植(Architectureneutral&
Portable)
5.鲁棒和安全(Robust&
Secure)
6.多线程(Multithreaded)
7.分布式(Distributed)
8.高性能(Highperformance)
9.动态(Dynamic)
三、Java编程语言的特点
1. 简单(Simple)
n 简单易学
n 不存在指针、单一继承、内存空间自动回收
2. 面向对象(Objectoriented)
n 类和对象à
数据和方法的封装
n 封装、继承、多态性
n 注重于数据和操作数据的方法,而不是流
3. 解释性(Interpreted)
n Java编译器生成字节码,Java解释器执行字节码
n 链接过程简单,仅仅将新的类装载(load)入运行环境
5. 鲁棒/健壮(Robust)和安全(Secure)
n 取消了指针的不安全性,增强了程序的健壮性
n 内存管理简单,“new”构造对象,对象释放(automaticgarbagecollection)
n 可靠的语言:
compile-timechecking和run-timechecking
n 网络环境的应用不会产生恶意行为,为Java程序构造一个个(Sandbox,具有安全策略的限制),提高了安全性
6. 多线程(Multithreaded)
n 例:
浏览器应用中,播听音乐/拖动页面/后台下载页面
n 线程类:
java.lang.Thread/Runnable/ThreadGroup等
n 原语支持:
synchronized、wait()、notify()
7. 分布式(Distributed)
n 支持网络应用,.*
n URL类
n Socket类、ServerSocket类
n DatagramSocket类、DatagramPacket类
8. 高性能(Highperformance)
n 解释性的语言,没有C语言快
n “Just-In-Time”JIT编译器,在运行时将Java字节码转变为机器码
n JavaHotSpotCompilers
9. 动态(Dynamic)
n Java语言在执行的链接(link)阶段是动态的
n class类仅在需要时被链接
n 被链接的代码模块可以有不同的来源,从本地或从网络
四、平台(Platform)
1. 程序运行的硬件和软件环境
2. 操作系统平台-Windows2000、Linux、Solaris、MacOS
3. 操作系统与硬件的结合
4. Java虚拟机(JavaVirtualMachine,JavaVM)
n Java解释器-Java开发工具或可运行applet的Web浏览器
5. Java应用编程接口(JavaApplicationProgrammingInterface,JavaAPI)
五、Java运行平台(Platform)
1. J2SEPlatform(Java2StandardEdition)
n JavaRuntimeEnvironment(JRE)-Java虚拟机、库函数、运行Java应用程序和Applet所必须文件
n Java2SDK(DevelopmentKit)-JRE的超集,包含编译器和调试器等用于程序开发的文件
六、Java平台的发展
JavaDevelopmentKit
1.0.2
1.1.1à
1.1.6à
1.1.7à
1.1.8
1.2.1
Java2SDK
1.2.2
1.3.0à
1.3.1
1.4.0à
1.4.1à
1.4.2à
1.5.0
Java平台的三个版本(1999.6):
J2SE/J2EE/J2ME
2.1JavaApplication程序的实现
2.1.1编辑Java源程序
2.1.2编译Java源程序
2.1.3运行Java的字节码文件
2.2JavaApplication程序的不同界面输出
一、Java程序的种类
1.Java小应用程序(JavaApplet)
n在Web浏览器中运行(内嵌Java虚拟机)
n特定标记
<
APPLETCODE="
HelloWorld.class"
WIDTH=150HEIGHT=25>
<
/APPLET>
2.Java应用程序(JavaApplication)
n独立的Java程序
n程序入口方法:
publicstaticvoidmain(String[]args){…}
nJavaScript
n嵌入在HTML文件中的脚本语言
scriptlanguage=javascript>
…<
/script>
nNetscape引入javascript
nJava源程序-文件扩展名为“.java”
nJava字节码程序-文件扩展名为“.class”
/**
*Exam1_1class实现一个应用
*将特定的字符串显示到标准输出
*/
publicclassExam1_1{
publicstaticvoidmain(String[]args){
System.out.println(“ThisisaJavaApplicationProgram."
);
}
}
n定义类文件
1.关键词public-修饰符
2.关键字class-表示要定义一个类(模板),包含数据变量和方法
3.关键字import-表示引入程序外部定义的类
/**
*Exam1_1class实现一个应用
*将特定的字符串显示到标准输出
*/
importjava.lang.System;
publicclassHelloWorld1{
publicstaticvoidmain(String[]args){
System.out.println(“ThisisaJavaApplicationProgram.”);
}
}
3.类名称与Java源程序名一致
classMyClass{
...
所保存的文件为:
MyClass.java
注意:
大小写敏感
n注解方式(Comments)
1./**~~~*/-文档注解
2./*~~~*/-程序内的任意位置
3.//-对本行注解
*Exam1_1class实现一个应用
*将特定的字符串显示到标注输出
*/
publicclassExam1_1{
publicstaticvoidmain(String[]args){
System.out.println(“ThisisaJavaApplicationProgram."
}
}
二、书写规范
1.花括号对“{}”-类,方法
2.语句分号“;
”结尾
3.对齐和缩进
4.区分大小写
*将特定的字符串显示到标准输出
publicclassExam1_1{
publicstaticvoidmain(String[]args){
System.out.println(“ThisisaJavaApplicationProgram."
}
}
教案首页授课人:
周辉奎编号:
2
第2周到第3周
项目2:
数据类型与运算符
本项目将重点讲解什么是标识符、关键字、数据类型、运算符,这对进一步学习Java开发很有帮助,希望同学们在这个项目中打好基础。
8
1、要求学生了解什么是数据类型;
2、要求学生掌握如何使用常量和变量;
3、要求学生掌握常见的运算符;
4、树立正确的技能观,努力提高自己的职业技能,为社会和人民造福,绝不能利用自己的技能去做违法犯罪之事;
5、培养学生的软件工匠精神,在潜移默化中培育社会主义核心价值观,提高综合职业素养,树立社会主义职业精神;
6、学习机房上课守则,要求同学们遵守学校的各项规章制度,强化制度约束,学会责任担当;
7、理解事物的联系是普遍存在的,引导学生用类比的方法进行知识的迁移。
如何使用数据类型;
运算符的使用。
多媒体教学6学时,实验课教学6学时
1、见教材第2章课后习题
通过本项目的学习,让学生对Java基本知识开发有一个初步的认知,让学生灵活学会不同的数据类型和运算符。
1、树立正确的技能观,努力提高自己的职业技能,为社会和人民造福,绝不能利用自己的技能去做违法犯罪之事;
2、培养学生的软件工匠精神,在潜移默化中培育社会主义核心价值观,提高综合职业素养,树立社会主义职业精神。
1、通过对学院往届学生因不遵守校规,严重违反学校制度而被开除的案例—引出:
制度约束,成年人要学会为自己的行为负责;
2、通过与前续课程C语言程序设计的对比学习—引出:
知识迁移的学习方法。
3、职业素养,行为合规
职业素养是人类在社会活动中需要遵守的行为规范。
职业道德、职业思想、职业行为习惯是职业素养中最根基的部分。
引导学生在学习时注意程序的书写格式、变量与方法的命名方式、合理添加注释、合理规划程序工程文件,这些都是合格的软件开发从业人员的基本素质。
引导学生注重职业道德,尊重他人的知识产权。
平时未经同学允许,不随意拷贝他人的程序成果;
工作后,不偷窥和复制同事的开发成果,不盗取公司的研发成果。
使学生明确:
职业素养是一个职业人的立身之本。
在学生时代,就应该不断提升个人修养和思想道德水平,着力锻造良好的职业素养。
l数据类型知识导入
2.2数据类型
2.2.1基本数据类型
2.2.2复合数据类型
2.2.3类型转换
数据类型
n基本数据类型
n数字(number)
n整型(integers)
1.字节整数(byte,8bits):
-128~127,0
2.短整数(short,16bits):
-32768~32767,0
3.整数(int,32bits):
-2147483648~2147483647,0
4.长整数(long,64bits):
……,0L
n实型(realnumbers):
浮点型(有效位数不同)
1.单精度(float,32bits):
……,0.0F
2.双精度(double,64bits):
……,0.0D
n字符(char,16-bitUnicode字符):
\u0000~\uffff
n布尔(boolean):
true,false
n复合数据类型
n数组(Array),类(class),接口(interface)
类型转换(Casting)
n将一种类型的数据转换为另一种类型的数据
n操作数转换为同种类型,然后运算
n整数型、实数型和字符型
n表达形式:
(类型)操作数
n应用场合
n二元运算符的二个操作数类型不同
n表达式值的类型与变量的类型不同
n两种方法
n隐型类型转换:
自动类型转换(系统完成)
n显型类型转换:
强制类型转换
l运算符知识导入
一、教学目标(含思政育人目标)
掌握运算符的使用语法;
二、教学内容分析
(一)重点
基本语法
(二)难点
几个较难的运算符使用方法
三、教学手段与方法
计算机辅助教学,以讲授、讨论、练习为主要教学方法。
四、教学过程
1.导入:
学生自行回忆并讲述C、C++或VB等语言的运算符;
2.运算符概述
Java的运算符和C、C++基本一样,其功能有二:
(1)根据自己的运算对象生成一个值;
(2)改变运算对象的值(SideEffect)。
除了=,==,!
=三个运算符能操作所有对象以外,其它运算符都只能操作“主类型”(Primitives)对象,而String类支持+和+=运算。
运算符有优先级,诸如先乘除后加减,但我们不必过多考虑,只要合适地使用括号即可;
3.赋值运算
即=号运算,形如“左值”=“右值”;
其功能是把右值复制到左值,其中右值可以是任何能产生一个值的东西,如常数,变量,表达式。
而左值必须是一个明确的、已命名的变量,意即有一个物理性的空间来保存右值。
对主数据类型(或基本型)的赋值简单而直接,若A=B,即把B处的内容复制到A,之后如果A被修改,B的值不会变化,B被修改,A的值也不会变化;
可用一段程序来说明如Ch3:
value.java.
但是,如果要对一个对象赋值,情况则要复杂得多,因为对一个对象进行操作时,真正操作的是它的引用,即如果把一个对象到另一个对象赋值,实际是将引用从一个地方复制到另一个地方,如C=D,则C和D最终最指向最初D指向的那个对象,可用示例程序Ch3:
Assignment.java说明。
示例中,通过n1=n2赋值后,改变n1的同时,n2也被改变,因为为它们包含了相同的引用,指向相同的对象。
这种现象叫“别名”,是Java操作对象的一种基本方式。
如果要保持两个对象的独立性,只需把n1=n2替换为n1.i=n2.i即可,但这违背了OOP设计准则。
将一个对象传递到方法内部时,也会出现别名现象,如Ch3:
PassObject.java所示。
4.算术运算
包括加(+),减(-),乘(*),除(/)和模(%)五种算术运算,同时还支持运算符与赋值同时进行的方式,如x+=4相当于x=x+4.算术运算的示例如Ch3:
MathOps.java.
示例程序中,使用System.out.println()方法及其继承方法实现了打印输出,使用Random()方法产生一个随机数,并使用nextInt(),nextLong(),nextFloat(),nextDouble()等方法分别产生不同类型的随机数。
此外,Java中还可能出现形如x=-a,x=a*-b这样的运算式,此时一定要注意优先级,最好使用括号使其具有更好的可读性。
5.自增、自减运算
Java中的自增和自减运算与C、C++一样,都有前缀版和后缀版,如++a,a++.其区别是++a先执行运算,后生成值,而a++是先生成值,后执行运算;
如示例Ch3:
AutoInc.java.
与上例相同,本例中使用
prt()方法重写了System.out.println(),由程序结果可知,当执行++i或—i之后,i的内容发生了变化,而i—或i++,i的值在执行运算前已经有了,即这一运算具有“副作用”。
6.关系运算
关系运算评价运算对象之间的关系,结果是一个Boolean值。
其中,==和!
=两个运算适用于所有内容数据类型,但它们的意义较难理解,可用程序Ch3:
Equivalence.java说明。
示例中,两个对象的内容相同,但由于n1和n2是两个引用,所以结果与一般想象的正好相反:
==和!
=比较的正好就是对象引用而不是对象内容。
如果要比较两个对象的实际内容是否相同,应使用所有对象都适用的特殊方法equals(),但这个方法不适用于主类型(主类型直接使用==,!
=即可)。
EqualsMethod.java.,其中使用系统提供的Integer类时,结果是正常的,但是如果使用自己定义的类时,equals()方法又变成了其默认行为:
对引用进行比较,此时需要在定义的新类中改变equals().即:
如果使用的是Java类库,且其中实现了equals(),则比较的是对象的内容,而如果使用自己定义的类,则必须修改equals(),否则比较的就是引用。
7.逻辑运算
逻辑运算也称为布尔运算,即通过AND(&
&
),OR(||),NOT(!
)对布尔数据进行运算,得到一个布尔值。
可用示例程序Ch3:
Bool.java说明。
程序中,用于比较的数据可以是任何主数据类型,但不同类型的数据比较时,可能会有一些细节需要注意,如浮点数的精确度比较高,NaN与任何数均不相等(只有NaN!
=x为真),而0.0==-0.0会得到true,同样,null也比较特殊。
当某个表达示测试一部分后发现结果为false,而不必再测试余下的部分,此时立即终止对整个表达式的测试,这种现象叫“短路”。
如示例Ch03:
ShortCircuit.java所示。
程序中,从main()方法开始执行,在测试test1()时,值为true,所以输出test1()方法中的返回值,在测试test2()时,返回值为false,输出后便无须继续测试test3(),因为无论其值为何,表达式test1(0)&
test2
(2)&
test3
(2)的值均为false。
此时,若把表达式改为test1(0)&
test2
(2)||test3
(2),则会测试test3(),如果改为test1(0)||test2
(2)||test3
(2)呢?
8.按位运算
按位运算执行的运算与逻辑运算类似,只是运算的单位是比特,使用按位AND(&
),按位OR(|),按位XOR(^),和一元NOT(~)非运算。
与逻辑运算相比,多了XOR,且按位运算也可与=联合组成运算和赋值,如&
=,|=,^=,但~由于是一元运算,所以不能组成类似结构。
当对布尔型数据进行按位运算时,只有AND,OR,XOR三种,为了避免与逻辑运算混淆,布尔值不能进行按位的NOT运算。
与逻辑运算不同的是,按位运算没有“短路”现象。
请仿照以上示例,写一个按位运算的程序,要求打印出对两个数进行四种按位运算的结果。
(Ch03:
Bit.java)
程序在NOT运算时,结果令人不解!
!
原因是所用计算机使用二进制补码形式来表示负数,如5写为二进制是0000..0101,对其各位取反后得到1111…1010,其中最左位为符号位,0表示正,1表示负,1010所表示的,正是十进制-6的补码。
再如10表示为二进制为01010,各位取反后得10101,