苏浪浪 201771010120 第四周 Java基本程序设计总结

                   第四章   对象与类

学习目标

  1. 掌握类与对象的基础概念,理解类与对象的关系;
  2. 掌握对象与对象变量的关系;
  3. 掌握预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner类、LocalDate类的常用API;
  4. 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;(重点、难点)
  5. 掌握对象的构造方法、定义方法及使用要求;(重点)
  6. 理解重载概念及用法;
  7. 掌握包的概念及用法;
  8. 了解文档注释技术

理论知识总结

第四章主要介绍面向对象的两个基本成分中最重要的-------封装,以及Java语言实现封装的机制即:类与方法;其主要内容如下:

1、面向对象程序设计:

简称OOP是当今主流的程序设计范型;旨在在计算机程序中模拟现实世界中的概念;能够在计算机中用类似的实体模拟现实世界中的实体;踏实设计和实现软件的方法。

类:是具有相同属性和行为的一组对象的集合;是构造程序的基本单元。

每个类有一组结构化的数据和在其上的操作组成。

对象:变成的一个核心概念,未开发计算机应用程序提供技术基础;用来表现现实世界中的实体。

三大特性:(1)对象的行为,(2)对象的状态,(3)对象的标识;

识别类的简单规则:再分析问题的过程中寻找名词,而方法对应着动词

2、使用预定义类:

(1)对象与对象变量

*一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

(2)Java类库中的LocalDate类

位于Java。Time包中

3、用户自定义类

(1)Employee类

(2)隐士参数和显示参数

(3)基于类的访问权限

(4)final实力域

4、静态域与静态方法

(1)静态域

(2)静态常量

(3)静态方法

(4)工厂方法

(5)main方法

5、方法参数

6、对象构造

(1)重载

(2)默认域初始化

(3)显示域初始化

(4)参数名·

(5)初始化块

7、包

(1)类的导入

(2)静态导入

(3)包作用域

8、类路径

9、文档注释

(1)类注释

(2)方法注释

(4)域注释

(4)通用注释

(5)包与概述注释

 实验部分

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成绩

 2

import java.util.Scanner;

/**
 * This program tests the Student class.
 * time 2018 9 23
 * @author 小浪浪
 */
public class 信息
{
   public static void main(String[] args)
   {
      // fill the staff array with three Employee objects
      int x=2;
      Employee[] staff = new Employee[x];
      System.out.println("请输入学生的姓名");
     
      Scanner in = new Scanner(System.in); 
      for(int i=0;i<staff.length;i++) {
          staff[i]=new Employee(in.next(),in.next(),in.nextInt());
      }
      System.out.println("name"+" "+"sex"+" "+" "+"javascore");

      // print out information about all Employee objects
      for (Employee e : staff)
         System.out.println(e.getName() +"   "+e.getSex()+"        "+e.getJavaScore());
   }
}

class Employee
{
   private String name;
   private String sex;
   private int javascore;

   public Employee(String n, String s, int m)
   {
      name = n;
      sex = s;
      javascore =m;
   }

   public String getName()
   {
      return name;
   }

   public String getSex()
   {
      return sex;
   }

   public int getJavaScore()
   {
      return javascore;
   }

}

测试程序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)  将两个对象的周长加总输出,将两个对象的面积加总输出。

代码如下:

package 小浪浪;

import java.math.BigDecimal;
import java.util.Scanner;

class BBB {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
System.out.println("请输入长方形的长:");
int length = sc.nextInt();
System.out.println("请输入长方形的宽:");
int width = sc.nextInt();
System.out.print("请输入圆的半径: ");
float radius=sc.nextFloat();

AAA x = new AAA();

x.setLength(length);
x.setWidth(width);
x.setRadius(radius);
System.out.println("周长是:"+x.getPerimeter());
System.out.println("面积是:"+x.getArea());
System.out.println("圆的周长为-->"+x.getPerimeter(radius)+"
"+"圆的面积为-->"+x.getArea(radius));
BigDecimal bd1 = new BigDecimal(x.getPerimeter(radius));
BigDecimal bd2 = new BigDecimal(x.getArea(radius));
BigDecimal bd3 = new BigDecimal(x.getPerimeter());
BigDecimal bd4 = new BigDecimal(x.getArea());
BigDecimal bd5 = bd1.add(bd3);
BigDecimal bd6 = bd2.add(bd4);
bd5= bd5.setScale(2, BigDecimal.ROUND_HALF_UP);
bd6= bd6.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("周长和:"+bd5+"
"+"面积和"+bd6);
}
}
package 小浪浪;

import java.util.Scanner;
import java.math.BigDecimal;

class AAA{
private int length;
private int width;
float radius;

public AAA(){}

public void setLength(int length) {
this.length = length;
}

public void setWidth(int width) {
this.width = width;
}

public int getPerimeter() {
return (length + width) * 2;
}

public int getArea() {
return length * width;
}

public void setRadius(float radius) {
    BigDecimal bd = new BigDecimal(radius);
    radius = bd.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
this.radius = radius;
}

public float getPerimeter(float radius){
    BigDecimal bd = new BigDecimal(radius);
    radius = bd.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
return (float) (radius*2*3.14);
}

public float getArea(float radius){
    BigDecimal bd = new BigDecimal(radius);
    radius = bd.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
return (float) (radius*radius*3.14);
}
}

实验结果:

 本周总结:

1、通过本周的学习以及自己课后的复习掌握了类与对象的基础概念,理解了类与对象的关系;掌握对象与对象变量的关系以及预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner类、LocalDate类的常用API;也知道了用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;同时知道 了对象的构造方法、定义方法及使用要求;掌握包的概念及用法;

2、通过实验熟悉了本章所学的知识以及察觉到了自己的不足;经过反思也学到了许多东西;

+

原文地址:https://www.cnblogs.com/xiaolangoxiaolang/p/9695369.html