201771010118《面向對象程序設計(java)》第四周學習總結
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)》第四周學習總結