zoukankan      html  css  js  c++  java
  • 201771010130王志成《面向对象程序设计(java)》第四周学习总结

    (一)理论知识:

    了解类和对象前,简单提及面向对象程序设计。面向对象程序设计就是通过对象来进行程序设计,对象表示一个可以明确标识的实体。例如:一个人、一本书、一个学校或一台电脑等等。每个对象都有自己独特的标识、状态和行为。

    对象的状态(特征或属性,即实例变量),由该对象的数据域来表示。 例如:一个人可以具有名字、年龄、身高、体重、家庭地址等等属性,这些就是“人这个对象的数据域”。

    对象的行为(对象执行的动作,即功能),由方法来定义。例如:定义getName()来获取姓名, getHeight()获取身高,setAddress(String addr)修改地址。

    类和对象的关系

    类是一种抽象的概念集合,是最基础的组织单位,作为对象的模板、合约或蓝图。

    类是对象的类型,使用一个通用类可以定义同一类型的对象,类中定义对象的数据域是什么以及方法是做什么的。 对象是类的实例,一个类可以拥有多个实例,创建实例的过程叫做实例化。

    拥有main()方法的类称为主类,是执行程序的入口,类中没有main()方法,无法运行。

    构造方法

    构造方法在使用new操作符创建对象时被调用,作用就是用于初始化对象数据域。

     构造方法相比于普通方法比较特殊的地方: 构造方法名和所在类的类名一致;无返回值(即void也没有);只有创建对象时才会被调用。  构造方法和普通方法一样,也可以重载,根据不同的初始参数,来构造对象。

    (二)实验目的与要求

    (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 结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;

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

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

      姓名      性别 java成绩

    代码:

     1 package 王志成;
     2 import java.util.Scanner;
     3 public class Student {
     4     public static void main(String[] args) {
     5         int x=3;
     6         Employee[] message = new Employee[x];
     7         System.out.println("请输入信息:");
     8         Scanner in = new Scanner(System.in); 
     9         for(int i=0;i<message.length;i++) {
    10         message[i]=new Employee(in.next(),in.next(),in.nextInt());
    11         }
    12         System.out.println("name"+" "+"sex"+" "+" "+"javascore");
    13 
    14         for (Employee e : message)
    15         System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore());
    16         }
    17         }
    18 
    19         class Employee
    20         {
    21         private String name;
    22         private String sex;
    23         private int javascore;
    24 
    25         public Employee(String Q, String W, int E )
    26         {
    27         name = Q;
    28         sex = W;
    29         javascore =E;
    30         }
    31 
    32         public String getName()
    33         {
    34         return name;
    35         }
    36 
    37         public String getSex()
    38         {
    39         return sex;
    40         }
    41 
    42         public int getJavaScore()
    43         {
    44         return javascore;
    45         }
    46 }

    测试程序2:

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

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

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

    测试程序3:

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

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

    测试程序4:

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

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

    测试程序5:

    l 编辑、编译、调试运行程序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 practice4;
    
    import java.util.Scanner;
    
    public class Calculate {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入长方形的宽:");
            double width = sc.nextDouble();
    
            System.out.print("请输入长方形的长:");
            double height = sc.nextDouble();
            
            System.out.print("请输入圆的半径:");
            double radius = sc.nextDouble();
            sc.close();
            Rectangle rectangle = new Rectangle(width, height);
            Circle circle = new Circle(radius);
            
            System.out.print("圆的周长为:");
        
            System.out.println(circle.CalculateciGrith(radius));
            System.out.print("长方形的周长:");
            System.out.println(rectangle.CalculatereGrith(height,width));
            
            System.out.print("圆的面积:");
            System.out.println(circle.CalculateciArea(radius));
            System.out.print("长方形的面积:");
            System.out.println(rectangle.CalculatereArea(height,width));
            
            System.out.print("周长的和:");
            System.out.println(circle.CalculateciGrith(radius)+rectangle.CalculatereGrith(height, width));
            
            System.out.print("面积的和:");
            System.out.println(circle.CalculateciArea(radius)+rectangle.CalculatereArea(height, width));
        }
    }
    package practice4;
    
    public class Circle {
        double radius;
    
        public Circle() {
            //定义一个无属性圆
            super();
        }
    
        public Circle(double radius) {
            super();
            this.radius = radius;
        }
    
        public double getRadius() {
            return radius;
        }
    
        public void setRadius(double radius) {
            this.radius = radius;
        }
    
        @Override
        public String toString() {
            return "Circle [radius=" + radius + "]";
        }
        
        public double CalculateciGrith(double radius) {
            return radius*2*Math.PI;
        }
        public double CalculateciArea(double radius) {
            return radius*radius*Math.PI;
        }
    }
    package practice4;
    
    public class Rectangle {
        double width;
        double height;
        public Rectangle() {
            //定义一个无属性的长方形
            super();
        }
        public Rectangle(double width, double height) {
            super();
            this.width = width;
            this.height = height;
        }
        public double getWidth() {
            return width;
        }
        public void setWidth(double width) {
            this.width = width;
        }
        public double getHeight() {
            return height;
        }
        public void setHeight(double height) {
            this.height = height;
        }
        @Override
        public String toString() {
            return "Rectangle [width=" + width + ", height=" + height + "]";
        }
        
    
        public double CalculatereGrith(double height, double width) {
            return (height+width)*2;
        }
        public double CalculatereArea(double height, double width) {
            return height*width;
        }
    }

     实验总结:这周我通过在课堂上的学习大致掌握了面向对象程序设计的概述(简称oop),明白了类和对象的概念,学习使用了预定义类,又通过实验课了解了用户自定义类的方法,在课后的自学第四章的过程中也加深了对以上知识的理解,并在课后作业中也充分使用了以上的知识,才使得作业圆满完成,但这次作业的完成也花费了大量的时间,说明对知识的掌握还够,还需要不断看课本,查阅相关语法知识。一切的一切都只能说明学习还不到位,还需要多加练习,勤加思考,才能更好的学习和掌握java这门语言。

    
    
     
  • 相关阅读:
    lmdb简介——结合MVCC的B+树嵌入式数据库
    influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB
    时序列数据库选型
    VoltDB介绍——本质:数据保存在内存,充分利用CPU,单线程去锁,底层数据结构未知
    关于时间序列数据库的思考——(1)运用hash文件(例如:RRD,Whisper) (2)运用LSM树来备份(例如:LevelDB,RocksDB,Cassandra) (3)运用B-树排序和k/v存储(例如:BoltDB,LMDB)
    241. Different Ways to Add Parentheses——本质:DFS
    麦克风阵列技术入门(3)
    [LeetCode]Palindrome Partitioning 找出所有可能的组合回文
    Linux在简短而经常使用的命令
    数据结构c字符串操作语言版本
  • 原文地址:https://www.cnblogs.com/847118824wang/p/9692573.html
Copyright © 2011-2022 走看看