201771010102常惠琢《面向对象程序设计(java)》第四周学习总结

201771010102常惠琢《面向象程序设计java)》第四周学习总结

一、  理论知识学习部分:

   主要介绍面向对象的两个基本成分中最重要的-------封装,以及Java语言实现封装的机制。即:类与方法。

1、面向对象程序设计:

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

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

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

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

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

2、使用预定义类:

(1)对象与对象变量 (2)Java类库中的LocalDate类

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)方法注释  (3)域注释

(4)通用注释  (5)包与概述注释

二、实验部分:

1、实验目的与要求

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

(2) 掌握对象的声明;

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

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

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

2、实验内容和步骤

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

1>.代码如下:

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>.程序执行如下:

 

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

测试程序1:

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

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

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

1>.代码程序执行如下:

 

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

  姓名      性别     java成绩

1>.代码如下:

import java.time.LocalDate;

import java.util.Scanner;

/**

 * This program tests the Student class.

 * time 2018 9 25

 * @author 常惠琢

 */

public class StudentTest

{

    String name;

    String sex;

    double score;

   public static void main(String[] args)

    //public static void ScannerTest(){

   {

       int i = 0;

       

        System.out.print("numer:");

        Scanner sc= new Scanner(System.in);

       int number = sc.nextInt();

       StudentTest Stu[] = new StudentTest[number];

        for (i = 0; i < Stu.length; i++) {

            Stu[i] = new StudentTest();

            System.out.print( (i + 1)+" "+"姓名:" );

            Stu[i].name = sc.next();

            System.out.print( (i + 1)+" " +"性别:");

            Stu[i].sex = sc.next();

            System.out.print( (i + 1)+" " +"java成绩:");

            Stu[i].score = sc.nextDouble();

        }

       System.out.println("\t姓名\t性别\t成绩");

        for (StudentTest StudentTest : Stu) {

            System.out.println("\t" + StudentTest.name+ "\t" + StudentTest.sex + "\t" + StudentTest.score);

        }

     }

}

2>.程序执行如下:

 

测试程序2:

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

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

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

1>.程序执行如下:

 

测试程序3:

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

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

1>.程序执行如下:

 

测试程序4:

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

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

1>.程序执行如下:

 

测试程序5:

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

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

1>.程序执行如下:

 

实验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>.代码如下:

import java.util.*;

public class First {

    public static void main(String[] args) {

                        Scanner in = new Scanner(System.in);

                     System.out.println("输入长:");

                        double  length = in.nextDouble();

                        System.out.println("输入宽:");

                        double  width = in.nextDouble();

                        System.out.println("输入半径:");

                        double  radius = in.nextDouble();

                     Rectangle a=new Rectangle(length,width);

                        Circle    b=new Circle(radius);

                        System.out.println("矩形周长:"+a.getPerimeter()+"矩形面积:"+a.getArea());

                        System.out.println("圆周长"+b.getPerimeter()+"圆面积:"+b.getArea());

                        double x = a.getPerimeter()+b.getPerimeter();

                        double  y = a.getArea()+b.getArea();

                        System.out.println("周长和:"+x+"面积和:"+y);

                    }

                 }

                 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;

                   }

               }

               

               class Circle {

               

                   private double radius;

                   double PI = 3.14;

                   public Circle(double r)

                   {

                       radius=r;

                   }

                   public double getPerimeter()

                   {

                       double Perimeter = 2*PI*radius;

                       return Perimeter;

                   }

                   public double getArea()

                   {

                       double Area = PI*radius*radius;

                       return Area;

       }

}

 

2>.程序执行如下:

 

猜你喜欢

转载自www.cnblogs.com/hongyanohongyan/p/9706612.html