《《Java程序设计教程》教案第8课Java面向对象编程基础(二).docx》由会员分享,可在线阅读,更多相关《《Java程序设计教程》教案第8课Java面向对象编程基础(二).docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课题Java面向对象编程基础(二)课时2 课时(90 min )教学目标知识技能目标:(1 )了解修饰符的访问范围(2 )掌握static, abstract, fina的修饰类和方法(3 )掌握包的特点以及在氏lipse中创建包思政育人目标:(1 )引导学生通过对修饰符访问范围的学习,来编写简单的程序,树立学生实事求是、 一丝不白的科学精神(2 )引导学生运用所学知识揭示生活中的奥秘,在实践中深化认识,达到学以 致用的目的教学重难点教学重点:掌握包中创建类的具体方法教学难点:能使用访问控制修饰符教学方法情景模拟法、问答法、讨论法教学用具电脑、投影仪、多媒体课件、教材、文旌课堂APP教学设计第
2、1节课:课前任务T考勤(2 min )一问题导入(5 min )一传授新知(33 min )一知 识拓展(5 min )第2节课:上机实操1 ( 20 min )一课堂演示(20 min )一课堂小结(3 min )一作 业布置(2 min )教学过程主要教学内容及步骤设计意图第一节课课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒 同学复习上节课所学知识【学生】复习上节课所学知识通过课前复习, 让学生重温上节 课所学知识磔 能够更好地接受 新知识考勤(2 min )【教师】使用文旌课堂APP进行签到【学生】按照老师要求签到培养学生的组 织纪律性,掌握学 生的出勤情况问题导入(5
3、min )【教师】提出以下问题:在JAVA编程技术一书中读到关于synchronized方法的内容, 该方法用来控制多个并发线程对共享数据的访问,在其执行之前要 求一个锁.这其中的锁是什么意思?还有对于类方法,方法的类使用与通过问题导入, 引导学生思考,调 动学生的主观能 动性课堂小结 (3 min )【教师】简要总结本节课的要点本节课学习了修饰符的访问范围、关键字的使用方法,包的特 点,以及创建和导入。并通过上机实操让大家熟练掌握了怎样子在 包卜创建类。希望大家课下多加练习,巩固所学知识。【学生】总结回顾知识点总结知识点,巩 固印象作业布置 (2 min)【教师】布置课后作业定义一个店员类S
4、alesClerk ,包含一个推荐图书的成员方法, 实现顾客咨询哪一类图书,店员就推荐该类图书的其中一本。例 如,顾客咨询Java,店员推荐Java程序设计教程(第2版)。【学生】完成课后任务延展知识面,多 学科交叉学习教学反思在本节的上机实践教学过程中让我懂得,鼓励和诱导相结合,排除学生学习中各种 心理障碍,克服学生的抵触情绪,创设和谐的学习环境,是保持学生学习情趣的最佳手 E殳。在今后的教学中,我会通过不断地反思来提高自己的教学水平和创新能力。以此提 高学生学习编程的兴趣,使学生主动地学习,培养学生的自学能力和创造发挥能力。为 培养21世纪实用人才奠定良好的理论基础。类对象相联系的锁;对于
5、实例变量,该变量使用与this相联系的锁.这 句话又是什么意思?【学生】思考、讨论、举手发言【教师】通过大家的发言,引入新的知识点,讲解修饰符和包1 .4.1访问控制修饰符访问控制修饰符的访问范围1. private : private修饰的类成员,只能被该类自身的方法访 问和修改,而不能被任何其他类(包括该类的子类)访问和引用。 因此,private修饰符具有最高的保护级别。2. friendly :如果一个类没有访问控制符,说明它具有默认的 访问控制特性。这种默认的访问控制特性规定,该类只能被同一个 包中的类访问和引用,而不能被其他包中的类使用,即使其他包中 有该类的子类。这种访问特性又称
6、为包访问性(package private )。通过教师在课 堂上对修饰符关 键字的讲解,使学 生熟练掌握其编 程方法3. protected : protected修饰的类成员可以被该类自身、与 它在同一个包中的其他类及在其他包中的该类的子类所访问。使用 protected修饰符的主要作用是允许其他包中它的子类来访问父类 的特定成员变量和成员方法。传授新知(23 min )4. public : public修饰的类可以被其他类访问,在不同包中访 问和引用其他类时,需要在程序中使用import语句导入public类。【教师】演示例题4-6【学生】观看程序运行结果【教师】对程序进行分析:本例题
7、中idNumber是私有变量,不能在其他类中赋值。2 .4.2 static 关键字L类型:静态成员变量和实例成员变量。3 .区别:第一次调用类的时候,系统为静态变量分配一次内存, 不管以后创建多少个类的对象,所有对象都共享该类的静态变量。4 . static关键字也可以修饰成员方法,即将成员方法分为静态 方法(又称类方法)和实例方法。带有static修饰符的方法称为静态 方法,不加static修饰符的方法称为实例方法,它们的用法与变量类 似。【教师】通过演示例题4-7 f熟悉static关键字修饰成员变量。【学生】理解静态变量的操作【教师】对程序进行分析:本例题中time是静态变量,通过be
8、ll对象设置该值,watch对 象调用该变量时该值已经存在,因此,调用getTime()方法输出的时 间是一样的。4.4.3 abstract 关键字1. abstract类:带有abstract修饰符的类称为抽象类,相当 于类的抽象。一个抽象类可以包含抽象方法,它不具备具体功能, 只用于衍生出子类。因此,抽象类不能实例化。2. abstract方法:带白abstract修饰的方法称为抽象方法, 是指没有方法体的方法,且抽象方法只能出现在抽象类中。4.4.4 final 关键字1. final类:带有final修饰符的类称为最终类。不能通过扩展 最终类来创建新类。也就是说,它不能被继承,或者说
9、它不能派生 子类。当某个类设置为final类时,类中的所有方法都被隐式地设置 为final形式。但是final类中的成员变量可以定义为final形式,也 可以定义为非final形式。2. final方法:带有final修饰符的力法称为最终方法。在面向 对象程序设计中,子类可以覆盖父类的方法。常将父类中的关键方 法用final关键字修饰,以此防止子类对父类的关键方法进行修改, 保证了程序的安全性。3. final变量:带有final修饰符的变量称为最终变量。final 关键字修饰基本数据类型的变量时,该变量即为常量。4.5包包的特点1 .同一包中类的名字不能相同,但不同包中类的名字可以相同2 .
10、包中定义的类必须通过包名访问。3 .包也限定了访问权限,拥有某个包访问权限的类才能访问包 中的类。创建包在Eclipse中创建包和在包中创建类的具体步骤1 .启动Eclipse ,在Eclipse窗口的采单栏中选择,文件,一“新 建”一“包”选项。2 .打开“新建Java包”对话框,在“名称”编辑框中输入包名,如 chapter其他使用默认设置,然后单击“完成”按钮。3 .返回Eclipse窗口 ,在包资源管理器中右击“chapter# ,在弹 出的快捷菜单中选择“新建”一“类”选项。4 .打开新建Java类”对话框,在“名称,编辑框中输入文件名, 如Book ,其他使用默认设置,然后单击“完
11、成”按钮,完成Java类的 创建。5 .返回氏lipse窗口,在chapter4包卜显不新建的Book类。打 开Bookjava的编辑界面可以看到,类的第一行指定了包名,如 package chapter4;,o导入包1 .如果某个类想要使用其他包中的类,应在该类中使用import 语句,导入外部类。如果类中有package语句,import语句应紧跟在 package语句后。如果程序中没有package语句,import语句应作为 程序的第一条语句,并且import语句可以有多条,以导入多个包中 的类。2 . import语句使用方法3 1 )单类导入,表示导入包中的指定公共类。语法格式:i
12、mport包名.公共类名;4 2 )按需导入,表示根据需要导入包中的所有公共类。 import包名*;5 3 )如果想要分别导入 chapter4 和 chapter4.example4_8 包中的类,必须在程序中输入两条import语句。/按需导入chapter4包中的公共类import chapter4.*;/按需导入chapter4 .example4_8包中的公共类import chapter4.example4_8.*;【教师】演示例题4.8 ,并对重要语句进行分析/* Example4_8.java */package chapter4.example4_8;import chap
13、ter4 .Book;/chapter4 包中的 Book,美public class Example4_8 public static void main(String args) VWSAAAAA/创建Book类对象bBook, b = new Book ( Java 程序设计教程(第 2 版),59.8);b.show () ;/ i周用b的show ()方法)【学生】聆听.理解、记录4.5.3 Java常用的包包说明java.langJava语言的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型、 基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系
14、统默 认加载这个包java.util包含处理时间的Date类,处理变长数组的Vector类,买现栈的Stack类和实现哈 希(散列)表的HashTable类等javaawt实现构建图形用户界面(G5)的类库。例如,低级绘图操作的Graphics类,图形 界面组件和布局管理类(如Checkbox类、Contamer类、LaouIanager接口等),以 及用户界面交互控制和事件响应的Event类java.io实现程序与操作系统、用户界面及其他Java程序进行数据交换的类库javasql实现JDBC的类库,动态地安装不同驱动程序来访问不同数据源java, applet实现运行于Internet浏览
15、器中的Java Applet的工具类库实现网络功能的类库,如实现套接字通信的Socket类、ServerSocket类;编写用户 自己的Telnet、FTP、邮件服务等实现网上通信的类;用于访问Internet上奥源和进行 CGI调用的类,如皿等【学生】聆听、思考、理解、记忆知识拓展 (5 min)【教师】讲解最新的Java编程规范【学生】聆听、记录、思考学生可进一步 巩固知识第二节课上机实操 (20 min ) 【教师】组织学生在机房使用文本编辑编写程序,运用课堂所 学知识和基础在Java运行环境中编写程序,实现以下目的:模拟贷款系统,根据输入的贷款年利率、贷款年限和贷款总 额,计算等额本息
16、情况下的月均还款额和总还款额并输出。 【学生】上机实操,模拟贷款系统 【教师】巡视机房,及时解决学生遇到的问题通过上机实操, 使学生熟练掌握 使用关键字编写 程序的方法课堂演示 (20 min )【教师】带领学生分析上机操作中出现的问题,并作出分析【问题分析】创建包ch叩ter4.example4_9 ,在该包下创建Loan类和 LoanTest类。Loan类实现计算等额本息情况下的月均还款额和 总还款额,LoanTest类实现输入贷款年利率、贷款年限和货款总 额,然后创建Loan类的对象,最后调用Loan类中的方法计算 月均还款额和总还款额并输出。等额本息情况下的计算方法为:月均还款额=(贷
17、款总额x 月利率x (1+月利率)还款月数)/( (1+月利率)还款月数-1), 其中月利率二年利率/12 ,还款月数=贷款年限x 12。总还款额计 算方法为:总还款额二月均还款额x 12。【教师】利用多媒体演示具体操作过程【参考代码】/* Loan.java */package chapter4.example4_9;public class Loan 通过演示让学 生找出自己的不 足,从而牢固的掌 握知识点private double monthlylnterestRate; /定义贷款月利率private int numberOfMonths;/定义贷款总月数private double
18、 loanAmount; /定义贷款总额/构造方法,初始化成员变量publicLoan(doubleannualInterestRate, int numberOfYearsf double loanAmount) /计算月利率,由于年利率用百分比表示, 故此处须除以100this.monthlyInterestRate=annualInterestRate / (100 * 12);this numberOfMonths=numberOfYears夫12; /计算还款月数this.loanAmount = loanAmount;/定义方法,计算等额本息还款方式下的月均还 款额并返回publi
19、c double getMonthlyPayment() return(loanAmount*monthlyInterestRate * Math.pow(1+ monthlyInterestRate,numberOfMonths)/ (Math.pow(1+monthlyInterestRate,numberOfMon)/定义方法,实现计算等额本息还款方式下还款 总额并返回public double getTotalPayment() returngetMonthlyPayment()*numberOfMonths;)/* LoanTest.java */packag chaptr4.exa
20、mple4_9;import java.util.Scanner;public class LoanTest public static void main (String args) (double interestrate;/定义贷款年利率int loanperiod;double loanvalue;/定义贷款总额Scannerscan=newScanner(System.in);System, out .print (”请输入贷款年利率:interestrate = scan.nextDouble (); /输入贷款年利率System, out .print (”请输入贷款年限loan
21、period = scan.nextlnt(); /输入贷款年限System. out. print (”请输入贷款总额(元):”);loanvalue = scan.nextDouble();/输入贷款总额/创建Loan类对象Loanloan=newLoan(interestrate,loanperiod, loanvalue);System. out .printin (等额本息情况下 的月均还款额为:”loan.getMonthlyPayment() + “元”);System.out.printIn(n 贷款” + loanperiod + ”年的还款总额为:”loan.getTota
22、lPayment() + “元”);scan close ();loanvalue = scan. nextDouble () ;/ 检人贷款总颖/创建Loan类对象Loan loan = new Loan(interestrate,loanperiod, loanvalue);System.out .printin (等额本息情况下的月均还款额为:”+ loan, get Monthly Payment () + 元”);System.out .print In (MM + loanperiod + ”年的还款总额为:”+ loan, get To tai Payment () + 元); scan.close ();)