Presentation is loading. Please wait.

Presentation is loading. Please wait.

单元二:面向对象程序设计 任务二:借书卡程序设计.

Similar presentations


Presentation on theme: "单元二:面向对象程序设计 任务二:借书卡程序设计."— Presentation transcript:

1 单元二:面向对象程序设计 任务二:借书卡程序设计

2 教学目标 能力目标 知识目标 会定义和使用类的方法; 类的方法组成部分; 能够理解变量作用域; 定义和使用类的方法;
定义包和导入包的关键字; 构造方法实现对象成员的初始化; 方法重载; 对构造方法进行重载 。 能力目标 会定义和使用类的方法; 能够理解变量作用域; 会创建包组织Java工程; 能够掌握构造方法; 能够掌握方法重载 。

3 教学内容 1 任务陈述 2 知识准备 3 任务实施 4 任务拓展 5 任务实训

4 1. 任务陈述 任务描述: 借书卡是学生日常生活重要组成部分。每张借书卡信息包含账号、持卡人姓名、身份证号码、地址、已借书数、可借书数、本次借书数、本次还书数。使用借书卡还可以借书、还书和查询。要求:根据持卡人不同操作,显示不同信息。当借书操作后,显示本次借书数及已借书数;当还书操作时,显示本次还书数和已借书数。 运行结果:

5 2.4类的方法

6

7

8

9

10

11

12

13

14

15 2.5 构造方法

16

17

18

19

20 2. 知识准备 构造方法分类 构造方法根据参数进行了分类:无参构造方法和有参构造方法。 1. 无参构造方法
例如: public class People{ public People() { ……//使用固定值初始化成员变量 } 那么在含有main方法的测试类中实例化People对象时: People p1= new People(); 注意:无参构造方法可以不写,类中默认含有一个无参构造方法,并且该构造方法的方法体内没有语句。而使用默认值初始化对象成员变量,数值型变量初始为0,布尔型初始为false,字符型初始为“\0”,字符串初始为null;

21 2. 知识准备 2. 有参构造方法 例如: public class People{ int age; String name;
public People(int myAge,String myName) { age=myAge; name=myName; } 那么在含有main方法的测试类中实例化People对象时: People p1= new People(20,”zhangsan”); 上面的实例化就可以看出是把成员变量进行了动态的赋值。 注意:当定义了有参的构造方法后,无参构造方法将不再存在,如果还想使用无参的构造方法进行实例化对象,就需要显性的写出无参构造方法。

22 2. 知识准备 2.3 方法重载 2.3.1 方法重载的概念 参数不同是区分重载方法的关键因素,参数不同主要包括以下方面的不同:
方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,所谓的不同是指:参数的个数不同,参数类型不同,参数的顺序不同。返回类型不能用来区分重载的方法。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载。当一个重载方法被调用时方法名是一样的,因此Java用参数的类型、(或)数量、(或)顺序来选择实际调用的重载方法。 例如:System.out.println();里面的println这个方法就是重载方法。 注意:方法的重载要使用恰当,当一个动作(方法)分别接受不同的指令(参数)产生不同的效果,可以使用。但过度的使用将会降低程序的可读性。 参数不同是区分重载方法的关键因素,参数不同主要包括以下方面的不同: 参数类型不同。例如: public void method(String s); public void method(int s); 参数个数不同。例如: public void method(String s,int i); 参数顺序不同。例如: public void method(int i,String s);

23 2. 知识准备 【实例2-4】求圆形的面积,要求用户输入任何类型的数据后都要能得到最终的面积值。
public class MethodOverloading { final float PI=3.14; double calArea(double r) { return PI * r * r; } float calArea (float r) { float calArea(int r) { folat calArea (String r) { float i=Float.parseInt(r); 可以发现方法重载主要目的是为了满足在不同输入的情况下依然可以得到进行相同或相似的处理。在编程上有些麻烦,但是在使用性和灵活性得到了加强。由于实现了Java在编译时的方法的多种状态,所以有时也成为静态多态。

24 2. 知识准备 构造方法重载 不仅普通方法可以重载,构造方法也可以重载。只要构造方法的参数个数不同,或是类型不同,便可定义多个名称相同的构造方法。 【实例2-5】利用构造函数重载创建对不同变量初始化的对象 public class Rectangle { double width; double length; Rectangle (){ //直接初始化为数值 width = 1; length=5; } Rectangle (double x){//把两个变量初始化为相同传入值 width = x; length =x; Rectangle (double w,double len) {//分别对两个属性初始化不同的值 width = w; length=len;

25 2. 知识准备 2.6 变量的作用域 变量声明的位置决定变量作用域。Java 变量的范围有四个级别:类级、对象实例级、方法级、块级。
类级变量又称全局级变量,在对象产生之前就已经存在,就是static 修饰的静态变量。 对象实例级,就是成员变量,它可以使用在整个类和对象中。 方法级:就是在方法内部定义的变量,就是局部变量。 块级:就是定义在一个块内部的变量,变量的生存周期就是这个块, 出了这个块就消失了,比如if、for语句的块。 注意:后面两个级别变量作用域的判断只需要记住:在变量声明的地方找到离它最近的一对大括号就是它的作用域,出了这对大括号就不能用了。

26 2. 知识准备 2.5 定义包和导入包的关键字 包是Java提供的文件组织形式,采用类似于文件夹的形式。包提供了访问级别控制和命名空间管理。不同的包中允许出现相同名字的文件。 1. 定义包 格式:package <顶层包名>[.子包名1][.子包名2]…[.子包名n]; 例如:依照地域范围+制作人+功能分类 来定义包 package com.cn.can.dao 2. 导入包 格式:package <顶层包名>[.子包名1][.子包名2]…[.类名|*]; 例如:导入系统类库中的Date表示日期的类。 import java.util.Date; 注意: 在Java中,java.lang包不需要使用import手动导入,系统自动位置导入,因此在该保内存放了很多常用的基础的类,例如Math。

27 3. 任务实施 1. 解决步骤 本任务中行为有借书、还书和查询。在BookCard类分别定义了3个方法borrow(int);TheReturn(int);query()。 打开Eclipse,创建BookCard类; 在类大括号内进行属性定义; 在类的大括号内定义3个方法,表示借书、还书和查询; 在BookCard类的main方法中,创建一个BookCard类的对象; 利用创建的BookCard对象,使用对象名.方法的形式调用方法,完成具体的功能;

28 3. 任务实施 2.任务代码 public class BookCard { public void borrow(int cash) {
if (Remain >= cash) { Remain = Remain - cash; //省略输出语句 } public void TheReturn(int cash) { Remain = Remain + cash; public void query() { System.out.println("可借书数" + Remain);

29 4. 任务拓展 1. 任务拓展要求: 原任务中方法 borrow(int);TheReturn(int);query()都没有返回值,现在改为正确借书、还书后,返回true,否则返回false。 2. 任务拓展分析: 大部分的方法都需要有返回值,对于有返回值的方法一定要注意方法的返回值与方法体内的return语句对应起来。 例如,如果方法体内含有if-else语句,那么就应该注意返回值的问题。

30 5. 任务实训 一、实训目的 二、实训内容 三、简要提示 四、实训思考


Download ppt "单元二:面向对象程序设计 任务二:借书卡程序设计."

Similar presentations


Ads by Google