李曉菁201771010114《面向對象程序設計(Java)》第四周學習總結
一:理論知識學習部分
1.面向對象程序設計(OOP),在OOP中,不必關心對象的具體實現,只要能夠滿足用戶需求即可。
2.類:類是構造對象的模板或藍圖。由類構造對象的過程稱為創建類的實例。
3.封裝:(有時稱為數據隱藏),從形式上看,封裝不過是將數據和行為組合在一個包中,並對對象的使用者隱藏了數據的實現方式。對象中的數據稱為實例域,操縱數據的過程稱為方法。實現封裝的關鍵在於絕對不能讓類中的方法直接地訪問其他類的實例域。
4.對象:三個重要特性:
(1)對象的行為(2)對象的狀態(3)對象標識
5.識別類:首先從設計類開始,然後再往每個類中添加方法。根據程序本身的屬性定義類。
6.類之間的關系:依賴,聚合,繼承。
7.使用預定義類:理解類時,要知道方法名和參數。
8.對象與對象變量:要想使用對象,就必須首先構造對象,並指定其初始狀態,然後,對對象應用方法。
在Java中,使用構造器構造新實例,構造器是一種特殊的方法,用來構造並初始化對象。構造器的名字應該與類名相同。因此Date類的構造器名為Date.要想構造一個Date對象,需要在構造器前面加上new操作符。例如:new Date();這個表達式構造了一個新對象,這個對象被初始化為當前日期和時間。
註:對象變量不能空引用。也可以顯示的將變量對象設置為null,表面這個對象變量目前沒有引用任何對象。
9.Java類庫中的LocalDate類:標準Java類庫分別包含了兩個類:一個是用來表示時間點的Date類;另一個是用來表示日歷表示法的LocalDate類。
10.更改器方法與訪問器方法:
二:實驗部分
實驗四 類與對象的定義及使用
1、實驗目的與要求
(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:
●編輯、編譯、調試運行程序4-2(教材104頁);
● 結合程序運行結果,掌握類的定義與類對象的用法,並在程序代碼中添加類與對象知識應用的註釋;
● 嘗試在項目中編輯兩個類文件(Employee.java、 EmployeeTest.java ),編譯並運行程序。
●參考教材104頁EmployeeTest.java,設計StudentTest.java,定義Student類,包含name(姓名)、sex(性別)、javascore(java成績)三個字段,編寫程序,從鍵盤輸入學生人數,輸入學生信息,並按以下表頭輸出學生信息表:
姓名 性別 java成績
程序代碼如下:
import java.util.Scanner; public class student1 { public static void main(String[] args) { // 寫入學生的信息 int n=3; Employee[] student = new Employee[n]; System.out.println("請輸入學生信息:"); Scanner in = new Scanner(System.in); for(int i=0;i<student.length;i++) { student[i]=new Employee(in.next(),in.next(),in.nextInt()); } System.out.println("姓名"+" "+"性別"+" "+" "+"java成績"); // 輸出四個學生的信息 for (Employee e : student) System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore()); } } class Employee { private String 姓名; private String 性別; private double java成績; public Employee(String x, String y, int z) { 姓名 = x; 性別 = y; java成績 =z; } public String getName() { return 姓名; } public String getSex() { return 性別; } public double getJavaScore() { return java成績; } }
測試程序2:
● 編輯、編譯、調試運行程序4-3(教材116);
●結合程序運行結果,理解程序代碼,掌握靜態域(netxtId)與靜態方法(getNextId)的用法,在相關代碼後添加註釋;
●理解Java單元(類)測試的技巧。
測試程序3:
●編輯、編譯、調試運行程序4-4(教材121);
● 結合程序運行結果,理解程序代碼,掌握掌握Java方法參數的用法,在相關代碼後添加註釋;
測試程序4:
●編輯、編譯、調試運行程序4-5(教材129);
● 結合程序運行結果,理解程序代碼,掌握Java用戶自定義類的用法,掌握對象構造方法及對象使用方法,在相關代碼後添加註釋。
測試程序5:
● 編輯、編譯、調試運行程序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 text; import java.util.Scanner; public class text { public static void main(String[] args) { // TODO 自動生成的方法存根 // double P=3.14; Scanner in = new Scanner(System.in); System.out.println("請輸入長方形的長和寬:"); int length = in.nextInt(); 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 static final double P = 3.14; private double radius; public Circle(double y) { radius = y; } public double getPerimeter() { double Perimeter = 2 * P* radius; return Perimeter; } public double getArea() { double getArea = radius * radius * P; 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; } }
三:實驗總結:
通過此次實驗我基本掌握了文件輸入輸出程序的設計技術,學到了類的定義與類對象的用法,且學會了如何定義一個student類其中包含三個字段。
基本掌握了靜態域與靜態方法的用法,掌握Java方法參數的用法,還有Java用戶自定義類的用法,掌握對象構造方法及對象使用方法,基本學會了Java包的定義及用法。
但是,在自己編寫代碼時還是存在很大的問題,這促使我進行大量練習來達到熟練的程度。
李曉菁201771010114《面向對象程序設計(Java)》第四周學習總結