1、JAVA语言编程基础教案22 学生成绩操作接口的实现山东理工职业学院单元教学过程设计首页课程所属院(部):软件工程学院 2019-2020学年 第一学期课程名称Java语言编程基础任课教师单元标题项目二任务2 学生成绩类操作接口的实现上课地点学时6授课班级授课时间第 周第 周第 周第 周第 周第 周星期 星期 星期 星期 星期 星期 第 节第 节第 节第 节第 节第 节月 日月 日月 日月 日月 日月 日教学目标能力目标知识目标1.能掌握利用接口编写程序的方法1. 了解接口的概念和意义;2. 掌握定义接口和实现接口的方法;3. 掌握定义数据表操作接口的方法;4掌握实现数据表接口的方法。教学任务
2、通过接口提供的方法来操作数据库中的表教学重、难点重点:定义接口和实现接口的方法难点:实现数据表接口的方法教学材料或用具教材、教案、课件、课程标准、案例素材及Eclipse开发软件课后任务1利用抽象类分别求三角形、矩形和圆的面积、周长。2巩固例子山东理工职业学院单元教学过程设计步骤及时间教学内容教师活动学生活动5分钟5分钟20分钟40分钟50分钟20分钟50分钟60分钟10分钟【组织教学】1、检查学生出勤,作好学生考勤记录。2、课堂提问,了解学生掌握所学知识情况。3、强调课堂纪律,加强互动,活跃课堂气氛。【课题导入】任务1.1用记事本完成了代码设计,但是还无法看到代码执行后的效果。任务二是在任务
3、一的基础上,利用Java语言的开发工具运行该程序,并得到运行结果。在此过程中,需要了解开发工具的使用方法、文件建立的方法、代码的编写、存储,以及程序的运行过程。【讲授新课】8.4.1抽象类和接口1抽象类 抽象类是普通类与接口之间的一种中庸之道。Java规定,用关键字abstract修饰的类称为抽象类(abstract类),用关键字abstract修饰的方法称为抽象方法。例如:abstract class Base /抽象类定义 abstract void method1(); /抽象方法定义 void method2() /具体方法定义 System.out.println(method2);
4、声明格式:abstract class 类名 abstract 数据类型 方法名(参数表);【注意】(1)方法声明中没有; (2)方法声明最后的“;”不能省略。【说明】(1)用abstract修饰的类表示抽象类,抽象类不能被实例化,即不允许创建抽象类本身的实例。没有用abstract修饰的类称为具体类,具体类可以被实例化。(2)用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。没有用abstract修饰的方法称为具体方法,具体方法具有方法体。(3)抽象方法必须声明在抽象类中,而且抽象方法只需声明,不需实现。(4)父类中的某些抽象
5、方法不包含任何逻辑,需要在子类继承中由子类提供抽象方法的实现细节。(5)含有抽象方法的类必须声明为抽象类(abstract类)。抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类。(6)抽象类中可以包含构造方法,由于不能利用抽象类直接创建对象,因此抽象类中定义构造方法是多余的。【例8.1】找出下面程序中的错误,并说明原因。abstract class Base abstract void method1(); abstract void method2();class Sub extends Base void method1() System.out.println(metho
6、d1); 2接口接口(interface)就是方法和常量的集合,为了使Java程序的类层次结构更加合理,更符合实际问题的本质,编译者可以把用于完成特定功能的若干属性组织成相对独立的属性集合;凡是需要实现这种特定功能的类,都可以继承这个属性集合并在类内使用它,这种属性集合就是接口。【说明】接口使抽象的概念更向前迈进了一步,接口产生一个完全的抽象类,它根本就没有提供任何具体实现。允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口只提供形式,不提供任何具体实现。接口定义格式: public interface 接口名 publicstaticfinal 类型 变量名=常量值; pub
7、licabstract类型 方法名(参数列表); 说明:接口修饰符为public或省略形式,分别为公共接口,或者是友好接口;而属性和方法均为public权限。接口体由两部分组成:(1)对接口中属性的声明接口中只能包含public、static、final类型的成员变量,因此接口中的属性都是用final修饰的常量。(2)对接口中方法的声明接口中只能包含public、abstract类型的成员方法,不能有非抽象方法。在接口中只能给出这些抽象方法的方法名、返回值和参数列表,而不能定义方法体,即仅仅规定了一组信息交换、传输和处理的“接口”。【例8.2】接口定义举例public interface A
8、public static final int X=1; public static final int Y=2; public static final int Z=3; public void show();【例8.3】找出下面程序中的错误,并说明原因。public interface A int var; void method1() System.out.println(method1); protected void method2(); static void method3() System.out.println(method3); 3接口的实现接口的实现:接口由类来实现,而且
9、一个类能实现许多接口。实现的格式如下:class 类名 implements 接口1 ,接口2,接口3,接口n .例如:假设A,B,C为已经定义的接口public class MyInterface implements A,B,C . 【说明】类MyInterface实现了三个接口,即实现三者所有方法。【例8.4】实现SayHello接口interface SayHello void printMessage(); class MySayHello implements SayHello public void printMessage() System.out.println(Hello)
10、; 【例8.5】找出下面程序中的错误,说明原因,并进行改正。interface SayHello void printMessage(); void receiveMessage(); class MySayHello implements SayHello public void printMessage() System.out.println(Hello); 【注意】(1)接口一经声明并实现,即可以使用。(2)同一个接口可以由多个类来实现,接口中的同一个方法在实现这个接口的不同的类中可以有不同的具体实现(多态性)。(3)接口是一个规范,是一个抽象的概念,由类把这个规范具体实现。4类和接口
11、的区别(1)类只能继承一个类,而对于接口,类可以实现多个接口。 (2)对于继承性,类继承了超类的方法:子类可以选择是否覆盖超类的方法。接口的方法没有实现,因此,类必须实现接口中的每个方法。(3)从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。(4)接口像一个规范,一个协议,而类则是实现了这个协议,满足这个规范的具体实现。5接口和抽象类的区别相同点:(1)都包含抽象方法,声明多个类共享方法首部。(2)都不能被实例化。不同点:(1)一个类只能继承一个抽象类,而一个类可以实现多个接口。(2)访问权限不同,抽象类和普通类一样,而接口的访问权限是默认和pu
12、blic,接口成员都是public。(3)抽象类和接口中的成员变量不同。(4)抽象类可包含抽象方法和普通方法,接口只能是抽象方法。6接口的作用(1)使用接口可以使设计与实现相分离,使使用接口的用户程序不受不同接口实现的影响,不受接口实现改变的影响。(2)弥补Java只支持类单继承的不足,它用来完成多继承的一些功能。Java接口反映了对象较高层次的抽象,为描述相互似乎没有关系的对象的共性提供了一种有效的手段。7接口的继承接口之间可以存在继承关系,但不能是实现关系。interface A void method1();interface B void method2();interface D e
13、xtends A,B /合法interface E implements A,B /错误 【例8.6】/定义接口interface Animal void eat(); void sleep();interface Man extends Animal void think(); interface School void classroom();/定义抽象类Studentabstract class Student implements Man,School public abstract void study();/定义大学生类class Undergraduate extends Stu
14、dent String name; public Undergraduate(String name) this.name=name; public void study() System.out.println(name+can study.); public void classroom() System.out.println(name+has classroom to study.); public void think() System.out.println(name+can think.); public void eat() System.out.println(name+ca
15、n eat.); public void sleep() System.out.println(name+can sleep.); void ablity() this.sleep(); this.eat(); this.think(); this.study(); this.classroom(); /定义测试类public class Exp86 public static void main(String args ) Undergraduate s=new Undergraduate(李平); s.ablity(); 运行结果:图8-4 例8.4运行效果图8接口的多态多态:同一个接口可
16、以由多个类来实现,接口中的同一个方法在实现这个接口的不同的类中可以有不同的具体实现。【例8.7】public interface A public static final int X = 1; public static final int Y = 2; public static final int Z = 3; public void show();class B implements A public void show() System.out.println(class B); class C implements A public void show() System.out.p
17、rintln(class C); 8.4.2 List与ArrayListList包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法,如表8-1所示。表8-1 List接口相关方法方法名称功能简介add(int index,Object obj)用来向集合的指定索引位置添加对象,其他对象的索引位置相对后移一位,索引位置从0开始。addAll(int,Collection col)用来向集合的指定索引位置添加指定集合
18、中的对象。remove(int index)用来清除集合中指定索引位置的对象set(int index,Object obj)用来将集合中指定索引位置的对象修改为指定对象get(int index)用来获得指定索引位置的对象indexOf(Object obj)用来获得指定对象的索引位置。当存在多个时,返回一个索引位置;当不存在时,返回-1lastIndexOf(Object obj)用来获得指定对象的索引位置。当存在多个时,返回最后一个的索引位置;当不存在时,返回-12.实例化接口List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过
19、对象的索引操作对象。 List接口的常用实现类有ArrayList和LinkedList,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList。格式:/利用ArrayList类实例化List集合List 对象名称 = new ArrayList();/利用LinkedList类实例化List集合List 对象名称= new LinkedList();3.add(int index, Object obj)方法和set(int index, Object obj)方法的区别在使用List集合时需要注意区分add(int
20、index, Object obj)方法和set(int index, Object obj)方法,前者是向指定索引位置添加对象,而后者是修改指定索引位置的对象。【例8.8】遍历List举例1import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class Exp88 public static void main(String args) String a = A, b = B, c = C, d = D, e = E; List list = new LinkedList();
21、list.add(a); list.add(e); list.add(d); list.set(1, b);/ 将索引位置为1的对象e修改为对象b list.add(2, c);/ 将对象c添加到索引位置为2的位置 Iterator it = list.iterator(); while (it.hasNext() System.out.println(it.next(); 运行结果:ABCD因为List集合可以通过索引位置访问对象,所以还可以通过for循环遍历List集合,例如遍历上面代码中的List集合的代码如下:【例8.9】遍历List举例2import java.util.ArrayL
22、ist;import java.util.LinkedList;import java.util.Iterator;import java.util.List;public class Exp89 public static void main(String args) System.out.println(开始:); String a = A, b = B, c = C, d = D, e = E; List list = new LinkedList(); list.add(a); list.add(e); list.add(d); list.set(1, b);/ 将索引位置为1的对象e
23、修改为对象b list.add(2, c);/ 将对象c添加到索引位置为2的位置 Iterator it = list.iterator(); while (it.hasNext() System.out.println(it.next(); for (int i = 0; i list.size(); i+) / 利用get(int index)方法获得指定索引位置的对象 System.out.println(list.get(i); System.out.println(结束!); 运行结果:开始:ABCDABCD结束!【知识拓展】1Java的forEach用法Java SE5 引入了一种
24、更加简洁的for语法格式,可以用于遍历数组和集合,是for循环的增强版本。foreach虽然对for循环进行了简化,但是并不是说foreach就比for更好用,foreach适用于循环次数未知,或者计算循环次数比较麻烦的情况。但是更为复杂的一些循环还是需要用到for循环。这里需要注意一点:forEach只能取值,不能赋值。 forEach格式如下:for(元素类型 元素变量x:遍历对象(数组或集合) 引用元素变量x的语句; 【例8.10】遍历数组示例import java.util.*;public class fe public static void main(String args) i
25、nt a=11,22,33,44,55,66; for(int x:a) System.out.println(x); 图8-6 forEach实例运行结果2Java迭代器 迭代器是一种模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。 不同java集合的内部结构是不一样的,如果为每种容器都单独实现一种遍历方法十分麻烦,为了简化遍历容器的操作,所以推出了java迭代器(Iterator)。 Iterator接口包含三个方法:hasNext(),next(),remove()。 hasN
26、ext():每次next之前,先调用此方法探测是否迭代到终点。 next():返回当前迭代元素 ,同时,迭代游标后移。 remove():删除最近一次已经迭代出去的那个元素。【注意】只有当next()执行完后,才能调用remove()函数。比如你要删除第一个元素,不能直接调用 remove(),而要先next()一下;如果没有先调用next()就调用remove()方法是会抛出异常的。【例8.11】迭代示例import java.util.ArrayList;import java.util.Iterator;public class diedai public static void mai
27、n(String args) ArrayListlist=new ArrayList(); list.add(中国加油); list.add(武汉加油); list.add(大家都要好好的); for(Iterator iterator=list.iterator();iterator.hasNext();) System.out.println(iterator.next(); 图8-7 迭代示例运行结果【技能训练】一、任务分析操作步骤如下:步骤一:创建学生成绩表操作接口;步骤二:实现学生成绩表操作接口。二、任务实施步骤一:创建学生成绩表操作接口;1在com.sdlg.dao包中右单击,然后
28、从弹出的菜单中选择“new”,接着选择“interface”,新建接口StuGradeDao,如下图所示:图8-1 新建StuGradeDao界面【注意】创建接口格式public interface 接口名 2在接口中定义针对学生成绩表操作的各个方法。package com.sdlg.dao;import java.util.List;import com.sdlg.entity.Stu;public interface StuGradeDao boolean add(Stu stu);/添加记录 boolean update(Stu stu);/修改记录 boolean delete(String sno);/删除记录 List queryAll();/查找全部记录步骤二:实现学生成绩表操作接口。1在com.sdlg.dao.impl包上右单击,选择“new”,选择“class”,新建类StuGradeDaoImpl类,如下所示:import com.sdlg.dao.StuGradeDao;public class StuGradeDaoImpl implements StuGradeDao【注意】implements StuGradeDao 为实现
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1