面向对象程序设计教案_第1页
面向对象程序设计教案_第2页
面向对象程序设计教案_第3页
面向对象程序设计教案_第4页
面向对象程序设计教案_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013-2014学年第二学期课程教案课程名称:面向对象程序设计课程类型:理论课()理实一体课(√)实践课()授课教师(签字):石刚教务处制2014年2月面向对象程序设计开发环境教案一、教学概要课题名称面向对象程序设计理论课时2课时教学对象13计算机应用技术实践课时6课时教学分析定位与作用本次课为本学期第1-2次课,是面向对象程序设计的第一个任务。本节主要介绍java语言的发展和开发环境的配置安装,逐步培养学生程序设计的基本思路,为后续课程学习奠定基础。学习状态学生刚学习过计算机的一些基础课程以及网络组网、局域网组建的基础知识,具备基本的计算机操作能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识掌握对象和类的描述;实际操作技能掌握Java语言的特点能建立相应的环境;编写简单的HelloWorld程序;配置环境变量职业素养逐步培养学生动手操作能力和思考问题的能力;教学重难点关键点重点:了解Java语言的跨平台特性,掌握其原理。如何学习Java语言难点:学生独立建立Java的编译和运行环境,并编写两类Java程序。了解两类Java程序的区别。组织形式教学方法主要采用任务教学法教学。教学准备设备工具多媒体教室材料电子课件教学环境东校区206教学小结需要向学生补充Java程序在编译和运行时常出现的问题及解决方法。二、教学设计时间教学环节及主要内容师生活动3分钟5分钟40分钟教学组织:做好上机课准备工作,环视学生,注意学生精神状态,组织教学。一、复习提问,导入任务从本次课开始,我们接下来研究的是面向对象程序设计的学习——Java语言。本次课,我们的任务就是:掌握Eclipse开发环境的安装和入门级程序的编写。二、演示讲授,操作任务1.讲授知识要点(1)网络编程所遇到的问题及Java解决的基本思路。(5min)(2)Java语言的特点。(5min)(3)Java编译和运行环境的建立。(35min)(4)Java程序的分类、编译和运行时常见问题。(20min)(5)Java平台。(10min)(6)总结(10min)(7)布置作业及下节课内容(5min)教师提示学生做好上机课准备课程导入:复习前一阶段学习内容以C语言为代表使学生清楚学习范畴及新的学习任务讲授新课25分钟10分钟10分钟三、实践练习,应用理解题目:输出T字四、教学小结,拓展思考Java语言与其他编程语言的主要区别和优势是什么?作业:请完成面向对象Java语言的最新发展情况?以及他在日常生活的应用领域。教师布置任务,引导学生思考,学生操作通过操作过程,逐步培养学生自主学习能力和理解能力教师进行教学小结学生课下完成作业

Java语言基础教案一、教学概要课题名称面向对象程序设计理论课时2课时教学对象13计算机应用技术实践课时6课时教学分析定位与作用本次课为本学期第3-4次课,是面向对象Java语言的基础知识讲解。本节主要介绍Java的数据类型、Java的表达式、运算符。培养学生逻辑分析的基本思路,为后续程序设计奠定基础。学习状态学生刚学习过C语言的基础课程,具备基本的程序设计能力,理解能力、自主学习能力,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识1.Java区分大小写。2.变量的作用域。3.数据类型转化规则。4.求余运算应用。5.Java中布尔值同C语言的区别。6.unicode的含义,编码与解码的含义。实际操作技能掌握多种隐含的数据类型转化情况;掌握类、接口、数组也是数据类型;掌握逻辑表达式中双与双或与单与单或的区别;掌握条件表示式规则职业素养逐步培养学生动手操作能力和思考问题的能力;教学重难点关键点重点:数据类型转化规则。难点:类和接口。组织形式教学方法主要采用任务教学法教学。教学准备设备工具多媒体教室安装Eclipse材料电子课件教学环境东206教学小结二、教学设计时间教学环节及主要内容师生活动3分钟5分钟40分钟教学组织:做好上机课准备工作,环视学生,注意学生精神状态,组织教学。1.查看本机计算机名称:“系统特性”属性或ipconfig;2.ipconfig查看Realtek网卡配置信息;3.正确设置、启动广播教学软件。一、复习提问,导入任务上次课,我们学习了Java语言的发展。从本次课开始,我们接下来研究的是java语言的基础——数据类型、表达式、运算符。本次课,我们的任务就是:数据类型。二、演示讲授,操作任务1.讲授知识要点1)标识符Java语言规定标识符是以字母、下划线"_"或美元符号"$"开始,随后可跟数字、字母、下划线或美元符号的字符序列。2)关键字Java中的关键字:abstract

boolean

break

bytecasecatch

char

class

continue

default

do

double

else

extends

final

finally

float

for

if

implements

import

instanceof

int

interface

long

native

new

null

package

private

protected

public

return

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while3)UnicodeJava语言使用国际字符集(Unicode)。Unicode字符集定义了一套国际标准字符集。通常的ASCII码是8位的,而Unicode字符集中的每个字符占16位,即2个字节,整个字符集共包括65336个字符,兼容ASCII,排在Unicode字符集最前面的256个字符就是ASCII码。Unicode除了可以表示256个ASCII码外,还可以表示汉字、拉丁语、希腊字母、朝鲜语等。教师提示学生做好上机课准备课程导入:复习前一阶段学习内容使学生清楚学习范畴及新的学习任务讲授新课35分钟10分钟三、实践练习,应用理解1、下列属于合法标识符的是__________。A)&abrB)(stati)C)8ADDFD)$3412、下列属于合法标识符的是_________。A)*AQabrB)!statiC)A_DEFD)413、下列属于合法标识符的是_________。A)?DDDDB)statiC)staticD)3414、下列属于合法标识符的是_________。A)_436abrB)=readC)extendsD)abstract5、下列属于合法标识符的是_________。A)defaultB)#W23C)@adefD)$_3416、下列是十六进制整数的是_________。A)0176B)0xC5C)6590D)f1787、下列表示转义换行字符的是_________。A)nB)\nC)’n’D)”n”8、下列表示转义回车字符的是________。A)”r”B)\rC)’r’D)r9、下列常量定义合法的是_________。A)intTIMKF=1024B)charTIMKF=”1024”C)finalintTIMKF=1024D)byteTIMKF=’1024’10、下列属于java.lang.Number类包的是_________.A)java.lang.ByteB)java.lang.ObjectC)java.lang.BooleanD)java.lang.Character11.运算符?:属于__________.A)一元运算符B)二元运算符C)三元运算符D)四元运算符12给出下列代码片段:If(x>0){System.out.println(“Hello.”);}elseif(x>-3){System.out.pirntln(“IamTom.”);}else{System.out.println(“Howareyou?”);}请问将打印字符串“Howareyou?”的x的范围是__________.A)x>0B)x>-3C)x<=-3D)x<=0&x>-313.下面错误的赋值语句是____________.A)floatf=11.1f;B)doubled=5.3E12;C)charc=‘r‘;D)bytebb=433;14.给出下列代码:booleana=false;booleanb=true;booleanc=(a&&b)&&(!b);intresult=c==false?1:2;执行完后,c与result的值是______________.A)false和1B)true和2D)true和1D)false和215.

阅读下列代码:PublicclassTest{Publicstaticvoidmian(Stringargs[]){Floatf=12.0f;Inti=3;System.out.println((f--)/(++i));}}四、教学小结,拓展思考本次课我们学习了Java语言的基本知识,掌握了标识符、关键字。作业:完成课后练习第2题,第3题。教师布置任务,引导学生思考,学生操作通过操作过程,逐步培养学生自主学习能力和理解能力通过练习,进一步理解用户和组的管理,熟练操作教师进行教学小结学生课下完成作业

Java基础及规范教案一、教学概要课题名称面向对象程序设计理论教学时间2课时教学对象13计算机应用技术实践教学实践4课时教学分析定位与作用本节主要了解Java数组及控制语句,明晰同其他语言在这方面的主要区别点,知道一些Java的工程规范。学习状态学生刚学习过程序设计的一些基础知识以及网络的基础知识,具备基本的计算机操作能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识java数组。一维数组、二维数组(35min);控制语句:分支语句、循环语句、跳转语句(35min);Java工程规范(10min);实际操作技能Java数组定义;分支语句的执行规则;循环语句的执行规则;跳转语句的类型;职业素养Java工程规范存在的必要性;教学重难点关键点重点:Java数组定义和初始化的多种形式。分支语句的执行规则及常出现的问题。循环语句的执行规则及常出现的问题。跳转语句的类型。难点:数组维度的理解(一维和二维之间的联系和区别)。一维数组的多种定义和初始化方式;二维数组中的列数不等的情况。对象数组:“MyClass[]mc=newMyClass[10];”的理解。分支语句设计;循环语句的执行过程分析;跳转语句应用的案例背景;switch语句执行时常犯错误。Java工程规范执行的自觉性组织形式教学方法主要采用讲授与引导相结合的方式教学。教学准备设备工具多媒体教室安装Eclipse开发环境材料电子课件教学环境东206教学小结

二、教学设计时间教学环节及主要内容师生活动3分钟2分钟40分钟教学组织:做好上机课准备工作,环视学生,注意学生精神状态,组织教学。1.查看本机计算机名称:“系统特性”属性或ipconfig;2.ipconfig查看Realtek网卡配置信息;3.正确设置、启动广播教学软件。一、提出问题,导入新课上次课,我们学习了标识符、关键字,清楚了变量的作用。本次课,我们在此基础上,进一步学习程序设计——流程控制。二、讲授引导,解析问题1.Java数组一维数组的声明方式:typevar[];或type[]var;声明数组时不能指定其长度(数组中元素的个数),Java中使用关键字new创建数组对象,格式为:数组名=new数组元素的类型[数组元素的个数]publicclassTestNew{publicstaticvoidmain(Stringargs[]){int[]s;inti;s=newint[5];for(i=0;i<5;i++){s[i]=i;}for(i=4;i>=0;i--){System.out.println(""+s[i]);}}}2.初始化1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。实例:publicclassTestD{publicstaticvoidmain(Stringargs[]){inta[];a=newint[3];a[0]=0;a[1]=1;a[2]=2;Datedays[];days=newDate[3];days[0]=newDate(2008,4,5);days[1]=newDate(2008,2,31);days[2]=newDate(2008,4,4);}}classDate{intyear,month,day;Date(intyear,intmonth,intday){this.year=year;this.month=month;this.day=day;}}3.流程控制选择:选择控制有两种:if/else语句和switch语句。1、if/else语句。if语句共有三种表现形式:单分支结构、双分支结构、多分支结构。1)、单分支结构。这是最简单的一种选择结构,它只是简单的判断某个条件是否成立,如果成立就执行一段代码,语句形式为:if(表达式){......}2)、双分支结构。这是一个标准的,完整的if语句实现形式,它首先判断某个条件是否成立,如果成立就执行一段代码,如果条件不成立则执行另一段代码,语句形式为:if(表达式){......}else{......}3)、多分支结构。这是if语句嵌套形式的一种,它是多个if语句的嵌套,语句形式如下:if(表达式){......}elseif(表达式){......}else{......}2、switch语句。switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch语句后面的括号中可以是任何表达式,取其整数部分与各常量表达式比较。其中常量表达式必须是能够自动转换为整型的,如字符型、短整型、枚举等。语句形式如下:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2......case常量表达式n:语句ndefault:语句n+1}循环:根据不同的表现形式,循环共可以分为三种。1、while循环。语法形式为:while(表达式){......循环体语句......}2、for循环。语法形式为:for(表达式1;表达式2;表达式3){......循环体语句......}3、do_while,其语法形式为:do{......循环体语句......}教师提示学生做好上机课准备以小组为单位做好上课前计算机的协同调试工作课程导入:使学生了解学习内容讲授新课时间教学环节及主要内容师生活动25分钟40分钟[实训1]数字斜塔利用数组打印出数字斜塔1234567890[操作总结]总结操作情况,进一步明确数组的综合应用。[实训2]百鸡百钱我国古代数学家张丘建在《张丘建算经》一书中提出了“百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?publicclassChickenBuy{/***百钱买百鸡问题*@paramargs*/staticintx;//可买鸡翁只数staticinty;//可买鸡母只数staticintz;//可买鸡雏只数//方法一:循环列举法publicvoidmethod1(){x=0;while(x<=19){y=0;while(y<=33){z=100-x-y;if(x*5+y*3+z/3==100&&z%3==0&&x!=0){System.out.println("可买鸡翁只数:"+x);System.out.println("可买鸡母只数:"+y);System.out.println("可买鸡雏只数:"+z);System.out.println("-------------------");}y++;}x++;}}//方法二:循环法二publicstaticvoidmethod2(){for(intx=1;x<=100/5;x++){for(inty=0;y<=33;y++){z=100-x-y;if(x*5+y*3+z/3==100&&z%3==0){System.out.println("可买鸡翁只数:"+x);System.out.println("可买鸡母只数:"+y);System.out.println("可买鸡雏只数:"+z);System.out.println("-------------------");}}}}时间教学环节及主要内容师生活动10分钟四、教学小结,拓展思考本次课我们学习了流程控制的基本知识,掌握了if和for语法。我们要清楚数组功能及数组和循环的结合使用。作业:填写好实训报告,完成实训报告中相应思考题,如实记录实训过程中出现的情况。

面向对象(一)类与对象教案一、教学概要课题名称面向对象程序设计理论课时2课时教学对象13计算机应用技术实践课时6课时教学分析定位与作用本节主要让学生掌握抽象的含义,类与对象之间的关系,类定义的基本要点,对象特点。学习状态学生刚学习过程序设计的一些基础知识以及流程控制知识,具备基本的计算机操作能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识抽象的含义(10min);类与对象的关系(10min);类的域和方法(10min);对象产生、作为参数传递的特点、对象数组、数组对象(40min);构造方法(10min);实际操作技能掌握类定义;掌握对象定义;掌握构造方法;职业素养逐步培养学生动手操作能力和思考问题的能力;教学重难点关键点重点:计算机中抽象与生活当中抽象的不同含义。域变量和局部变量作用域的差异以及初始化方面的不同。类与对象之间的关系;对象生成时,类中非static的属性和方法拷贝到对象当中(构造方法例外)。对象生成后在内存中的分布,对象引用在内存中的分布。对象作为参数传递时的特点。构造方法的含义和作用,finalize方法及垃圾对象释放。难点:构造方法定义时常见错误。对象如何成为垃圾对象,垃圾对象如何释放。组织形式教学方法主要采用任务教学法教学。教学准备设备工具多媒体教室材料电子课件教学环境东206教学小结二、教学设计时间教学环节及主要内容师生活动3分钟5分钟30分钟教学组织:做好上机课准备工作,环视学生,注意学生精神状态,组织教学。1.正确设置、启动广播教学软件。2.启动Eclipse,并设置工作目录一、复习提问,导入任务上次课,我们学习了数组和流程控制。从本次课开始,我们接下来研究的是一类和对象的学习。本次课,我们的任务就是:类、对象。二、演示讲授,操作任务1.讲授知识要点1)类、对象所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。类是具备某些共同特征的实体的集合,它是一种抽象的概念,用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。2)两者关系类与对象的关系:类是对象的集合,对象是类的实例;对象是通过newclassName产生的,用来调用类的方法;类的构造方法。用一个例子说明一下他们的关系:比如“人类”就是一个类,那么具体的某个人“张三”就是“人类”这个类的对象,而“名字、年龄”等信息就是对象的属性,人的动作比如“吃饭、穿衣”等就是对象的方法。总之类就是有相同特征的事物的集合,而对象就是类的一个具体实例。同时类有多态和继承,例如“人类”可以分为“男人、女人”,“老人、小孩”那么“男人、女人”就是“人类”的子类等等。一楼的说“轿车”是一个实例化,我觉得有点不妥,“轿车”应该是“车”的一个子类,例如“车牌号是***的轿车”才是一个对象。方法是被对象调用的比如“张三.穿衣()”,用static修饰的方法是静态的方法或称为共享方法,一般用类名直接调用。教师提示学生做好上机课准备以小组为单位做好上课前计算机的协同调试工作课程导入:复习前一阶段学习内容使学生清楚学习范畴及新的学习任务讲授新课60分钟10分钟10分钟任务:Java实现菲波那契数列操作任务流程:斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)publicclassFibonacci{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println("Pleaseinputthisfibonaccin:");intn=scanner.nextInt();//假设输入为大于零的整数System.out.println(fibonacci(6)+":"+fibonacciNormal(6));intsum=0;for(inti=1;i<=n;i++){sum+=fibonacci(i);}System.out.println(sum);}//递归实现方式publicstaticintfibonacci(intn){if(n<=2){return1;}else{returnfibonacci(n-1)+fibonacci(n-2);}}//递推实现方式publicstaticintfibonacciNormal(intn){if(n<=2){return1;}intn1=1,n2=1,sn=0;for(inti=0;i<n-2;i++){sn=n1+n2;n1=n2;n2=sn;}returnsn;}}思考通过图样,理解人对马、青蛙、狮子这些具体对象的抽象理解——动物。在对象作为参数传递案例中,程序配合图样进行启发,帮助学生建立对象分析方法。三、实践练习,应用理解让学生明确类或对象的方法也具有递归调用的性质;普通数据值传递案例;对象引用传递案例。通过对比的方法让学生理解引用传递和普通数据值传递之间的区别;。四、教学小结,拓展思考本次课我们学习了类和对象知识,掌握了java中类和对象的定义。在对象作为参数传递案例中,程序配合图样进行启发,帮助学生建立对象分析方法。作业:填写好实训报告,完成实训报告中相应思考题,如实记录实训过程中出现的情况。教师布置任务,引导学生思考,学生操作学生按照实习指导书分任务进行操作通过操作过程,逐步培养学生自主学习能力和理解能力通过练习,进一步理解用户和组的管理,熟练操作教师进行教学小结指导学生明确实训报告的填写要求学生课下完成作业

面向对象上——非访问修饰符和包教案一、教学概要课题名称面向对象程序设计理论教学时间2课时教学对象13级计算机应用技术实践教学时间4课时教学分析定位与作用本次课主要学习static、final、native和package、import等非访问修饰符。学习状态学生刚学习过程序设计的一些基础知识以及流程控制知识,具备基本的计算机操作能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识静态成员;常量成员;实际操作技能掌握使用static定义成员;掌握final定义成员和类;职业素养逐步培养学生动手能力和团队协作能力;教学重难点关键点重点:static的用法、final的用法、native存在的意义。包在Java程序中的作用;建包与使用包;打包的方法。难点:static属性和方法不拷贝到对象当中,static方法不能访问对象方法,static属性或方法能被所有对象方法所访问。引入包概念后,对于程序设计和执行的影响,引出import和classpath、访问控制符的应用。组织形式教学方法主要采用讲授与引导相结合的方式教学。教学准备设备工具多媒体教室材料电子课件教学环境东206教学小结

二、教学设计时间教学环节及主要内容师生活动教学组织:做好上机课准备工作,环视学生,注意学生精神状态,组织教学。1.查看本机计算机名称:“系统特性”属性或ipconfig;2.ipconfig查看Realtek网卡配置信息;3.正确设置、启动广播教学软件。4.启动Eclipse,设置工作目录一、提出问题,导入新课上次课,我们学习了面向对象类和对象的定义,清楚了利用现实生活中的观念来理解程序设计的重要作用,又学习了构造方法进行的初始化操作。本次课,我们在此基础上,进一步学习类非访问修饰符二、讲授引导,解析问题1.staticstatic表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。2.final数据许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变是很有用的3.final参数

java中也许将参数列表中的参数以声明的方式声指明为final。这意味着你无发改变参数所指向的对象4.final方法使用final方法有两个原因。第一个原因是把方法锁定,以防止任何继承它的类修改它的含义。这是出于设计的考虑:想要确保在继承中使用的方法保持不变,并且不会被覆盖。5.final类当将类定义为final时,就表明了你不打算继承该类,而且也不也许别人这样做。换句话说,出于某种考虑,你对该类的设计永不需要做任何变动,或者出于安全的考虑,你不希望他有子类。三、实践操作,完成任务[实训1]static变量classUseStatic{staticinta=3;staticintb;staticvoidmeth(intx){System.out.println("x="+x);System.out.println("a="+a);System.out.println("b="+b);}static{System.out.println("Staticblockinitialized.");b=a*4;}publicstaticvoidmain(Stringargs[]){meth(42);}}教师提示学生做好上机课准备以小组为单位做好上课前计算机的协同调试工作课程导入:使学生了解学习内容时间教学环节及主要内容师生活动[实训2]final使用packagereusing;importjava.util.*;importstaticnet.mindview.util.Print.*;classValue{inti;//PackageaccesspublicValue(inti){this.i=i;}}publicclassFinalData{privatestaticRandomrand=newRandom(47);privateStringid;publicFinalData(Stringid){this.id=id;}//Canbecompile-timeconstants:privatefinalintvalueOne=9;privatestaticfinalintVALUE_TWO=99;publicstaticfinalintVALUE_THREE=39;privatefinalinti4=rand.nextInt(20);staticfinalintINT_5=rand.nextInt(20);privateValuev1=newValue(11);privatefinalValuev2=newValue(22);privatestaticfinalValueVAL_3=newValue(33);//Arrays:privatefinalint[]a={1,2,3,4,5,6};publicStringtoString(){returnid+":"+"i4="+i4+",INT_5="+INT_5;}publicstaticvoidmain(String[]args){FinalDatafd1=newFinalData("fd1");//!fd1.valueOne++;//Error:can'tchangevaluefd1.v2.i++;//Objectisn'tconstant!fd1.v1=newValue(9);//OK--notfinalfor(inti=0;i<fd1.a.length;i++)fd1.a[i]++;//Objectisn'tconstant!//!fd1.v2=newValue(0);//Error:Can't//!fd1.VAL_3=newValue(1);//changereference//!fd1.a=newint[3];print(fd1);print("CreatingnewFinalData");FinalDatafd2=newFinalData("fd2");print(fd1);print(fd2);}}/*Output:fd1:i4=15,INT_5=18CreatingnewFinalDatafd1:i4=15,INT_5=18fd2:i4=13,INT_5=18*/时间教学环节及主要内容师生活动四、教学小结,拓展思考本次课我们学习了非访问修饰符,掌握了java中static和final的使用。作业:填写好实训报告,完成实训报告中相应思考题,如实记录实训过程中出现的情况。

面向对象中——对象的封装教案一、教学概要课题名称面向对象程序设计理论教学时间2课时教学对象13级计算机应用技术实践教学时间4课时教学分析定位与作用本次课主要学习封装的含义、封装的实现方法——Java访问控制符的类型与应用范围;由封装引出的对象相互作用形式——消息的含义;由消息而引出的对象组合概念;封装与组合对于面向对象程序设计的影响。学习状态学生刚学习过程序设计的一些基础知识以及流程控制知识,具备基本的程序设计能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识封装的含义;访问控制符的种类与影响范围(15min)。访问控制符应用(35min)。面向对象程序设计中对象相互作用的描述——消息(25min)。封装与组合对于面向对象程序设计的影响(5min)。实际操作技能定义动物类;定义兵器类;定义宠物类职业素养逐步培养学生动手能力和团队协作能力;教学重难点关键点重点:封装、访问控制符、消息;难点:protected的影响范围。对象引用在内存中的存在形式。消息的实现:单向引用和双向引用的实现。封装、消息、组合的联系和区别。组织形式教学方法主要采用任务教学法,穿插适当的讲授与演示。教学准备设备工具多媒体教室材料电子课件教学环境东206教学小结

二、教学设计时间教学环节及主要内容师生活动5分钟2分钟3分钟40分钟教学组织:做好上机课准备工作,环视学生,注意学生精神状态,组织教学。1.查看本机计算机名称:“系统特性”属性或ipconfig;2.ipconfig查看Realtek网卡配置信息;3.正确设置、启动广播教学软件。4.启动Eclipse并设置工作空间一、复习提问,导入任务(一)导入任务:对象的封装需要考虑什么?如何识别对象中的属性和行为?本次课,我们的任务就是:对象封装。(二)复习提问:在我们开始本次任务之前,我们先回顾一下非访问修饰符。二、分析思考与探索实践:所谓封装,就是通过定义类并且给类的属性和方法加上访问控制来抽象事物的本质特性。封装就是定义一个类,然后给该类的属性(成员变量)和方法加上访问控制修饰词(public,private,protected,默认包访问权限),使得该类的属性和方法对于类外部来说,想可见的可见,不想可见的隐藏。所以,通过封装这个手段,就抽象出来了事物的本质特性。对上面内容进行进一步的解释:什么叫抽象?比如拿人类来举例子,封装是一种手段,通过封装定义出来的这个类,和现实当中的人这个实体(对象),他们之间就是一种抽象,我们现实当中只存在一个一个的人(对象),人类只是一个概念性的东西,是我们人自己归纳总结出来的,我们知道人都长什么样,所以我们知道符合这个样子的就叫人,人的大脑总是习惯将事物分类,因此人类的概念就出现了,那么我们发现一个一个的人,都有眼睛鼻子嘴(属性),都能吃饭(方法),等等,这就是人这个事物的本质特性,然后我们得编程啊,人类的概念光在脑海中出现了还不行,还得体现到代码上,那么你想体现到代码上,也就是定义一个类,就要使用封装这个手段。为什么要加上访问控制?一是,有些东西是很关键很机密的,不想随便被使用,被改变,被访问。二是,可能这个东西不是很关键机密,访问和改变也无所谓,但是,因为有些属性和方法,它们对于外部来说,是无关的没用的,但是对于我自己这个类来说,是必要的,因为可能在我自己这个类中要使用它们,这个时候,进行隐藏,不让外部看,好处就是,如果将这些不必要的内容也暴露给外部的话,那么在使用的时候,使用者会被迷惑,因为这个东西对他没用,但是又可以调用,访问,而且他又不知道又没有用,但是如果进行隐藏,不给外部查看,那么就很清晰了,因为这样一来,只要是对外暴露的属性方法,都是有用的,你想一下,JDK的类库里面的那些类,比如String类,对外暴露的属性和方法,哪个是无用的?这也是一种良好的编程习惯和规范。封装是人们对现实世界中解决问题时,为了进行简化问题,对研究的对象所采用的一种方法,一种信息屏蔽技术。教师提示学生做好上机课准备以小组为单位做好上课前计算机的协同调试工作课程导入:使学生了解学习内容学生回顾相关知识点,回答问题教师引导学生思考学生学习、操作实现任务小组内学习交流教师带领学生总结完成任务的办法引导着让做得好的学生说出自己操作的过程时间教学环节及主要内容师生活动40分钟20分钟10分钟三、教师指导,突破关键单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时候这也是个不错的选择。但实际上,一个网站是并发的,并且有可能是存在大量并发操作的。如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统的精力将会很多的放在维护链接上而非直接查询操作上。这显然是不可取的。如果我们能够保证系统中自始至终只有唯一一个数据库连接对象,显然我们会节省很多内存开销和cpu利用率。这就是单件模式的用途。当然单件模式不仅仅只用于这样的情况。在《设计模式:可复用面向对象软件的基础》一书中对单件模式的适用性有如下描述:1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。关于Instance类应该如何设计:如上面叙述,我们保证单件模式类是我们取得单件实例的唯一访问点。那么我们应该保证在程序中尽量避免允许创建Instance实例。通过将构造函数声明为private可以防止程序员通过new关键字调用构造上函数创建对象。并且在Instance类中创建getXXX()方法调用构造函数并返回具体Instance实例。具体代码如下:[java]classInstance{privateInstance(){}publicstaticInstancegetSelf(){returnnewInstance();}}//懒汉式classLSingle{privatestaticInstance_instance=null;privateLSingle(){}publicstaticInstancegetInstance(){if(_instance==null){synchronized(LSingle.class){_instance=Instance.getSelf();}}return_instance;}}//饿汉式classESingle{privatestaticInstance_instance=Instance.getSelf();privateESingle(){}publicstaticInstancegetInstance(){return_instance;}}下面对单件模式的懒汉式与饿汉式进行简单介绍:1、饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。2、懒汉式:当程序第一次访问单件模式实例时才进行创建。如何选择:如果单件模式实例在系统中经常会被用到,饿汉式是一个不错的选择。反之如果单件模式在系统中会很少用到或者几乎不会用到,那么懒汉式是一个不错的选择。四、分析归纳,实际操作1、对象封装的要素;2、按实际情况进行对象的封装。五、总结反馈1、教师评价反馈学生操作情况;2、通过互动进行总结针对学生操作过程中出现的问题,总结说明操作要点让做得突出的学生总结归纳提出新问题,进一步学习web站点的搭建根据学生操作情况,教师进行总结,并演示讲授新的操作要点——虚拟目录的使用学生操作总结学生操作情况提出思考问题,进一步熟练Web站点的搭建时间教学环节及主要内容师生活动15分钟20分钟六、思考与练习思考:如何实现双向发送消息的实现思考?对象通常表示真实世界系统中的事情,而系统需要协作以完成共同的任务。协作的事务和人互相发送消息。例如,这些消息包括,我们对家人和朋友所说的事情、登录网站阅读的电子邮件、公共汽车上的广告贴画、电视中的娱乐节目和动画片、交通指示灯信号、笔记本电脑的电源指示灯,甚至是我们穿的衣服、说话的语气和姿态——这些都是某种类型的消息。使得这些消息有用的是它们遵守的协议,而这些协议是我们对消息意义的解释。一个明显的例子就是国际上就“红灯停,绿灯行”达成的一致。软件对象也需要一致的协议,以便能互相通信。思考:高内聚、松耦合?内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。小组间实现交流互访在教师的引导下,实现多个类设计完成内聚和耦合时间教学环节及主要内容师生活动七、练习总结、布置作业针对练习情况,辅导、总结,布置课后作业。布置课后作业面向对象中——继承与多态教案一、教学概要课题名称面向对象程序设计理论教学时间2课时教学对象13级计算机应用技术实践教学时间4课时教学分析定位与作用本次课主要学习继承和多态的含义以及实现方法,继承与多态在面向对象程序设计中的理解和运用。学习状态学生刚学习过程序设计的一些基础知识以及流程控制知识,具备基本的程序设计能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学目标技术理论知识理解继承和多态实际操作技能利用java完成继承和多态的程序设计职业素养培养学生自主学习能力以及认真学习的态度教学重难点关键点重点:1.类继承在子类中的定义(不拷贝父类的属性与方法)和子类对象(拷贝父类的属性和方法)两个层次之间的区别。2.Object定义的equal与hashcode方法的含义与一些类覆盖后的转义。难点:继承在面向对象程序设计中地位的理解。多态方法之间的关系——委托调用而不是方法实现的简单拷贝。多态常见错误。组织形式教学方法以班级与小组相结合的形式组织教学,主要采用案例教学法中任务教学法。教学准备设备工具多媒体教室材料电子课件、学生实训报告教学环境东206教学小结

二、教学设计时间教学环节及主要内容师生活动3分钟1分钟6分钟教学组织:做好机房上课准备工作,组织好学生就位、开机,下发学习材料,环视学生,注意学生精神状态,组织教学。一、复习提问,导入任务(一)导入任务:我们知道,在现实生活中,每个人扮演多种角色,那么我们的程序是如何做到的呢?。 本次课,我们的任务就是:继承和多态。(二)复习提问:什么是类设计的标准?二、学习准备,解析任务要完成任务,我们先清楚一下我们需要解决哪些问题。具体如下:1)类定义是什么?2)如何让对象有多种状态?教师提示学生做好上课准备教师导入并提出任务三、实践操作,完成任务我们清楚并学习了与任务相关的技术理论知识,解析并明确了任务的实训目标及内容。下面以小组为单位,分组学习、研究1.继承和组合的概念在新类里简单地创建原有类的对象。我们把这种方法叫作“组合”,因为新类由现有类的对象合并而成。我们只是简单地重复利用代码的功能,而不是采用它的形式。第二种方法是创建一个新类,将其作为现有类的一个“类型”。我们可以原样采取现有类的形式,并在其中加入新代码,同时不会对现有的类产生影响。这种魔术般的行为叫作“继承”(Inheritance),涉及的大多数工作都是由编译器完成的。对于面向对象的程序设计,“继承”是最重要的基础概念之一。对于组合和继承这两种方法,大多数语法和行为都是类似的(因为它们都要根据现有的类型生成新类型)。2.组合也就是一个类的对象是另外一个类的成员,一般的程序都有组合的意味,只不过是基本数据类型是成员变量,下面请看具体的例子classHead{Head(){System.out.println("head");}}classBody{Body(){System.out.println("body");}}classPerson(){Headh=null;Bodyb=null;Person()//人是由头和身体组成的,Head和Body的对象是Person的一部分{h=newHead();b=newBody();}}3.继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着及其重要的作用,好像没听说哪个面向对象的语言不支持继承classPerson{privateStringname=null;privateintage=0;publicPerson(Stringn,inta){name=n;age=a;}intgetAge(){returnage;}StringgetName(){returnname;}voidgetDescription(){System.out.println("name:"+name+"/t"+"age:"+age);}}classStudentextendsPerson{privateStringstudno=null;publicStudent(Stringn,Stringno,inta){super(n,a);studno=no;}}说明:Student类中有三个成员变量name,age,studno和一个方法getDescription();注意:子类继承了父类的所有变量和函数,只是子类不能访问父类的private类型的变量和函数,其实privae类型的变量还是继承到子类中的4.无论还是继承,都允许我们将子对象置于自己的新类中。大家或许会奇怪两者间的差异,以及到底该如何选择。如果想利用新类内部一个现有类的特性,而不想使用它的接口,通常应选择组合。也就是说,我们可嵌入一个对象,使自己能用它实现新类的特性。但新类的用户会看到我们已定义的接口,而不是来自嵌入对象的接口。考虑到这种效果,我们需在新类里嵌入现有类的private对象。有些时候,我们想让类用户直接访问新类的组合。也就是说,需要将成员对象的属性变为public。成员对象会将自身隐藏起来,所以这是一种安全的做法。而且在用户知道我们准备合成一系列组件时,接口就更容易理解。car(汽车)对象便是一个很好的例子:classEngine{publicvoidstart(){}publicvoidrev(){}publicvoidstop(){}}classWheel{publicvoidinflate(intpsi){}}classWindow{publicvoidrollup(){}publicvoidrolldown(){}}classDoor{publicWindowwindow=newWindow();publicvoidopen(){}publicvoidclose(){}}publicclassCar{publicEngineengine=newEngine();publicWheel[]wheel=newWheel[4];publicDoorleft=newDoor(),right=newDoor();//2-doorCar(){for(inti=0;i<4;i++)wheel[i]=newWheel();}publicstaticvoidmain(String[]args){Carcar=newCar();car.left.window.rollup();car.wheel[0].inflate(72);}}///:~由于汽车的装配是故障分析时需要考虑的一项因素(并非只是基础设计简单的一部分),所以有助于客户程序员理解如何使用类,而且类创建者的编程复杂程度也会大幅度降低。如选择继承,就需要取得一个现成的类,并制作它的一个特殊版本。通常,这意味着我们准备使用一个常规用途的类,并根据特定的需求对其进行定制。只需稍加想象,就知道自己不能用一个车辆对象来组合一辆汽车——汽车并不“包含”车辆;相反,它“属于”车辆的一种类别。“属于”关系是用继承来表达的,而“包含”关系是用组合来表达的。5.protected现在我们已理解了继承的概念,protected这个关键字最后终于有了意义。在理想情况下,private成员随时都是“私有”的,任何人不得访问。但在实际应用中,经常想把某些东西深深地藏起来,但同时允许访问衍生类的成员。protected关键字可帮助我们做到这一点。它的意思是“它本身是私有的,但可由从这个类继承的任何东西或者同一个包内的其他任何东西访问”。也就是说,Java中的protected会成为进入“友好”状态。我们采取的最好的做法是保持成员的private状态——无论如何都应保留对基础的实施细节进行修改的权利。在这一前提下,可通过protected方法允许类的继承者进行受到控制的访问:importjava.util.*;classVillain{privateinti;protectedintread(){returni;}protectedvoidset(intii){i=ii;}publicVillain(intii){i=ii;}publicintvalue(intm){returnm*i;}}publicclassOrcextendsVillain{privateintj;publicOrc(intjj){super(jj);j=jj;}publicvoidchange(intx){set(x);}}///:~可以看到,change()拥有对set()的访问权限,因为它的属性是protected(受到保护的)。6.再论合成与继承在面向对象的程序设计中,创建和使用代码最可能采取的一种做法是:将数据和方法统一封装到一个类里,并且使用那个类的对象。有些时候,需通过“组合”技术用现成的类来构造新类。而继承是最少见的一种做法。因此,尽管继承在学习OOP的过程中得到了大量的强调,但并不意味着应该尽可能地到处使用它。相反,使用它时要特别慎重。只有在清楚知道继承在所有方法中最有效的前提下,才可考虑它。为判断自己到底应该选用组合还是继承,一个最简单的办法就是考虑是否需要从新类上溯造型回基础类。若必须上溯,就需要继承。但如果不需要上溯造型,就应提醒自己防止继承的滥用。但只要记住经常问自己“我真的需要上溯造型吗”,对于组合还是继承的选择就不应该是个太大的问题教师以提问的方式考察学生学习情况学生做答教师总结并给出正确引导及解释针对学生理解有困难的问题,教师讲授,且借助图示分析,便于学生理解时间教学环节及主要内容师生活动10分钟完成任务的操作过程,并实践操作,完成任务。我们看哪个小组组织得好,完成任务快,出错少。时间教学环节及主要内容师生活动2分钟5分钟(四)、学生反思,完成任务学生总结、完善任务操作,进一步理解、应用继承。四、教学小结,拓展思考本次课我们学习了继承和多态的含义、功能,重点介绍继承的实现。通过本次课的学习,学生自主学习的能力得到了进一步地锻炼,更加熟悉任务教学法,而且小组的协作能力得到了提升。拓展思考:1.如何进行方法的重写和重载?2.类设计中如何进行层次提升?学生修正操作,完成任务教师提出思考问题学生课下进行拓展思考,

面向对象下(接口)教案一、教学概要课题名称面向对象程序设计理论教学时间2课时教学对象13级计算机应用技术实践教学时间4课时教学目标定位与作用本次课主要学习接口的含义以及实现方法,确接口在Java面向对象程序设计与实践中的地位和作用。学习状态学生刚学习过程序设计的一些基础知识以及类的定义和实现,具备基本的程序设计能力,理解能力、自主学习能力初步有所提高,有基本的团队意识,分析、解决问题的能力有待于培养、提高。教学重难点关键点重点:接口如何定义、实现与使用。难点:接口在Java面向对象程序设计中的作用。组织形式教学方法以班级与小组相结合的形式,主要采用任务引导教学法组织教学。教学准备设备工具多媒体教室材料电子课件、实训报告、网络素材教学环境东206教学小结

二、教学设计时间教学环节及主要内容师生活动教学组织:做好机房上课准备工作,组织好学生就位、开机,下发学习材料,环视学生,注意学生精神状态,组织教学。一、导入任务我们知道,在面向对象中利用继承实现代码重写,利用接口还有更好的方法。这样可以实现多重继承 本次课,我们的任务就是:定义接口。二、学习准备,解析任务1.接口的含义(10min)。2.接口的实现(10min)。3.接口的使用(10min)。4.接口、接口实现、接口使用三者之间的统一关系与常见错误(25min)。5.接口在Java面向对象程序设计与实践中的作用(25min)。三、实践操作,完成任务教师提示学生做好上课准备教师导入并提出任务时间教学环节及主要内容师生活动有时候,我们可能想要构造一个很抽象的父类对象,它可能仅仅代表一个分类或抽象概念,它的实例没有任何意义,因此不希望它能被实例化。例如:有一个父类“水果(Fruit)”,它有几个子类“苹果(Apple)”、“橘子(Orange)”、“香蕉(Banana)”等。水果在这里仅仅只是作为一个分类,显然水果的实例没有什么意义(就好像一个人如果告诉你他买了一些水果但是却不告诉你是苹果还是橘子,你很难想象他到底买的是什么。)。而水果类又要能被子类化,这就要求我们使用抽象类(abstractclass)来解决这个问题。在java中,通过在class关键字前增加abstract修饰符,就可以将一个类定义成抽象类。抽象类不能被实例化。例如:定义抽象类水果(Fruit)publicabstractclassFruit{……}如果我们试图用以下语句来获得一个实例,将无法编译成功。Fruitfruit=newFruit();而我们仍然可以构造水果类的子类,如:子类“苹果(Apple)”publicclassAppleextendsFruit{……}子类“橘子(Orange)”publicclassOrangeextendsFruit{……}这样就达到我们的目的了。抽象类除了能象普通类一样可以拥有一般的属性和方法,也可以拥有抽象方法(abstractmethod)。例如:抽象类“形状(Shape)”拥有抽象方法draw()。publicabstractclassShape{……publicabstractvoiddraw();……}抽象方法与抽象的行为相对应,通常是这个行为对父对象没有意义,而子对象有具体动作。例如方法draw()对于类Shape没有意义,而类Shape的子类矩形(Rectangle)的方法draw()可以有实际的动作(根据矩形的四个顶点画出矩形的四个边),子类圆(Circle)的方法draw()也可以有实际的动作(根据圆心和半径画出圆周)。抽象类可以有抽象方法也可以没有抽象方法;但是如果一个类有抽象方法,那这个类只能定义为抽象类。如果按照以下代码类“形状(Shape)”仍然拥有抽象方法draw(),但没有定义为抽象类,将会编译失败。publicclassShape{……publicabstractvoiddraw();……}抽象方法还有一个特点是,它强迫子类要么仍然保持抽象性(即不具体实现该方法并仍然定义为抽象类),要么具体表现出这个方法的行为(实现具体的动作或者通过抛出UnsupportedOperationException异常来表明不支持该行为)。这样也可以强化多态性。上面简要分析了抽象类,下面谈谈接口(interface)。java语言使用关键字interface定义一个接口。接口也是抽象对象,它甚至比抽象类更抽象。接口中的方法都是抽象方法。一个接口可以继承其他接口;一个类通过关键字implements声明要实现一个接口,并具体实现接口的方法。例如:有一个接口InterfaceA,Java代码publicinterfaceInterfaceA{voidmethodA();}类ClassA实现接口InterfaceA。Java代码publicclassClassAimplementsInterfaceA{publicvoidmethodA(){System.out.println("methodAofClassAimplementsInterfaceA");}}如果是抽象类实现一个接口,那么抽象类中可以不具体实现接口的方法(保持其抽象性),而由其子类去实现。抽象类ClassB实现接口InterfaceA,但是没有具体实现方法methodA(),Java代码publicabstractclassClassB{}子类ClassBSub实现接口InterfaceA,但是没有具体实现方法methodA(),Java代码publicclassClassBSub{publicvoidmethodA(){System.out.println("methodAofClassBSubthesubclassofClassB");}}接口和抽象类显著的共同点是接口和抽象类都可以有抽象方法。接口和抽象类的不同点有:(1)抽象类可以有实例变量,而接口不能拥有实例变量,接口中的变量都是静态(static)的常量(final)。(2)抽象类可以有非抽象方法,而接口只能有抽象方法。java中,类与类之间是不能多继承的。java之所以禁止类与类之间的多继承是因为多继承有很大的缺点。多继承虽然能使子类同时拥有多个父类的特征,但是其缺点也是很显著的,主要有两方面:(1)如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该变量时将产生歧义,无法判断应该使用哪个父类的变量。例如:类ClassA:publicclassClassA{protectedintvarSame=0;}类ClassB:publicclassClassB{protectedintvarSame=1;}子类ClassC:(假设允许类与类之间多继承)publicclassClassCextendsClassA,ClassB{publicvoidprintOut(){System.out.println(super.varSame);}publicstaticvoidmain(String[]args){ClassCclassC=newClassC();classC.printOut();}}上面程序的运行结果会是什么呢?输出0还是1?(2)如果在一个子类继承的多个父类中拥有相同方法,子类中有没有覆盖该方法,那么调用该方法时将产生歧义,无法判断应该调用哪个父类的方法。例如:类ClassA:publicclassClassA{publicvoidprintOut(){System.out.printl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论