李晓菁201771010114《面向对象程序设计(Java)》第四周学习总结
一:理论知识学习部分
1.面向对象程序设计(OOP),在OOP中,不必关心对象的具体实现,只要能够满足用户需求即可。
2.类:类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。
3.封装:(有时称为数据隐藏),从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域。
4.对象:三个重要特性:
(1)对象的行为(2)对象的状态(3)对象标识
5.识别类:首先从设计类开始,然后再往每个类中添加方法。根据程序本身的属性定义类。
6.类之间的关系:依赖,聚合,继承。
7.使用预定义类:理解类时,要知道方法名和参数。
8.对象与对象变量:要想使用对象,就必须首先构造对象,并指定其初始状态,然后,对对象应用方法。
在Java中,使用构造器构造新实例,构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该与类名相同。因此Date类的构造器名为Date.要想构造一个Date对象,需要在构造器前面加上new操作符。例如:new Date();这个表达式构造了一个新对象,这个对象被初始化为当前日期和时间。
注:对象变量不能空引用。也可以显示的将变量对象设置为null,表面这个对象变量目前没有引用任何对象。
9.Java类库中的LocalDate类:标准Java类库分别包含了两个类:一个是用来表示时间点的Date类;另一个是用来表示日历表示法的LocalDate类。
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:
●编辑、编译、调试运行程序4-2(教材104页);
● 结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;
● 尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。
●参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:
姓名 性别 java成绩
程序代码如下:
import java.util.Scanner; public class student1 { public static void main(String[] args) { // 写入学生的信息 int n=3; Employee[] student = new Employee[n]; System.out.println("请输入学生信息:"); Scanner in = new Scanner(System.in); for(int i=0;i<student.length;i++) { student[i]=new Employee(in.next(),in.next(),in.nextInt()); } System.out.println("姓名"+" "+"性别"+" "+" "+"java成绩"); // 输出四个学生的信息 for (Employee e : student) System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore()); } } class Employee { private String 姓名; private String 性别; private double java成绩; public Employee(String x, String y, int z) { 姓名 = x; 性别 = y; java成绩 =z; } public String getName() { return 姓名; } public String getSex() { return 性别; } public double getJavaScore() { return java成绩; } }
测试程序2:
● 编辑、编译、调试运行程序4-3(教材116);
●结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;
●理解Java单元(类)测试的技巧。
测试程序3:
●编辑、编译、调试运行程序4-4(教材121);
● 结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;
测试程序4:
●编辑、编译、调试运行程序4-5(教材129);
● 结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
测试程序5:
● 编辑、编译、调试运行程序4-6、4-7(教材135);
●结合程序运行结果,理解程序代码,掌握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 text; import java.util.Scanner; public class text { public static void main(String[] args) { // TODO 自动生成的方法存根 // double P=3.14; Scanner in = new Scanner(System.in); System.out.println("请输入长方形的长和宽:"); int length = in.nextInt(); int width = in.nextInt(); System.out.print("请输入圆的半径:"); double radius = in.nextDouble(); Rectangle x = new Rectangle(length, width); Circle y = new Circle(radius); double a = x.getPerimeter() + y.getPerimeter(); double b = x.getArea() + y.getArea(); System.out.println("圆的周长为:" + y.getPerimeter() + "圆的面积为:" + y.getArea()); System.out.println("矩形的周长是:" + x.getPerimeter() + "矩形面积为:" + x.getArea()); System.out.println("周长和:" + a + "\n" + "面积和" + b); } } class Circle { private static final double P = 3.14; private double radius; public Circle(double y) { radius = y; } public double getPerimeter() { double Perimeter = 2 * P* radius; return Perimeter; } public double getArea() { double getArea = radius * radius * P; return getArea; } } class Rectangle { private double width; private double length; public Rectangle(double w, double l) { width = w; length = l; } public double getPerimeter() { double Perimeter = (width +length) * 2; return Perimeter; } public double getArea() { double Area = width * length; return Area; } }
三:实验总结:
通过此次实验我基本掌握了文件输入输出程序的设计技术,学到了类的定义与类对象的用法,且学会了如何定义一个student类其中包含三个字段。
基本掌握了静态域与静态方法的用法,掌握Java方法参数的用法,还有Java用户自定义类的用法,掌握对象构造方法及对象使用方法,基本学会了Java包的定义及用法。
但是,在自己编写代码时还是存在很大的问题,这促使我进行大量练习来达到熟练的程度。