Java语言程序设计 课程教案

学科

Java语言程序设计

课题

第五章类的继承性与多态性(二)

时数

2

授课班级

05软件2-3

教学目标及要求

l       了解面向对象的编程思想

l       掌握类的定义方法

l       学习定义子类

l       掌握继承方法

教学重点:

面向对象的编程思想

教学难点:使用面向对象的思想去思考解决问题

实验仪器及教具:微机、投影仪、JDK

教学方法:      

 

 

深圳信息职业技术学院  教案    

 

备注

1.       复习前面所学的内容

2.       类的多态

3.       方法的重载

4.       例题分析讲解

5.       在具体实现中贯彻个体软件过程思想

 

 

作业:

 

 


 

深圳信息职业技术学院  教案        

第五章 类的继承性与多态性()

复习:

构造方法不能继承

v     由于父类构造方法与父类同名,子类构造方法与子类同名,所以子类无法继承父类的构造方法。

v     子类通过使用super()调用父类的构造方法

v     Super()只能出现在子类的构造方法中,并且必须是子类构造方法中的第一条语句。

 

类的多态

v     一个类中可以定义多个同名的方法,只要参数的个数和类型不同,这种现象称为类的多态。

v     类的多态是发生在一个类中。

v     类的多态性体现在方法的重载上

 

方法的重载

v     方法的重载是指对同名方法的重新定义

v     同名的不同方法可以通过不同的参数来区分

v     参数不同包括参数的个数不同或参数的类型不同

 

v     方法重载举例:

class M{

   public int Max(int x, int y){

      if(x<y) return y;

       else return x; }

   public int Max(int x, int y, int z){

      int k;

       if(x<y) k=y;

       else k=x;

       if(k<z) return z;

       else return k; }

}

 

构造方法重载

v     重载构造方法的目的是提供多种初始化对象的能力。

 

class MyClass{

       private int x, y;

       MyClass (int m){ x=m; }

       MyClass (int m, int n){ x=m; y=n; }

}

 

习题讲解

v     创建一个Fraction类执行分数运算。要求如下:

Ø      用整型数表示类的private成员变量:f1f2

Ø      提供构造方法,将分子存入f1,分母存入f2

Ø      提供两个分数相加的运算方法,结果分别存入f1f2

Ø      提供两个分数相乘的运算方法,结果分别存入f1f2

Ø      a/b的形式打印Fraction

Ø      编写主控程序运行分数运算

 

一.需求分析:

1.    根据题目的要求,本程序要写两个类,一个是类Fraction,一个是程序入口类(即包含main()方法的类)。

2.    程序的主要功能是在类Fraction中实现的。类Fraction的功能包括

l        构造一个分数

l        提供分数相加功能的实现方法

l        提供分数相减功能的实现方法

l        提供分数相乘功能的实现方法

l        提供分数相除功能的实现方法

l        a/b的形式在屏幕上输出分数

3.    程序入口类实现调用类Fraction进行各种分数运算的功能。

要求:根据上面的功能写出一个简单的需求分析文档。

 

二.设计并编写代码实现程序

1.在编写程序代码前,根据前面使用个体软件过程方法收集的数据,进行本程序的规模估计,填写规模估计表,如下:

学生Y的程序规模估计

学生      学生Y                          日期     10/7/96             

教员      老师Z                          课程      CLI               

程序

代码行

以前的功能

估计的功能

最小

平均

最大

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.学生进行编码

源程序:

class Fraction

{

    private int f1,f2;

    Fraction(int z,int m){

       f1=z;

       f2=m;

    }

    public void add(Fraction a){

       f1=f1*a.f2+a.f1*f2;

       f2=f2*a.f2;

    }

    public void sub(Fraction a){

       f1=f1*a.f2-a.f1*f2;

       f2=f2*a.f2;

    }

    public void mul(Fraction a){

       f1=f1*a.f1;

       f2=f2*a.f2;

    }

    public void div(Fraction a){

       f1=f1*a.f2;

       f2=f2*a.f1;

    }

    public void print(){

       System.out.println(f1+"/"+f2);

    }

};

public class  A3

{

    public static void main(String[] args)

    {

       Fraction x=new Fraction(1,2);

       Fraction y=new Fraction(2,3);

       x.add(y);

       x.print();

       x.sub(y);

       x.print();

       x.mul(y);

       x.print();

       x.div(y);

       x.print();

    }

}

 

3.要求学生编码结束后填写时间记录日志表,如下:

时间记录日志

 

学生

   学生Y      

日期

   10/19/05        

 

教员

   教师Z      

课程

   Java           

 

日 期

开始时间

结束时间

中断时间

净时间

活 动

备 注

C

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三.代码调试

要求学生对自己编写的代码进行复查,填写缺陷记录日志。

缺陷记录日志

学生

    学生Y    

日期

  10/19           

教员

    教师Z    

程序号

  001          

日 期

编号

类型

引入阶段

排除阶段

修复时间

相关缺陷