zoukankan      html  css  js  c++  java
  • 实验四

     

    实验四类与对象的定义及使用

    实验时间 2018-9-20

    一.理论知识:

    1、类与对象的基础概念

    类:对具有相同属性和方法的一类事物的抽象。

    对象:具体的某一事物,代表自身的一些属性和方法。

    类(对象)之间的关系:类是一种抽象的概念集合,是最基础的组织单位,作为对象的模板、合约或蓝图。类是对象的类型,使用一个通用类可以定义同一类型的对象,类中定义对象的数据域是什么以及方法是做什么的。

    关联(组合、聚合),继承,依赖、实现。

    2、使用预定义类

    (1)在java程序设计语言中,使用构造器构造新事例。构造器是一种特殊的方法,用来构造并初始化对象。

    (2)更改器前缀为set;访问器前缀为get;

    (3)构造器和类有相同的名字

    3、用户自定义类

    (1)Employee类

    (2)隐式参数与显式参数

    4、静态域与静态方法

    (1)静态域: 如果将静态域定义为static ,那么每个类中只有一个这样的域,而每一个对象对于所有的实例域都有自己的一份拷贝本。

    (2静态常量 :静态变量使用的比较少,但是静态常量却使用的比较多 。

    (3)静态方法 : 静态方法是一种不能由对象操作的方法, 例如Math类中的求取一个数的次方的pow()方法就是一个静态方法。表达式是: Math.pow(x, a),在运算时,不使用任何Math对象,换句话说,没有隐式的参数。可以认为静态方法是没有this参数的方法(在一个非静态的方法中,this参数表示这个方法的隐式参数)

    (4)main方法:我们学习java的时候,程序中大多会有一个main 方法,我们都称作程序的入口,main方法不对任何对象进行操作,事实上,在启动程序的时候,还没有任何一个对象,静态的main方法将执行并创建程序所需的对象。

    5、方法参数

    6、对象构造

    7、包

    Java允许把一个或多个类收集在一起成为一组,称作包,以便于组织任务,标准Java库分为许多包.java.langjava.utiljava,net等,包是分层次的所有的java包都在java和javax包层次内。

    8、类路径

    9、文档注释

    10、类设计技巧

    二  实验内容

    1、实验目的与要求

    (1) 理解用户自定义类的定义;

    (2) 掌握对象的声明;

    (3) 学会使用构造函数初始化对象;

    (4) 使用类属性与方法的使用掌握使用;

    (5) 掌握package和import语句的用途。

    2、实验内容和步骤

    实验1 测试以下程序,掌握文件输入输出程序设计技术(文件输入输出,教材61-62).

    import java.io.*;

    import java.util.*;

    public class FileWriteReadTest {

           public static void main(String[] args) throws IOException{

                  //写入文件演示

                  PrintWriter out = new PrintWriter("myfile.txt");

                  out.println("姓名 高数 Java 数据结构 平均成绩 总成绩");

                  out.println("张三 20 30 40 0 0");

                  out.println("李四 50 60 70 0 0");

                  out.close();//输出完毕,需要close

                  //读入文件演示

                  Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in

                  int number = 1;//行号

                  System.out.println(in.nextLine());

                  while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出

                         String line = in.nextLine();//读出myfile.txt的下一行

                         System.out.print("第"+(++number)+"行的内容: ");                

                         Scanner linescanner = new Scanner(line);//行内容建立扫描器

                         linescanner.useDelimiter(" ");//使用空格作为分隔符

                         String name = linescanner.next();

                         String math = linescanner.next();

                         String java = linescanner.next();

                         String ds = linescanner.next();

                         String avg = linescanner.next();

                         String total = linescanner.next();

                         System.out.println("name="+name+"  math="+math+"  java="+java+"  ds="+ds+"  avg"+avg+"  total="+total);

                  }

                  in.close();//读入完毕,最后需要对其进行close。

           }    

    }

     

    实验2 导入第4章示例程序并测试。

    测试程序1:

    l  编辑、编译、调试运行程序4-2(教材104页);

    l  结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;

    l  尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。

    l  参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:

      姓名      性别     java成绩

     1 import java.util.*;
     2 public class StudentTest
     3 {
     4 public static void main(String[] args)
     5    {
     6     Employee[] student = new Employee[3];
     7       System.out.println("请输入学生");
     8      
     9       @SuppressWarnings("resource")
    10     Scanner in = new Scanner(System.in); 
    11       for(int i=0;i<student.length;i++) {
    12           student[i]=new Employee(in.next(),in.next(),in.nextInt());
    13       }
    14       System.out.println("name"+" "+"sex"+" "+"javascore");
    15 
    16       for (Employee e : student)
    17          System.out.println(e.getName() +"    "+e.getSex()+"          "+e.getJavaScore());
    18    }
    19 }
    20 
    21 class Employee
    22 {
    23    private String name;
    24    private String sex;
    25    private int javascore;
    26 
    27    public Employee(String n, String s, int m)
    28    {
    29       name = n;
    30       sex = s;
    31       javascore =m;
    32    }
    33 
    34    public String getName()
    35    {
    36       return name;
    37    }
    38 
    39    public String getSex()
    40    {
    41       return sex;
    42    }
    43 
    44    public int getJavaScore()
    45    {
    46       return javascore;
    47    }
    48 }

     

    测试程序2:

    l  编辑、编译、调试运行程序4-3(教材116);

    l  结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;

    l  理解Java单元(类)测试的技巧。

    测试程序3:

    l  编辑、编译、调试运行程序4-4(教材121);

    l  结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;

    测试程序4:

    l  编辑、编译、调试运行程序4-5(教材129);

    l  结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。

    测试程序5:

    l  编辑、编译、调试运行程序4-6、4-7(教材135);

    l  结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后添加注释;

    实验3  编写长方形类Rectangle与圆形类Circle,其中Rectangle类设置私有属性:width,length;Circle类设置私有属性radius。编写Rectangle类的带参构造函数Rectangle(int width,int length), Circle类的带参构造函数Circle(int radius),编写两个类的toString方法(Eclipse可自动生成)。上述2个类均定义以下方法:

    求周长的方法public int getPerimeter()

    求面积的方法public int getArea()

    在main方法中完成以下任务:

    (1)  输入1行长与宽,创建一个Rectangle对象;

    (2)  输入1行半径,创建一个Circle对象;

    (3)  将两个对象的周长加总输出,将两个对象的面积加总输出。

     1 package shiyan;
     2 
     3 import java.util.Scanner;
     4 
     5 public class jisuan {
     6 
     7     public static void main(String[] args) {
     8         // TODO 自动生成的方法存根
     9         Scanner in=new Scanner(System.in);
    10         System.out.println("请输入长方形的长与宽:");
    11         int length=in.nextInt();
    12         int width=in.nextInt();
    13         Rectangle  a=new Rectangle(length, width);
    14         System.out.println("长方形周长:"+a.getPerimeter());
    15         System.out.println("长方形面积:"+a.getArea());
    16         System.out.println("输入圆半径:");
    17         int r=in.nextInt();
    18         Circle b=new Circle(r);
    19         System.out.println("圆的周长为:"+b.getPerimeter());
    20         System.out.println("圆的面积为:"+b.getArea());
    21         System.out.println("长方形和圆的周长之和="+(a.getPerimeter()+b.getPerimeter()));
    22         System.out.println("长方形和圆的面积和="+(a.getArea()+b.getArea()));
    23     }
    24 }
    25 class Rectangle
    26 {
    27     private int length;
    28     private int width;
    29     public Rectangle(int l,int w)
    30     {
    31         length=l;
    32         width=w;
    33     }
    34     public int getPerimeter()
    35     {
    36         int Perimeter=(length+width)*2;
    37         return Perimeter;
    38     }
    39     
    40     public int getArea()
    41     {
    42         int Area=length*width;
    43         return Area;
    44     }
    45 }
    46 class Circle
    47 {
    48     private int radius;
    49     double Pi=3.14;
    50     public Circle(int r)
    51     {
    52         radius=r;
    53     }
    54     public double getPerimeter()
    55     {
    56         double Perimeter=2*Pi*radius;
    57         return Perimeter;
    58     }
    59     public double getArea()
    60     {
    61         double Area=Pi*radius*radius;
    62         return Area;
    63     }
    64  }

     

    实验总结:理解了用户自定义类的定义,同时掌握了对象的声明对类属性及方法的使用更加熟悉,理论实验结合,不足之处有很多,编程能力很缺乏,学到了很多,会继续努力。

     

  • 相关阅读:
    差分序列
    蓝桥杯 操作格子
    线段树
    历届题目 密文搜索
    对局匹配(动态规划)
    历届试题 分巧克力(二分查找)
    第九届蓝桥杯B组决赛 调手表(完全背包)
    快速幂求余
    2019蓝桥杯国赛备赛题库
    ubuntu16.04安装cuda8.0试错锦集
  • 原文地址:https://www.cnblogs.com/zyan---/p/9704468.html
Copyright © 2011-2022 走看看