第3章 面向对象上教学设计文档格式.docx

上传人:b****6 文档编号:21587184 上传时间:2023-01-31 格式:DOCX 页数:15 大小:138.06KB
下载 相关 举报
第3章 面向对象上教学设计文档格式.docx_第1页
第1页 / 共15页
第3章 面向对象上教学设计文档格式.docx_第2页
第2页 / 共15页
第3章 面向对象上教学设计文档格式.docx_第3页
第3页 / 共15页
第3章 面向对象上教学设计文档格式.docx_第4页
第4页 / 共15页
第3章 面向对象上教学设计文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第3章 面向对象上教学设计文档格式.docx

《第3章 面向对象上教学设计文档格式.docx》由会员分享,可在线阅读,更多相关《第3章 面向对象上教学设计文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

第3章 面向对象上教学设计文档格式.docx

教学方式

教学采用教师课堂讲授为主,使用教学PPT讲解

第一课时

(面向对象的概念、类与对象、类的定义、对象的创建与使用)

面向对象的概念

✧什么是面向对象

面向对象是一种符合人类思维习惯的编程思想。

现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。

在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。

✧面向对象的好处

同面向过程进行比较,面向对象的好处是:

•代码的复用性提高

•使用者无须关心具体的实现细节

•转变程序员的角色,更加符合人的思维习惯

✧面向对象的特征

•封装性:

•继承性:

•多态性:

类与对象的关系

✧用具体的例子引导。

例如:

玩具和玩具模型的关系。

在上面的图中,玩具模型可看作是一个类,一个个玩具可看作对象。

玩具是由玩具模型创建出来的,同理,对象是根据类创建出来的,并且一个类可以创建多个对象。

✧总结

类用于描述多个对象的共同特征,它是对象的模板。

对象用于描述现实中的个体,它是类的实例。

类的定义

✧为什么定义类

由于对象是虚拟出来的东西,是看不见摸不着的,我们需要在程序中使用对象,就必须找到描述对象的方式,定义一个类就可以解决这个问题。

✧类的定义

将一系列特征相似的对象中的共同属性和方法抽象出来用一段特殊的代码来进行描述,这段特殊的代码我们就称之为一个类。

类使用class关键字来进行定义,后面跟上类的名称。

✧定义一个类,并针对这个类进行讲解。

classPerson{

intage;

//定义int类型的变量age

//定义speak()方法

voidspeak(){

System.out.println("

大家好,我今年"

+age+"

岁!

"

);

}

}

其中,Person是类名,age是成员变量,speak()是成员方法。

在成员方法speak()中可以直接访问成员变量age。

对象的创建与使用

✧对象的产生

应用程序想要完成具体的功能,仅有类是远远不够的,还需要根据类创建实例对象。

在Java程序中可以使用new关键字来创建对象,具体格式如下:

类名对象名称=new类名();

例如,创建Person类的实例对象代码如下:

Personp=newPerson();

其中“newPerson()”用于创建Person类的一个实例对象,“Personp”则是声明了一个Person类型的变量p。

中间的等号用于将Person对象在内存中的地址赋值给变量p,这样变量p便持有了对象的引用。

在内存中变量p和对象之间的引用关系如下图所示。

✧对象的使用

在创建Person对象后,可以通过对象的引用来访问对象所有的成员,具体格式如下:

对象引用.对象成员

通过一段代码来演示对象的使用情况。

Personp1=newPerson();

Personp2=newPerson();

p1.age=18;

p1.speak();

p2.speak();

执行完毕后,对象在内存中的状态如图所示。

✧成员变量的初始化

当一个对象被创建时,Java虚拟机会对其中各种类型的成员变量自动进行初始化赋值。

基本数据类型初始化值为0,引用数据类型初始化值为null,具体如下表所示。

✧对象的生命周期

每个创建的对象都有自己的生命周期,对象只能在其有效的生命周期被使用。

当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。

对象变成垃圾的第一种情况:

对象变成垃圾的第二种情况:

第二课时

(类的设计、类的封装、构造方法的定义和重载、this关键字)

类的设计

在Java中,对象是通过类创建出来的。

因此,在程序设计时,最重要的就是类的设计。

例如,要在程序中描述一个学校所有学生的信息,可以先设计一个学生类(Student),在这个类中定义两个属性name、age分别表示学生的姓名和年龄,定义一个方法introduce()表示学生做自我介绍,具体代码如下:

publicclassStudent{

Stringname;

publicvoidintroduce(){

//方法中打印属性name和age的值

System.out.println("

大家好,我叫"

+name+"

我今年"

类的封装

✧为什么要封装类

根据上述定义好的Student类创建对象,并访问对象成员,如下所示:

publicclassExample03{

publicstaticvoidmain(String[]args){

Studentstu=newStudent();

//创建学生对象

stu.name="

李芳"

;

//为对象的name属性赋值

stu.age=-30;

//为对象的age属性赋值

stu.introduce();

//调用对象的方法

程序的运行结果如下:

当把程序中的年龄赋值为一个负数-30时,虽然程序不会报错,但在现实生活中明显是不合理的。

为了解决年龄不能为负数的问题,在设计一个类时,应该对成员变量的访问作出一些限定,不允许外界随意访问。

这就需要实现类的封装。

✧什么是类的封装

所谓类的封装是指在定义一个类时,将类中的属性私有化,即使用private关键字来修饰,私有属性只能在它所在类中被访问,为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取属性值的getXxx方法和设置属性值的setXxx方法。

构造方法的定义

✧为什么需要构造方法

实例化一个类的对象后,如果要为这个对象中的属性赋值,则必须要通过直接访问对象的属性或调用setXxx方法的方式才可以。

如果需要在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现。

✧构造方法的定义

•函数的名称与类相同

•没有返回值类型声明

•不能在方法中使用return语句返回一个值

注意:

没有返回值类型声明不等同于“void”,void也是一种返回值类型声明,那就是没有返回值。

构造方法的重载

与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。

构造方法的一些细节

•每一个类都至少有一个构造函数,如果在定义类时,没有显式地声明任何构造函数,系统会自动为这个类创建一个无参的构造函数,里面没有任何代码。

•在定义构造方法时,如果没有特殊需要,都应该使用public关键字修饰。

this关键字

✧this关键字的作用

可以解决成员变量与局部变量名称冲突的问题。

✧this关键字的三种用法

•通过this关键字可以明确地去访问一个类的成员变量

•通过this关键字调用成员方法。

•构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其它方法一样去调用构造方法,但可以在一个构造方法中使用“this([参数1,参数2…])”的形式来调用其它的构造方法。

✧使用this时需要注意的问题

•只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用。

•在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。

•不能在一个类的两个构造方法中使用this互相调用。

第三课时

(垃圾回收、静态变量、静态方法、静态代码块、单例模式)

垃圾回收机制

对象在没有任何引用可以到达时,生命周期结束,成为垃圾。

垃圾对象是不会被马上回收的,只有JVM检测到内存中的垃圾堆积到一定程度时才会回收。

如果我们不希望等到这个时候回收,可以使用System.gc()来人工回收垃圾。

当一个对象在内存中被释放时,它的finalize()方法会被自动调用。

static关键字

static关键字可以修饰类的成员,如成员变量、成员方法以及代码块等

静态变量

✧定义

被static修饰的变量称为静态变量。

✧引用方式

静态变量可以使用“类名.变量名”的方式访问

✧特点

静态变量在类加载的时候就完成了初始化,它可以被所有实例所共享。

✧注意的问题

static关键字只能用于修饰成员变量,不能用于修饰局部变量。

静态方法

被static修饰的方法称为静态方法。

静态方法可以使用“类名.方法名”的方式访问。

•静态方法内部不能直接访问外部非静态的成员。

•在静态方法内部,只能通过创建该类的对象来访问外部的非static的方法。

•在静态方法中,不能使用this关键字。

静态代码块

被static修饰的代码块称为静态代码块。

静态代码块在类加载的时候就执行了,它一般用于初始化类的成员变量。

单例模式

✧什么是设计模式

针对某一问题的最佳解决方案,我们在程序中称之为设计模式。

设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。

设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免得我们自己再去思考和摸索。

✧单例设计模式的定义

所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

✧单例设计模式的特征

•将构造方法私有化。

•对外提供一个公有的get方法,让别人通过此方法来获得实例。

•由于不能创建对象,所以get方法必须静态,这样别人才能使用“类名.方法名”的方式访问。

•需要保证单例,所以要提供一个静态变量记住一个实例,用于返回。

•该实例应该私有,禁止外界通过直接访问进行改动。

✧单例模式的示例代码

下面是一个实现了单例设计模式的程序。

classSingle{

//自己创建一个对象

privatestaticSingleINSTANCE=newSingle();

privateSingle(){}//私有化构造方法

//提供返回该对象的静态方法

publicstaticSinglegetInstance(){

returnINSTANCE;

第四课时

(成员内部类、静态内部类、方法内部类、Java的帮助文档)

成员内部类

在类中定义的类称为成员内部类。

在Java中,允许在一个类的内部定义类,这样的类称作内部类

外部类名.内部类名变量名=new外部类名().new内部类名();

✧成员内部类特点

内部类可以直接访问外部类的成员,而外部类不能直接访问内部类的成员。

静态内部类

被static修饰的内部类称为静态内部类。

外部类名.内部类名变量名=new外部类名.内部类名();

•非静态的内部类中不能声明静态的成员

•static修饰的内部类中可以定义非static修饰的成员

•static修饰的内部类中不能访问外部非static的成员

方法内部类

在成员方法中定义的类称为方法内部类。

内部类名变量名=new内部类名();

•方法内部类只能在当前方法中使用

•方法内部类不能访问方法中定义的局部变量,除非这个局部变量被声明为final

Java帮助文档

✧文档注释的格式

文档注释以“/**”开始,以“*/”标志结束。

✧生成文档的命令

javadoc-d.-version-authorPerson.java

✧文档注释中某些特殊的标记说明

@author:

用于对类的说明,表示这个程序的作者

@version:

用于对类说明,表示这个程序的开发版本号

@param:

用于对方法的说明,表示方法上定义的参数以及参数对应的说明

@return:

用于对方法的说明,表示方法的返回值代表的意义

✧JDK帮助文档的分类

•Oracle公司官方发布的HTML格式的JDK帮助文档,可以从Oracle公司的官方网站下载。

•Java爱好者根据官方文档制作而成的CHM格式的JDK帮助文档,它具有独特的搜索功能和不同的语言版本,被许多开发者所钟爱。

第五课时

上机练习1(总结,测试题)

1、总结本章内容

2、通过题库发放相关测试题,检查学生掌握情况。

上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。

上机一:

(考察知识点为类的定义)

请按照以下要求设计一个Student类。

要求如下:

1)Student类中定义两个成员变量name和age,分别表示学生的姓名和年龄,其中,变量name是String类型,初始值为“张三”,变量age是int类型,初始值为19。

2)Student类中定义一个成员方法speak(),表示学生说话的行为,在方法中访问name和age两个成员变量,输出学生的姓名和年龄。

上机二:

(考察知识点为类的封装)

1)针对上机一中的Student类进行修改,使用封装的方式,将name属性和age属性使用private关键字修饰为私有属性,并对外提供公有的getName()、setName(Stringn)、getAge()和setAge(inta)方法。

2)在setAge(inta)方法中对传入的参数进行检查,如果传入的参数为负数,则输出“设置的年龄不合法”,如果不为负数,则输出设置的age值。

3)定义一个测试类,在main()方法中创建Student对象,并调用对象的setName(Stringn)和setAge(inta)方法来设置的name属性和age属性值,然后并调用speak()方法输出相应信息。

上机三:

(考察知识点为构造方法重载)

1)在Student类中定义三个重载的构造方法,一是无参的构造方法,二是接收一个String类型的构造方法,该方法用于为name属性赋值,三是接收两个参数的构造方法,该方法用于为name、age属性赋值。

2)定义一个测试类,在mian()方法中创建三个Student对象,并在创建对象时为name、age属性赋值。

第六课时

上机练习2(测试题)

(考察知识点为单例模式)

请按照以下要求设计一个单例模式的Singleton类。

1)为了确保外界不能创建该类的实例对象,需要将该类的构造方法设置私有,即使用private关键字修饰。

2)由于外界不能创建实例对象,我们只有在定义的类中创建该类的实例对象,并且需要定义一个静态变量INSTANCE引用此实例对象,为了让外界不能通过Singleton.INSTANCE的方式访问该变量,还需要将该变量使用private关键字修饰。

3)为了让外界使用INSTANCE实例对象,还需提供一个静态方法将这个实例对象返回。

(考察知识点为方法内部类)

请按照以下要求设计一个Outer类。

1)定义一个外部类Outer,并在该类中定义一个静态内部类Inner。

2)在内部类中定义一个静态变量staticField和一个静态方法staticMethod(),并将该变量的值设置为"

静态内部类的静态变量"

,在该方法中输出"

静态内部类的静态方法"

3)定义一个测试类,在main()方法中输出staticField的值,并且调用静态方法staticMethod()。

思考题和习题

见教材第三章后的习题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1