李瑞红201771010111《面向对象程序设计(java)》第四周学习总结

lrhlrh123---- lrhlrh123----     2023-01-03     587

关键词:

 

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

第一部分:理论知识学习

1.类与对象概念

 (1)类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例。

  (2)对象:即数据,对象有三个特性,行为、状态、标识。

2.类与对象的关系

(1)类是对象,事物的描述和抽象,是具有相同属性和行为的对象集合。对象则是该类事物的实例。    

 (2)类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间 中。对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。

3.对象与对象变量的关系

(1).Java中想使用对象就必须先构造对象,并指定其初始状态。

4.通过实验掌握了预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner  类、LocalDate类的常用API

5.掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求

(1)实例域:可将实例域定义为final,构建对象时必须初始化这样的域。

(2)静态域:绝大多数面向对象程序设计语言中,静态域被称为类域。如果将域定义为static,每个类中只有一个这样的域。而每个对象对于所有的实例域却都有自己的一份拷贝。

(3)静态方法:静态方法是一种不能向对象实时操作的方法。可以使用对象调用静态方法。

(4)构造器方法:构造器与类同名。构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。

(5)更改器方法:调用更改器方法后对象的状态会改变。

(6)访问器方法:只访问对象而不修改对象的方法。

(7)main方法:main方法不对任何对象进行操作。静态的main方法将执行并创建程序所需要的对象。

6.重载

  多个方法有相同的名字、不同的参数、便产生了重载。Java允许重载任何方法,而不只是构造器方法。

7.

   Java允许使用包将类组织起来。借助包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理。而且使用包可以确保类名的唯一性。

8.文档注释技术

包括类注释,方法注释,域注释,通用注释,包与概述注释等。

二.实验部分

1、实验目的与要求

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

(2) 掌握对象的声明;

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

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

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

2、实验内容和步骤

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

mport 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.Scanner;
 2 public class StudentTest
 3 
 4   @
 5 public static void main(String[] args)
 6    
 7       Student[] staff = new Student[2];
 8       System.out.println("请输入学生的信息");
 9      
10       Scanner in = new Scanner(System.in); 
11       for(int i=0;i<staff.length;i++) 
12           staff[i]=new Student(in.next(),in.next(),in.nextInt());
13       
14       System.out.println("name"+" "+"sex"+" "+"javascore");
15 
16       for (Student e : staff)
17          System.out.println(e.getName() +"    "+e.getSex()+"          "+e.getJavaScore());
18    
19 
20 
21 class Student
22 
23    private String name;
24    private String sex;
25    private int javascore;
26 
27    public Student(String n, String s, int j)
28    
29       name = n;
30       sex = s;
31       javascore =j;
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 four;
 2 import java.util.Scanner;
 3 public class 实验3 
 4 @SuppressWarnings("resource")
 5 /**
 6  * This program is the circumference and area of rectangles and circles.
 7  * time 2018 9 24
 8  * @author 李瑞红
 9  */
10 public static void main(String[] args) 
11     Scanner sc = new Scanner(System.in);
12     System.out.println("请输入矩形的x y:"); 
13     int x = sc.nextInt();
14     int y = sc.nextInt();
15     System.out.println("矩形周长 "+Perimeter.getPerimeter(x,y));
16     System.out.println("矩形面积"+Area.getArea(x,y));
17     
18     System.out.println("请输入圆的r:"); 
19     int r = sc.nextInt();
20     System.out.println("圆周长 "+Perimeter.getPerimeter(r));
21     System.out.println("圆面积"+Area.getArea(r));
22     
23     double c = Perimeter.getPerimeter(x,y)+Perimeter.getPerimeter(r);
24     double s = Area.getArea(x,y)+Area.getArea(r);
25     System.out.println("矩形与圆的周长和为:"+c);
26     System.out.println("矩形与圆的面积和为:"+s);
27 
28  
29 
30 class Perimeter
31     public static double getPerimeter(double width, double height) 
32         return 2*(width + height);
33     
34 
35     public static double getPerimeter(int r) 
36         return 2*3.14*r;
37     
38     
39 
40 class Area
41     public static double getArea(double width, double height)
42         return width * height;
43  
44 
45     public static double getArea(int r) 
46         return 3.14*r*r;
47     
48 

  

技术分享图片

 

总结:通过本次实验,我对类与对象的基础概念有了更深的了解,会使用构造函数初始化对象,并对使用类属性与方法进行了掌握, 学会了package和import语句的用途。掌握了用户自定义类的语法规则,如实例域、静态域、构造器方法、更改器方法、访问器方法、main方法、方法参数的定义要求。在本周的学习中,我深刻感受到通过阅读理解已有代码,学习其中的方法,将其转化为自己的知识,是很重要的能力。

 

李瑞红201771010111(代码片段)

实验六继承定义与使用实验时间2018-9-2第一部分:理论知识第五章1.类、超类和子类5.2Object:所有类的超类5.3泛型数组列表5.4对象包装器和自动打包5.5参数数量可变的方法5.6枚举类5.7继承设计的技巧5.1类、超类和子类5.2Object:所... 查看详情

李瑞红201771010111第十周学习总结(代码片段)

---恢复内容开始---实验十 泛型程序设计技术实验时间2018-11-1第一部分:理论知识总结1.泛型也称为参数化类型,就是在定义类、方法、接口时,通过类型参数指示将要处理的对象类型。.2.泛型程序设计:编写代码可以被很多... 查看详情

201771010111李瑞红《第十八周学习总结》(代码片段)

1、实验目的与要求(1) 综合掌握java基本程序结构;(2) 综合掌握java面向对象程序设计特点;(3) 综合掌握javaGUI 程序设计结构;(4) 综合掌握java多线程编程模型;(5)综合编程练习。2、实验内容和步骤任务1:填写... 查看详情

李瑞红201771010111第二周实验总结报告

第一部分:理论知识学习本章主要内容是java的基本程序设计结构,包括以下几个方面的知识,(1)标识符、关键字、注释的相关知识;(2)数据类型;(3)变量;(4)运算符;(5)类型转换;(6)字符串;(7)输入输出;(8))控制流程;(9)大数... 查看详情

李瑞红201771010111《第九周学习总结》(代码片段)

实验九异常、断言与日志实验时间2018-10-25第一部分:理论部分 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。&nbs... 查看详情

201771010111李瑞红《第十二周学习总结》(代码片段)

实验十二 图形程序设计实验时间2018-11-14第一部分:理论知识总结1.Java的抽象口工具箱(AbstractWindowToolkit,AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。2.AWT库处理用户界面元素的方法:把图形元素的创... 查看详情

201771010111李瑞红《第十一周学习总结》(代码片段)

  实验十一  集合实验时间2018-11-8第一部分:理论总结1.栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为(bottom)。栈的物... 查看详情

201771010111李瑞红《第十七周学习总结》(代码片段)

实验十七 线程同步控制实验时间2018-12-10一、理论部分1.Java通过多线程的并发运行提高系统资源利用率,改善系统性能。2.假设有两个或两个以上的线程共享某个对象,每个线程都调用了改变该对象类状态的方法,就会引起的... 查看详情

2017710101111李瑞红《第七周学习总结》(代码片段)

实验七继承附加实验实验时间2018-10-11第一部分:理论部分  1.继承:如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量,如果想要在子类里面做一系列事情,应该放在父类无... 查看详情

面向对象程序设计介绍以及面向对象的基本特征

  面向对象的程序设计(ObjectOrientedProgramming,OOP)方法是目前比较流行的程序设计方法,和面向过程的程序设计比,它更符合人类的自然思维方式。在面向过程程序设计中,程序=数据+算法,数据和对数据的操作是分离的,如... 查看详情

《面向对象程序设计概述》牛咏梅

面向对象程序设计概述牛咏梅(南阳理工学院河南南阳473000)摘要:分析传统程序设计方法与面向对象程序设计方法之间的差别,重点分析了面向对象程序设计方法的特点,介绍了面向对象程序设计方法的步骤及其优点。关键词:面向对... 查看详情

java面向对象大致梳理

...概述:Java设计语言面向对象:Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都... 查看详情

面向对象的程序设计

阅读目录一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类与对象四属性查找五绑定到对象的方法的特殊之处六对象之间的交互七练习八继承与派生九多态与多态性十封装十一绑定方法与非绑定方法... 查看详情

面向对象思想

...0年代,位于美国加州的Xerox研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。到80年代中后期,面向对象的软件设计和程序设计方法 查看详情

面向对象设计----软件设计师

上午12分下午两大答题30分面向对象的基本概念❤❤❤❤❤采用面向对象的软件开发,通常由面向对象分析,面向对象设计,面向对象实现1面向对象分析OOA:获取对应用问题的理解,主要任务是抽取和整理用户需求并建立问题域精确模... 查看详情

面向对象分析与设计面向对象设计包括哪些内容

一、总述面向对象分析的输入是用户的功能需求,输出是简单的、理性化的分析模型,此阶段的工作更多侧重于如何理解软件的功能需求;面向对象设计的输入是面向对象分析的结果,蔬菜水果最终的、细化后的设计模型,此阶... 查看详情

类与对象面向对象和面向过程对比面向对象三大特征:封装继承多态(代码片段)

 初识面向对象面向过程:一切以事务的发展流程为中心.面向对象:一切以对象为中心.一切皆为对象.具体的某一个事务就是对象打比方:大象进冰箱步骤:第一步,开门,第二步,装大象,第三步,关门面向对象:大象,你进冰箱.此时主语... 查看详情

面向对象思想初识

面向对象思想概述Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都具备自己的... 查看详情