1. 程式人生 > >201771010118《面向對象程序設計(java)》第四周學習總結

201771010118《面向對象程序設計(java)》第四周學習總結

strong throws 自動生成 get avg cell 過程 引用 total

1、實驗目的與要求

(1) 理解用戶自定義類的定義;

(2) 掌握對象的聲明;

(3) 學會使用構造函數初始化對象;

(4) 使用類屬性與方法的使用掌握使用;

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

2.理論知識總結

a.類 類是構造對象的模板或藍圖;

b.對象 要想使用OOP,一定要清楚對象的三個特征:

①對象的行為②對象的狀態③對象標識

同一個類的所有對象實例,由於支持相同的行為而具有家族式的相似性。對象的行為是用可調用的方法定義的。

類名 對象名 = new 類名();

識別類的簡單規則是在分析問題的過程中尋找名詞,而方法對應著動詞。

2、使用預定義類:

(1)對象與對象變量

一個對象變量並沒有實際包含一個對象,而僅僅引用一個對象。

(2)Java類庫中的LocalDate類位於Java。Time包中

3.用戶自定義類;

4.靜態域與靜態方法;

5.方法參數

5.對象構造

7.包

8.類路徑

9.文檔註釋

10.類設計技巧

3.實驗內容和步驟

實驗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成績

技術分享圖片

程序代碼:

import java.util.*;

public class Student
{
    public static void main(String[] args) {
        
        System.out.println("請輸入學生個數:");
        Scanner in=new Scanner(System.in);
        int number =in.nextInt();
        StudentTest[] score=new StudentTest[number];
        for(int i=0;i<number;i++)
        {
            System.out.println("第"+(i+1)+" 個學生信息輸入"+"姓名:"); String name = in.next(); 
            System.out.print("性別:");  String sex = in.next();
            System.out.print("成績:");  int j = in.nextInt();
            score[i] =new StudentTest(name,sex,j);
        }   
        for(int j1=0;j1<number;j1++)
        {
        System.out.println("姓名:"+score[j1].getName()+"\t"+"性別:"+score[j1].getSex()+"\t"+"成績:"+score[j1].getJavascore());
        }
   }

}
class  StudentTest
{
    private String name;
    private String sex;
    private int javascore;
  public StudentTest(String n,String s,int j)
  {
      name =n;
      sex =s;
      javascore =j;
  }
  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) 將兩個對象的周長加總輸出,將兩個對象的面積加總輸出。

import java.util.*;

class Math {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        System.out.println("請輸入長方形的長:");
        int length = in.nextInt();
        System.out.println("請輸入長方形的寬:");
        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 double radius;

    public Circle(double y) {
        radius = y;
    }

    public double getPerimeter()

    {

        double Perimeter = 2 * 3.14* radius;

        return Perimeter;

    }

    public double getArea()

    {

        double getArea = radius * radius * 3.14;

        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;

    }

}

運行結果:

技術分享圖片

201771010118《面向對象程序設計(java)》第四周學習總結